diff options
author | Treehugger Robot <treehugger-gerrit@google.com> | 2016-05-19 18:41:01 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2016-05-19 18:41:01 +0000 |
commit | ce294655f981e19b420f2201b7c499a435ef1ce2 (patch) | |
tree | 3d29fc6c999dbb9ab3d78cb64b336caf8a36fd65 /lib/python2.7 | |
parent | 9870834a1f61689aaff1eedda0e1ee73d7150763 (diff) | |
parent | 3d3d1bae29e9b2d88c73aecda916640ba3a5e5b8 (diff) | |
download | platform_prebuilts_python_linux-x86_2.7.5-ce294655f981e19b420f2201b7c499a435ef1ce2.tar.gz platform_prebuilts_python_linux-x86_2.7.5-ce294655f981e19b420f2201b7c499a435ef1ce2.tar.bz2 platform_prebuilts_python_linux-x86_2.7.5-ce294655f981e19b420f2201b7c499a435ef1ce2.zip |
Merge "Update prebuilt setools to 4.0.1"ndk-r13-beta2ndk-r13-beta1ndk-r13android-wear-n-preview-2android-wear-7.1.1_r1android-n-preview-5android-n-preview-4android-n-iot-preview-2nougat-mr1-wear-releasendk-r13-releasen-iot-preview-2
Diffstat (limited to 'lib/python2.7')
95 files changed, 23438 insertions, 953 deletions
diff --git a/lib/python2.7/site-packages/selinux/__init__.py b/lib/python2.7/site-packages/selinux/__init__.py index 7a14d18..7a14d18 100644..100755 --- a/lib/python2.7/site-packages/selinux/__init__.py +++ b/lib/python2.7/site-packages/selinux/__init__.py diff --git a/lib/python2.7/site-packages/sepolgen/refparser.py b/lib/python2.7/site-packages/sepolgen/refparser.py index 9b1d0c8..2cef8e8 100644 --- a/lib/python2.7/site-packages/sepolgen/refparser.py +++ b/lib/python2.7/site-packages/sepolgen/refparser.py @@ -113,6 +113,7 @@ tokens = ( 'AUDITALLOW', 'NEVERALLOW', 'PERMISSIVE', + 'TYPEBOUNDS', 'TYPE_TRANSITION', 'TYPE_CHANGE', 'TYPE_MEMBER', @@ -178,6 +179,7 @@ reserved = { 'auditallow' : 'AUDITALLOW', 'neverallow' : 'NEVERALLOW', 'permissive' : 'PERMISSIVE', + 'typebounds' : 'TYPEBOUNDS', 'type_transition' : 'TYPE_TRANSITION', 'type_change' : 'TYPE_CHANGE', 'type_member' : 'TYPE_MEMBER', @@ -502,6 +504,7 @@ def p_policy_stmt(p): '''policy_stmt : gen_require | avrule_def | typerule_def + | typebound_def | typeattribute_def | roleattribute_def | interface_call @@ -823,6 +826,13 @@ def p_typerule_def(p): t.file_name = p[7] p[0] = t +def p_typebound_def(p): + '''typebound_def : TYPEBOUNDS IDENTIFIER comma_list SEMI''' + t = refpolicy.TypeBound() + t.type = p[2] + t.tgt_types.update(p[3]) + p[0] = t + def p_bool(p): '''bool : BOOL IDENTIFIER TRUE SEMI | BOOL IDENTIFIER FALSE SEMI''' diff --git a/lib/python2.7/site-packages/sepolgen/refpolicy.py b/lib/python2.7/site-packages/sepolgen/refpolicy.py index 31b40d8..2ee029c 100644 --- a/lib/python2.7/site-packages/sepolgen/refpolicy.py +++ b/lib/python2.7/site-packages/sepolgen/refpolicy.py @@ -112,6 +112,9 @@ class Node(PolicyBase): def typerules(self): return filter(lambda x: isinstance(x, TypeRule), walktree(self)) + def typebounds(self): + return filter(lambda x: isinstance(x, TypeBound), walktree(self)) + def typeattributes(self): """Iterate over all of the TypeAttribute children of this Interface.""" return filter(lambda x: isinstance(x, TypeAttribute), walktree(self)) @@ -522,6 +525,19 @@ class TypeRule(Leaf): self.tgt_types.to_space_str(), self.obj_classes.to_space_str(), self.dest_type) +class TypeBound(Leaf): + """SElinux typebound statement. + + This class represents a typebound statement. + """ + def __init__(self, parent=None): + Leaf.__init__(self, parent) + self.type = "" + self.tgt_types = IdSet() + + def to_string(self): + return "typebounds %s %s;" % (self.type, self.tgt_types.to_comma_str()) + class RoleAllow(Leaf): def __init__(self, parent=None): diff --git a/lib/python2.7/site-packages/setools/__init__.py b/lib/python2.7/site-packages/setools/__init__.py index f6bfff8..d4a0436 100644..100755 --- a/lib/python2.7/site-packages/setools/__init__.py +++ b/lib/python2.7/site-packages/setools/__init__.py @@ -17,7 +17,9 @@ # License along with SETools. If not, see # <http://www.gnu.org/licenses/>. # -__version__ = "4.0.0-alpha3" +__version__ = "4.0.1" + +import logging # Python classes for policy representation from . import policyrep @@ -47,6 +49,7 @@ from .terulequery import TERuleQuery from .constraintquery import ConstraintQuery # Other queries +from .boundsquery import BoundsQuery from .defaultquery import DefaultQuery # In-policy Context Queries @@ -56,6 +59,11 @@ from .initsidquery import InitialSIDQuery from .netifconquery import NetifconQuery from .nodeconquery import NodeconQuery from .portconquery import PortconQuery +from .ioportconquery import IoportconQuery +from .iomemconquery import IomemconQuery +from .pirqconquery import PirqconQuery +from .pcideviceconquery import PcideviceconQuery +from .devicetreeconquery import DevicetreeconQuery # Information Flow Analysis from .infoflow import InfoFlowAnalysis @@ -66,3 +74,5 @@ from .dta import DomainTransitionAnalysis # Policy difference from .diff import PolicyDifference + +logging.getLogger(__name__).addHandler(logging.NullHandler()) diff --git a/lib/python2.7/site-packages/setools/boolquery.py b/lib/python2.7/site-packages/setools/boolquery.py index b70b7d5..2e991c2 100644..100755 --- a/lib/python2.7/site-packages/setools/boolquery.py +++ b/lib/python2.7/site-packages/setools/boolquery.py @@ -18,11 +18,12 @@ # import logging -from . import compquery from .descriptors import CriteriaDescriptor +from .mixins import MatchName +from .query import PolicyQuery -class BoolQuery(compquery.ComponentQuery): +class BoolQuery(MatchName, PolicyQuery): """Query SELinux policy Booleans. @@ -50,10 +51,14 @@ class BoolQuery(compquery.ComponentQuery): else: self._default = bool(value) + def __init__(self, policy, **kwargs): + super(BoolQuery, self).__init__(policy, **kwargs) + self.log = logging.getLogger(__name__) + def results(self): """Generator which yields all Booleans matching the criteria.""" - self.log.info("Generating results from {0.policy}".format(self)) - self.log.debug("Name: {0.name!r}, regex: {0.name_regex}".format(self)) + self.log.info("Generating Boolean results from {0.policy}".format(self)) + self._match_name_debug(self.log) self.log.debug("Default: {0.default}".format(self)) for boolean in self.policy.bools(): diff --git a/lib/python2.7/site-packages/setools/boundsquery.py b/lib/python2.7/site-packages/setools/boundsquery.py new file mode 100755 index 0000000..a1ec87d --- /dev/null +++ b/lib/python2.7/site-packages/setools/boundsquery.py @@ -0,0 +1,72 @@ +# Copyright 2016, Tresys Technology, LLC +# +# This file is part of SETools. +# +# SETools 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. +# +# SETools 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 SETools. If not, see +# <http://www.gnu.org/licenses/>. +# +import logging +import re + +from .descriptors import CriteriaDescriptor, CriteriaSetDescriptor +from .query import PolicyQuery +from .util import match_regex + + +class BoundsQuery(PolicyQuery): + + """ + Query *bounds statements. + + Parameter: + policy The policy to query. + + Keyword Parameters/Class attributes: + ruletype The rule type(s) to match. + """ + + ruletype = CriteriaSetDescriptor(lookup_function="validate_bounds_ruletype") + parent = CriteriaDescriptor("parent_regex") + parent_regex = False + child = CriteriaDescriptor("child_regex") + child_regex = False + + def __init__(self, policy, **kwargs): + super(BoundsQuery, self).__init__(policy, **kwargs) + self.log = logging.getLogger(__name__) + + def results(self): + """Generator which yields all matching *bounds statements.""" + self.log.info("Generating bounds results from {0.policy}".format(self)) + self.log.debug("Ruletypes: {0.ruletype}".format(self)) + self.log.debug("Parent: {0.parent!r}, regex: {0.parent_regex}".format(self)) + self.log.debug("Child: {0.child!r}, regex: {0.child_regex}".format(self)) + + for b in self.policy.bounds(): + if self.ruletype and b.ruletype not in self.ruletype: + continue + + if self.parent and not match_regex( + b.parent, + self.parent, + self.parent_regex): + continue + + if self.child and not match_regex( + b.child, + self.child, + self.child_regex): + continue + + yield b diff --git a/lib/python2.7/site-packages/setools/categoryquery.py b/lib/python2.7/site-packages/setools/categoryquery.py index d4d7c4c..49b2dbc 100644..100755 --- a/lib/python2.7/site-packages/setools/categoryquery.py +++ b/lib/python2.7/site-packages/setools/categoryquery.py @@ -18,11 +18,11 @@ # import logging -from . import compquery -from . import mixins +from .mixins import MatchAlias, MatchName +from .query import PolicyQuery -class CategoryQuery(mixins.MatchAlias, compquery.ComponentQuery): +class CategoryQuery(MatchAlias, MatchName, PolicyQuery): """ Query MLS Categories @@ -39,11 +39,15 @@ class CategoryQuery(mixins.MatchAlias, compquery.ComponentQuery): will be used on the alias names. """ + def __init__(self, policy, **kwargs): + super(CategoryQuery, self).__init__(policy, **kwargs) + self.log = logging.getLogger(__name__) + def results(self): """Generator which yields all matching categories.""" - self.log.info("Generating results from {0.policy}".format(self)) - self.log.debug("Name: {0.name!r}, regex: {0.name_regex}".format(self)) - self.log.debug("Alias: {0.alias}, regex: {0.alias_regex}".format(self)) + self.log.info("Generating category results from {0.policy}".format(self)) + self._match_name_debug(self.log) + self._match_alias_debug(self.log) for cat in self.policy.categories(): if not self._match_name(cat): diff --git a/lib/python2.7/site-packages/setools/commonquery.py b/lib/python2.7/site-packages/setools/commonquery.py index e105ccb..d447396 100644..100755 --- a/lib/python2.7/site-packages/setools/commonquery.py +++ b/lib/python2.7/site-packages/setools/commonquery.py @@ -19,10 +19,11 @@ import logging import re -from . import compquery, mixins +from .mixins import MatchName, MatchPermission +from .query import PolicyQuery -class CommonQuery(mixins.MatchPermission, compquery.ComponentQuery): +class CommonQuery(MatchPermission, MatchName, PolicyQuery): """ Query common permission sets. @@ -43,12 +44,15 @@ class CommonQuery(mixins.MatchPermission, compquery.ComponentQuery): on the permission names instead of set logic. """ + def __init__(self, policy, **kwargs): + super(CommonQuery, self).__init__(policy, **kwargs) + self.log = logging.getLogger(__name__) + def results(self): """Generator which yields all matching commons.""" - self.log.info("Generating results from {0.policy}".format(self)) - self.log.debug("Name: {0.name!r}, regex: {0.name_regex}".format(self)) - self.log.debug("Perms: {0.perms!r}, regex: {0.perms_regex}, eq: {0.perms_equal}". - format(self)) + self.log.info("Generating common results from {0.policy}".format(self)) + self._match_name_debug(self.log) + self._match_perms_debug(self.log) for com in self.policy.commons(): if not self._match_name(com): diff --git a/lib/python2.7/site-packages/setools/compquery.py b/lib/python2.7/site-packages/setools/compquery.py index 3d8851a..3d8851a 100644..100755 --- a/lib/python2.7/site-packages/setools/compquery.py +++ b/lib/python2.7/site-packages/setools/compquery.py diff --git a/lib/python2.7/site-packages/setools/constraintquery.py b/lib/python2.7/site-packages/setools/constraintquery.py index a7fee76..6ea4473 100644..100755 --- a/lib/python2.7/site-packages/setools/constraintquery.py +++ b/lib/python2.7/site-packages/setools/constraintquery.py @@ -19,12 +19,14 @@ import logging import re -from . import mixins, query from .descriptors import CriteriaDescriptor, CriteriaSetDescriptor +from .mixins import MatchObjClass, MatchPermission from .policyrep.exception import ConstraintUseError +from .query import PolicyQuery +from .util import match_in_set -class ConstraintQuery(mixins.MatchObjClass, mixins.MatchPermission, query.PolicyQuery): +class ConstraintQuery(MatchObjClass, MatchPermission, PolicyQuery): """ Query constraint rules, (mls)constrain/(mls)validatetrans. @@ -72,6 +74,10 @@ class ConstraintQuery(mixins.MatchObjClass, mixins.MatchPermission, query.Policy type_regex = False type_indirect = True + def __init__(self, policy, **kwargs): + super(ConstraintQuery, self).__init__(policy, **kwargs) + self.log = logging.getLogger(__name__) + def _match_expr(self, expr, criteria, indirect, regex): """ Match roles/types/users in a constraint expression, @@ -91,15 +97,14 @@ class ConstraintQuery(mixins.MatchObjClass, mixins.MatchPermission, query.Policy else: obj = expr - return self._match_in_set(obj, criteria, regex) + return match_in_set(obj, criteria, regex) def results(self): """Generator which yields all matching constraints rules.""" - self.log.info("Generating results from {0.policy}".format(self)) + self.log.info("Generating constraint results from {0.policy}".format(self)) self.log.debug("Ruletypes: {0.ruletype}".format(self)) - self.log.debug("Class: {0.tclass!r}, regex: {0.tclass_regex}".format(self)) - self.log.debug("Perms: {0.perms!r}, regex: {0.perms_regex}, eq: {0.perms_equal}". - format(self)) + self._match_object_class_debug(self.log) + self._match_perms_debug(self.log) self.log.debug("User: {0.user!r}, regex: {0.user_regex}".format(self)) self.log.debug("Role: {0.role!r}, regex: {0.role_regex}".format(self)) self.log.debug("Type: {0.type_!r}, regex: {0.type_regex}".format(self)) diff --git a/lib/python2.7/site-packages/setools/contextquery.py b/lib/python2.7/site-packages/setools/contextquery.py index 5ce1632..5ce1632 100644..100755 --- a/lib/python2.7/site-packages/setools/contextquery.py +++ b/lib/python2.7/site-packages/setools/contextquery.py diff --git a/lib/python2.7/site-packages/setools/defaultquery.py b/lib/python2.7/site-packages/setools/defaultquery.py index dac93bc..7565415 100644..100755 --- a/lib/python2.7/site-packages/setools/defaultquery.py +++ b/lib/python2.7/site-packages/setools/defaultquery.py @@ -46,10 +46,17 @@ class DefaultQuery(MatchObjClass, PolicyQuery): default = CriteriaDescriptor(lookup_function="validate_default_value") default_range = CriteriaDescriptor(lookup_function="validate_default_range") + def __init__(self, policy, **kwargs): + super(DefaultQuery, self).__init__(policy, **kwargs) + self.log = logging.getLogger(__name__) + def results(self): """Generator which yields all matching default_* statements.""" - self.log.info("Generating results from {0.policy}".format(self)) + self.log.info("Generating default_* results from {0.policy}".format(self)) self.log.debug("Ruletypes: {0.ruletype}".format(self)) + self._match_object_class_debug(self.log) + self.log.debug("Default: {0.default}".format(self)) + self.log.debug("Range: {0.default_range}".format(self)) for d in self.policy.defaults(): if self.ruletype and d.ruletype not in self.ruletype: diff --git a/lib/python2.7/site-packages/setools/descriptors.py b/lib/python2.7/site-packages/setools/descriptors.py index c4bb73c..c4eb81c 100644..100755 --- a/lib/python2.7/site-packages/setools/descriptors.py +++ b/lib/python2.7/site-packages/setools/descriptors.py @@ -190,3 +190,38 @@ class EdgeAttrList(NetworkXGraphEdgeDescriptor): # in Python3 a .clear() function was added for lists # keep this implementation for Python 2 compat del obj.G[obj.source][obj.target][self.name][:] + + +# +# Permission map descriptors +# +class PermissionMapDescriptor(object): + + """ + Descriptor for Permission Map mappings. + + Parameter: + name The map setting name. + validator A callable for validating the setting. + + Instance class attribute use (obj parameter): + perm_map The full permission map. + class_ The mapping's object class + perm The mapping's permission + """ + + def __init__(self, propname, validator): + self.name = propname + self.validator = validator + + def __get__(self, obj, objtype=None): + if obj is None: + return self + + return obj.perm_map[obj.class_][obj.perm][self.name] + + def __set__(self, obj, value): + obj.perm_map[obj.class_][obj.perm][self.name] = self.validator(value) + + def __delete__(self, obj): + raise AttributeError diff --git a/lib/python2.7/site-packages/setools/devicetreeconquery.py b/lib/python2.7/site-packages/setools/devicetreeconquery.py new file mode 100644 index 0000000..8cf4f3a --- /dev/null +++ b/lib/python2.7/site-packages/setools/devicetreeconquery.py @@ -0,0 +1,79 @@ +# Derived from portconquery.py +# +# This file is part of SETools. +# +# SETools 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. +# +# SETools 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 SETools. If not, see +# <http://www.gnu.org/licenses/>. +# +import logging + +from .mixins import MatchContext +from .query import PolicyQuery + + +class DevicetreeconQuery(MatchContext, PolicyQuery): + + """ + Devicetreecon context query. + + Parameter: + policy The policy to query. + + Keyword Parameters/Class attributes: + path A single devicetree path. + + user The criteria to match the context's user. + user_regex If true, regular expression matching + will be used on the user. + + role The criteria to match the context's role. + role_regex If true, regular expression matching + will be used on the role. + + type_ The criteria to match the context's type. + type_regex If true, regular expression matching + will be used on the type. + + range_ The criteria to match the context's range. + range_subset If true, the criteria will match if it is a subset + of the context's range. + range_overlap If true, the criteria will match if it overlaps + any of the context's range. + range_superset If true, the criteria will match if it is a superset + of the context's range. + range_proper If true, use proper superset/subset operations. + No effect if not using set operations. + """ + + path = None + + def __init__(self, policy, **kwargs): + super(DevicetreeconQuery, self).__init__(policy, **kwargs) + self.log = logging.getLogger(__name__) + + def results(self): + """Generator which yields all matching devicetreecons.""" + self.log.info("Generating results from {0.policy}".format(self)) + self.log.debug("Path: {0.path!r}".format(self)) + self._match_context_debug(self.log) + + for devicetreecon in self.policy.devicetreecons(): + + if self.path and self.path != devicetreecon.path: + continue + + if not self._match_context(devicetreecon.context): + continue + + yield devicetreecon diff --git a/lib/python2.7/site-packages/setools/diff/__init__.py b/lib/python2.7/site-packages/setools/diff/__init__.py index 8d5900a..612574c 100644..100755 --- a/lib/python2.7/site-packages/setools/diff/__init__.py +++ b/lib/python2.7/site-packages/setools/diff/__init__.py @@ -17,7 +17,9 @@ # <http://www.gnu.org/licenses/>. # from .bool import BooleansDifference +from .bounds import BoundsDifference from .commons import CommonDifference +from .constraints import ConstraintsDifference from .default import DefaultsDifference from .fsuse import FSUsesDifference from .genfscon import GenfsconsDifference @@ -41,8 +43,10 @@ __all__ = ['PolicyDifference'] class PolicyDifference(BooleansDifference, + BoundsDifference, CategoriesDifference, CommonDifference, + ConstraintsDifference, DefaultsDifference, FSUsesDifference, GenfsconsDifference, diff --git a/lib/python2.7/site-packages/setools/diff/bool.py b/lib/python2.7/site-packages/setools/diff/bool.py index 212a715..212a715 100644..100755 --- a/lib/python2.7/site-packages/setools/diff/bool.py +++ b/lib/python2.7/site-packages/setools/diff/bool.py diff --git a/lib/python2.7/site-packages/setools/diff/bounds.py b/lib/python2.7/site-packages/setools/diff/bounds.py new file mode 100755 index 0000000..e23c91f --- /dev/null +++ b/lib/python2.7/site-packages/setools/diff/bounds.py @@ -0,0 +1,112 @@ +# Copyright 2016, Tresys Technology, LLC +# +# This file is part of SETools. +# +# SETools 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. +# +# SETools 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 SETools. If not, see +# <http://www.gnu.org/licenses/>. +# +from collections import namedtuple + +from .descriptors import DiffResultDescriptor +from .difference import Difference, SymbolWrapper, Wrapper + + +modified_bounds_record = namedtuple("modified_bound", ["rule", "added_bound", "removed_bound"]) + + +class BoundsDifference(Difference): + + """Determine the difference in *bounds between two policies.""" + + added_typebounds = DiffResultDescriptor("diff_typebounds") + removed_typebounds = DiffResultDescriptor("diff_typebounds") + modified_typebounds = DiffResultDescriptor("diff_typebounds") + + # Lists of rules for each policy + _left_typebounds = None + _right_typebounds = None + + def diff_typebounds(self): + """Generate the difference in typebound rules between the policies.""" + + self.log.info("Generating typebounds differences from {0.left_policy} to {0.right_policy}". + format(self)) + + if self._left_typebounds is None or self._right_typebounds is None: + self._create_typebound_lists() + + self.added_typebounds, self.removed_typebounds, matched_typebounds = self._set_diff( + (BoundsWrapper(c) for c in self._left_typebounds), + (BoundsWrapper(c) for c in self._right_typebounds), + key=lambda b: str(b.child)) + + self.modified_typebounds = [] + + for left_bound, right_bound in matched_typebounds: + if SymbolWrapper(left_bound.parent) != SymbolWrapper(right_bound.parent): + self.modified_typebounds.append(modified_bounds_record( + left_bound, right_bound.parent, left_bound.parent)) + + # + # Internal functions + # + def _create_typebound_lists(self): + """Create rule lists for both policies.""" + self._left_typebounds = [] + for rule in self.left_policy.bounds(): + if rule.ruletype == "typebounds": + self._left_typebounds.append(rule) + else: + self.log.error("Unknown rule type: {0} (This is an SETools bug)". + format(rule.ruletype)) + + self._right_typebounds = [] + for rule in self.right_policy.bounds(): + if rule.ruletype == "typebounds": + self._right_typebounds.append(rule) + else: + self.log.error("Unknown rule type: {0} (This is an SETools bug)". + format(rule.ruletype)) + + def _reset_diff(self): + """Reset diff results on policy changes.""" + self.log.debug("Resetting all *bounds differences") + self.added_typebounds = None + self.removed_typebounds = None + + # Sets of rules for each policy + self._left_typebounds = None + self._right_typebounds = None + + +class BoundsWrapper(Wrapper): + + """Wrap *bounds for diff purposes.""" + + def __init__(self, rule): + self.origin = rule + self.ruletype = rule.ruletype + self.parent = SymbolWrapper(rule.parent) + self.child = SymbolWrapper(rule.child) + self.key = hash(rule) + + def __hash__(self): + return self.key + + def __lt__(self, other): + return self.key < other.key + + def __eq__(self, other): + return self.ruletype == other.ruletype and \ + self.child == other.child diff --git a/lib/python2.7/site-packages/setools/diff/commons.py b/lib/python2.7/site-packages/setools/diff/commons.py index 41c13f8..41c13f8 100644..100755 --- a/lib/python2.7/site-packages/setools/diff/commons.py +++ b/lib/python2.7/site-packages/setools/diff/commons.py diff --git a/lib/python2.7/site-packages/setools/diff/conditional.py b/lib/python2.7/site-packages/setools/diff/conditional.py index 95a620e..95a620e 100644..100755 --- a/lib/python2.7/site-packages/setools/diff/conditional.py +++ b/lib/python2.7/site-packages/setools/diff/conditional.py diff --git a/lib/python2.7/site-packages/setools/diff/constraints.py b/lib/python2.7/site-packages/setools/diff/constraints.py new file mode 100755 index 0000000..d2e50f4 --- /dev/null +++ b/lib/python2.7/site-packages/setools/diff/constraints.py @@ -0,0 +1,220 @@ +# Copyright 2016, Tresys Technology, LLC +# +# This file is part of SETools. +# +# SETools 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. +# +# SETools 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 SETools. If not, see +# <http://www.gnu.org/licenses/>. +# +from collections import namedtuple + +from .descriptors import DiffResultDescriptor +from .difference import Difference, SymbolWrapper, Wrapper + + +class ConstraintsDifference(Difference): + + """ + Determine the difference in constraints between two policies. + + Since the compiler does not union constraints, there may be multiple + constraints with the same ruletype, object class, and permission + set, so constraints can only be added or removed, not modified. + + The constraint expressions are compared only on a basic level. + Expressions that are logically equivalent but are structurally + different, for example, by associativity, will be considered + different. Type and role attributes are also not expanded, + so if there are changes to attribute members, it will not + be reflected as a difference. + """ + + added_constrains = DiffResultDescriptor("diff_constrains") + removed_constrains = DiffResultDescriptor("diff_constrains") + + added_mlsconstrains = DiffResultDescriptor("diff_mlsconstrains") + removed_mlsconstrains = DiffResultDescriptor("diff_mlsconstrains") + + added_validatetrans = DiffResultDescriptor("diff_validatetrans") + removed_validatetrans = DiffResultDescriptor("diff_validatetrans") + + added_mlsvalidatetrans = DiffResultDescriptor("diff_mlsvalidatetrans") + removed_mlsvalidatetrans = DiffResultDescriptor("diff_mlsvalidatetrans") + + # Lists of rules for each policy + _left_constrains = None + _right_constrains = None + + _left_mlsconstrains = None + _right_mlsconstrains = None + + _left_validatetrans = None + _right_validatetrans = None + + _left_mlsvalidatetrans = None + _right_mlsvalidatetrans = None + + def diff_constrains(self): + """Generate the difference in constraint rules between the policies.""" + + self.log.info("Generating constraint differences from {0.left_policy} to {0.right_policy}". + format(self)) + + if self._left_constrains is None or self._right_constrains is None: + self._create_constrain_lists() + + self.added_constrains, self.removed_constrains, _ = self._set_diff( + (ConstraintWrapper(c) for c in self._left_constrains), + (ConstraintWrapper(c) for c in self._right_constrains)) + + def diff_mlsconstrains(self): + """Generate the difference in MLS constraint rules between the policies.""" + + self.log.info( + "Generating MLS constraint differences from {0.left_policy} to {0.right_policy}". + format(self)) + + if self._left_mlsconstrains is None or self._right_mlsconstrains is None: + self._create_constrain_lists() + + self.added_mlsconstrains, self.removed_mlsconstrains, _ = self._set_diff( + (ConstraintWrapper(c) for c in self._left_mlsconstrains), + (ConstraintWrapper(c) for c in self._right_mlsconstrains)) + + def diff_validatetrans(self): + """Generate the difference in validatetrans rules between the policies.""" + + self.log.info( + "Generating validatetrans differences from {0.left_policy} to {0.right_policy}". + format(self)) + + if self._left_validatetrans is None or self._right_validatetrans is None: + self._create_constrain_lists() + + self.added_validatetrans, self.removed_validatetrans, _ = self._set_diff( + (ConstraintWrapper(c) for c in self._left_validatetrans), + (ConstraintWrapper(c) for c in self._right_validatetrans)) + + def diff_mlsvalidatetrans(self): + """Generate the difference in MLS validatetrans rules between the policies.""" + + self.log.info( + "Generating mlsvalidatetrans differences from {0.left_policy} to {0.right_policy}". + format(self)) + + if self._left_mlsvalidatetrans is None or self._right_mlsvalidatetrans is None: + self._create_constrain_lists() + + self.added_mlsvalidatetrans, self.removed_mlsvalidatetrans, _ = self._set_diff( + (ConstraintWrapper(c) for c in self._left_mlsvalidatetrans), + (ConstraintWrapper(c) for c in self._right_mlsvalidatetrans)) + + # + # Internal functions + # + def _create_constrain_lists(self): + """Create rule lists for both policies.""" + self._left_constrains = [] + self._left_mlsconstrains = [] + self._left_validatetrans = [] + self._left_mlsvalidatetrans = [] + for rule in self.left_policy.constraints(): + if rule.ruletype == "constrain": + self._left_constrains.append(rule) + elif rule.ruletype == "mlsconstrain": + self._left_mlsconstrains.append(rule) + elif rule.ruletype == "validatetrans": + self._left_validatetrans.append(rule) + elif rule.ruletype == "mlsvalidatetrans": + self._left_mlsvalidatetrans.append(rule) + else: + self.log.error("Unknown rule type: {0} (This is an SETools bug)". + format(rule.ruletype)) + + self._right_constrains = [] + self._right_mlsconstrains = [] + self._right_validatetrans = [] + self._right_mlsvalidatetrans = [] + for rule in self.right_policy.constraints(): + if rule.ruletype == "constrain": + self._right_constrains.append(rule) + elif rule.ruletype == "mlsconstrain": + self._right_mlsconstrains.append(rule) + elif rule.ruletype == "validatetrans": + self._right_validatetrans.append(rule) + elif rule.ruletype == "mlsvalidatetrans": + self._right_mlsvalidatetrans.append(rule) + else: + self.log.error("Unknown rule type: {0} (This is an SETools bug)". + format(rule.ruletype)) + + def _reset_diff(self): + """Reset diff results on policy changes.""" + self.log.debug("Resetting all constraints differences") + self.added_constrains = None + self.removed_constrains = None + self.added_mlsconstrains = None + self.removed_mlsconstrains = None + self.added_validatetrans = None + self.removed_validatetrans = None + self.added_mlsvalidatetrans = None + self.removed_mlsvalidatetrans = None + + # Sets of rules for each policy + self._left_constrains = None + self._left_mlsconstrains = None + self._left_validatetrans = None + self._left_mlsvalidatetrans = None + self._right_constrains = None + self._right_mlsconstrains = None + self._right_validatetrans = None + self._right_mlsvalidatetrans = None + + +class ConstraintWrapper(Wrapper): + + """Wrap constraints for diff purposes.""" + + def __init__(self, rule): + self.origin = rule + self.ruletype = rule.ruletype + self.tclass = SymbolWrapper(rule.tclass) + + try: + self.perms = rule.perms + except AttributeError: + # (mls)validatetrans + self.perms = None + + self.key = hash(rule) + + self.expr = [] + for op in rule.postfix_expression(): + if isinstance(op, frozenset): + # lists of types/users/roles + self.expr.append(frozenset(SymbolWrapper(item) for item in op)) + else: + # strings in the expression such as u1/r1/t1 or "==" + self.expr.append(op) + + def __hash__(self): + return self.key + + def __lt__(self, other): + return self.key < other.key + + def __eq__(self, other): + return self.ruletype == other.ruletype and \ + self.tclass == other.tclass and \ + self.perms == other.perms and \ + self.expr == other.expr diff --git a/lib/python2.7/site-packages/setools/diff/context.py b/lib/python2.7/site-packages/setools/diff/context.py index 4124aff..4124aff 100644..100755 --- a/lib/python2.7/site-packages/setools/diff/context.py +++ b/lib/python2.7/site-packages/setools/diff/context.py diff --git a/lib/python2.7/site-packages/setools/diff/default.py b/lib/python2.7/site-packages/setools/diff/default.py index ce7c569..ce7c569 100644..100755 --- a/lib/python2.7/site-packages/setools/diff/default.py +++ b/lib/python2.7/site-packages/setools/diff/default.py diff --git a/lib/python2.7/site-packages/setools/diff/descriptors.py b/lib/python2.7/site-packages/setools/diff/descriptors.py index 2295d74..2295d74 100644..100755 --- a/lib/python2.7/site-packages/setools/diff/descriptors.py +++ b/lib/python2.7/site-packages/setools/diff/descriptors.py diff --git a/lib/python2.7/site-packages/setools/diff/difference.py b/lib/python2.7/site-packages/setools/diff/difference.py index 189c67d..f3cde8a 100644..100755 --- a/lib/python2.7/site-packages/setools/diff/difference.py +++ b/lib/python2.7/site-packages/setools/diff/difference.py @@ -27,7 +27,7 @@ class Difference(object): """Base class for all policy differences.""" def __init__(self, left_policy, right_policy): - self.log = logging.getLogger(self.__class__.__name__) + self.log = logging.getLogger(__name__) self.left_policy = left_policy self.right_policy = right_policy @@ -72,7 +72,7 @@ class Difference(object): yield Wrapper(expanded_rule) @staticmethod - def _set_diff(left, right): + def _set_diff(left, right, key=None): """ Standard diff of two sets. @@ -108,8 +108,8 @@ class Difference(object): # instead of giving wrong results. If there is a better way to, # ensure the items match up, please let me know how or submit a patch. matched_items = set() - left_matched_items = sorted((left_items - removed_items)) - right_matched_items = sorted((right_items - added_items)) + left_matched_items = sorted((left_items - removed_items), key=key) + right_matched_items = sorted((right_items - added_items), key=key) assert len(left_matched_items) == len(right_matched_items), \ "Matched items assertion failure (this is an SETools bug), {0} != {1}". \ format(len(left_matched_items), len(right_matched_items)) diff --git a/lib/python2.7/site-packages/setools/diff/fsuse.py b/lib/python2.7/site-packages/setools/diff/fsuse.py index 3a0c0e1..3a0c0e1 100644..100755 --- a/lib/python2.7/site-packages/setools/diff/fsuse.py +++ b/lib/python2.7/site-packages/setools/diff/fsuse.py diff --git a/lib/python2.7/site-packages/setools/diff/genfscon.py b/lib/python2.7/site-packages/setools/diff/genfscon.py index 24f0a7d..24f0a7d 100644..100755 --- a/lib/python2.7/site-packages/setools/diff/genfscon.py +++ b/lib/python2.7/site-packages/setools/diff/genfscon.py diff --git a/lib/python2.7/site-packages/setools/diff/initsid.py b/lib/python2.7/site-packages/setools/diff/initsid.py index 33098ad..33098ad 100644..100755 --- a/lib/python2.7/site-packages/setools/diff/initsid.py +++ b/lib/python2.7/site-packages/setools/diff/initsid.py diff --git a/lib/python2.7/site-packages/setools/diff/mls.py b/lib/python2.7/site-packages/setools/diff/mls.py index efd758f..efd758f 100644..100755 --- a/lib/python2.7/site-packages/setools/diff/mls.py +++ b/lib/python2.7/site-packages/setools/diff/mls.py diff --git a/lib/python2.7/site-packages/setools/diff/mlsrules.py b/lib/python2.7/site-packages/setools/diff/mlsrules.py index 75f443e..80f99b2 100644..100755 --- a/lib/python2.7/site-packages/setools/diff/mlsrules.py +++ b/lib/python2.7/site-packages/setools/diff/mlsrules.py @@ -16,7 +16,7 @@ # License along with SETools. If not, see # <http://www.gnu.org/licenses/>. # -from collections import namedtuple +from collections import defaultdict, namedtuple from .descriptors import DiffResultDescriptor from .difference import Difference, SymbolWrapper, Wrapper @@ -37,8 +37,8 @@ class MLSRulesDifference(Difference): modified_range_transitions = DiffResultDescriptor("diff_range_transitions") # Lists of rules for each policy - _left_range_transitions = None - _right_range_transitions = None + _left_mls_rules = defaultdict(list) + _right_mls_rules = defaultdict(list) def diff_range_transitions(self): """Generate the difference in range_transition rules between the policies.""" @@ -47,43 +47,12 @@ class MLSRulesDifference(Difference): "Generating range_transition differences from {0.left_policy} to {0.right_policy}". format(self)) - if self._left_range_transitions is None or self._right_range_transitions is None: + if not self._left_mls_rules or not self._right_mls_rules: self._create_mls_rule_lists() - self.added_range_transitions, \ - self.removed_range_transitions, \ - self.modified_range_transitions = self._diff_mls_rules( - self._expand_generator(self._left_range_transitions, MLSRuleWrapper), - self._expand_generator(self._right_range_transitions, MLSRuleWrapper)) - - # - # Internal functions - # - def _create_mls_rule_lists(self): - """Create rule lists for both policies.""" - self._left_range_transitions = [] - for rule in self.left_policy.mlsrules(): - # do not expand yet, to keep memory - # use down as long as possible - if rule.ruletype == "range_transition": - self._left_range_transitions.append(rule) - else: - self.log.error("Unknown rule type: {0} (This is an SETools bug)". - format(rule.ruletype)) - - self._right_range_transitions = [] - for rule in self.right_policy.mlsrules(): - # do not expand yet, to keep memory - # use down as long as possible - if rule.ruletype == "range_transition": - self._right_range_transitions.append(rule) - else: - self.log.error("Unknown rule type: {0} (This is an SETools bug)". - format(rule.ruletype)) - - def _diff_mls_rules(self, left_list, right_list): - """Common method for comparing type_* rules.""" - added, removed, matched = self._set_diff(left_list, right_list) + added, removed, matched = self._set_diff( + self._expand_generator(self._left_mls_rules["range_transition"], MLSRuleWrapper), + self._expand_generator(self._right_mls_rules["range_transition"], MLSRuleWrapper)) modified = [] @@ -95,7 +64,26 @@ class MLSRulesDifference(Difference): right_rule.default, left_rule.default)) - return added, removed, modified + self.added_range_transitions = added + self.removed_range_transitions = removed + self.modified_range_transitions = modified + + # + # Internal functions + # + def _create_mls_rule_lists(self): + """Create rule lists for both policies.""" + # do not expand yet, to keep memory + # use down as long as possible + self.log.debug("Building MLS rule lists from {0.left_policy}".format(self)) + for rule in self.left_policy.mlsrules(): + self._left_mls_rules[rule.ruletype].append(rule) + + self.log.debug("Building MLS rule lists from {0.right_policy}".format(self)) + for rule in self.right_policy.mlsrules(): + self._right_mls_rules[rule.ruletype].append(rule) + + self.log.debug("Completed building MLS rule lists.") def _reset_diff(self): """Reset diff results on policy changes.""" @@ -105,8 +93,8 @@ class MLSRulesDifference(Difference): self.modified_range_transitions = None # Sets of rules for each policy - self._left_range_transitions = None - self._right_range_transitions = None + self._left_mls_rules.clear() + self._right_mls_rules.clear() class MLSRuleWrapper(Wrapper): diff --git a/lib/python2.7/site-packages/setools/diff/netifcon.py b/lib/python2.7/site-packages/setools/diff/netifcon.py index 8a2b9e3..8a2b9e3 100644..100755 --- a/lib/python2.7/site-packages/setools/diff/netifcon.py +++ b/lib/python2.7/site-packages/setools/diff/netifcon.py diff --git a/lib/python2.7/site-packages/setools/diff/nodecon.py b/lib/python2.7/site-packages/setools/diff/nodecon.py index 6e94c9e..6e94c9e 100644..100755 --- a/lib/python2.7/site-packages/setools/diff/nodecon.py +++ b/lib/python2.7/site-packages/setools/diff/nodecon.py diff --git a/lib/python2.7/site-packages/setools/diff/objclass.py b/lib/python2.7/site-packages/setools/diff/objclass.py index 6a12de4..6a12de4 100644..100755 --- a/lib/python2.7/site-packages/setools/diff/objclass.py +++ b/lib/python2.7/site-packages/setools/diff/objclass.py diff --git a/lib/python2.7/site-packages/setools/diff/polcap.py b/lib/python2.7/site-packages/setools/diff/polcap.py index 9c0afe2..9c0afe2 100644..100755 --- a/lib/python2.7/site-packages/setools/diff/polcap.py +++ b/lib/python2.7/site-packages/setools/diff/polcap.py diff --git a/lib/python2.7/site-packages/setools/diff/portcon.py b/lib/python2.7/site-packages/setools/diff/portcon.py index 17df377..17df377 100644..100755 --- a/lib/python2.7/site-packages/setools/diff/portcon.py +++ b/lib/python2.7/site-packages/setools/diff/portcon.py diff --git a/lib/python2.7/site-packages/setools/diff/properties.py b/lib/python2.7/site-packages/setools/diff/properties.py index 8cd4c13..8cd4c13 100644..100755 --- a/lib/python2.7/site-packages/setools/diff/properties.py +++ b/lib/python2.7/site-packages/setools/diff/properties.py diff --git a/lib/python2.7/site-packages/setools/diff/rbacrules.py b/lib/python2.7/site-packages/setools/diff/rbacrules.py index 8a51b88..81be013 100644..100755 --- a/lib/python2.7/site-packages/setools/diff/rbacrules.py +++ b/lib/python2.7/site-packages/setools/diff/rbacrules.py @@ -16,7 +16,7 @@ # License along with SETools. If not, see # <http://www.gnu.org/licenses/>. # -from collections import namedtuple +from collections import defaultdict, namedtuple from .descriptors import DiffResultDescriptor from .difference import Difference, SymbolWrapper, Wrapper @@ -40,11 +40,8 @@ class RBACRulesDifference(Difference): modified_role_transitions = DiffResultDescriptor("diff_role_transitions") # Lists of rules for each policy - _left_role_allows = None - _right_role_allows = None - - _left_role_transitions = None - _right_role_transitions = None + _left_rbac_rules = defaultdict(list) + _right_rbac_rules = defaultdict(list) def diff_role_allows(self): """Generate the difference in role allow rules between the policies.""" @@ -53,12 +50,12 @@ class RBACRulesDifference(Difference): "Generating role allow differences from {0.left_policy} to {0.right_policy}". format(self)) - if self._left_role_allows is None or self._right_role_allows is None: + if not self._left_rbac_rules or not self._right_rbac_rules: self._create_rbac_rule_lists() - self.added_role_allows, self.removed_role_allows, _ = \ - self._set_diff(self._expand_generator(self._left_role_allows, RoleAllowWrapper), - self._expand_generator(self._right_role_allows, RoleAllowWrapper)) + self.added_role_allows, self.removed_role_allows, _ = self._set_diff( + self._expand_generator(self._left_rbac_rules["allow"], RoleAllowWrapper), + self._expand_generator(self._right_rbac_rules["allow"], RoleAllowWrapper)) def diff_role_transitions(self): """Generate the difference in role_transition rules between the policies.""" @@ -67,52 +64,15 @@ class RBACRulesDifference(Difference): "Generating role_transition differences from {0.left_policy} to {0.right_policy}". format(self)) - if self._left_role_transitions is None or self._right_role_transitions is None: + if not self._left_rbac_rules or not self._right_rbac_rules: self._create_rbac_rule_lists() - self.added_role_transitions, \ - self.removed_role_transitions, \ - self.modified_role_transitions = self._diff_rbac_rules( - self._expand_generator(self._left_role_transitions, RoleTransitionWrapper), - self._expand_generator(self._right_role_transitions, RoleTransitionWrapper)) - - # - # Internal functions - # - def _create_rbac_rule_lists(self): - """Create rule lists for both policies.""" - self._left_role_allows = [] - self._left_role_transitions = [] - for rule in self.left_policy.rbacrules(): - # do not expand yet, to keep memory - # use down as long as possible - if rule.ruletype == "allow": - self._left_role_allows.append(rule) - elif rule.ruletype == "role_transition": - self._left_role_transitions.append(rule) - else: - self.log.error("Unknown rule type: {0} (This is an SETools bug)". - format(rule.ruletype)) - - self._right_role_allows = [] - self._right_role_transitions = [] - for rule in self.right_policy.rbacrules(): - # do not expand yet, to keep memory - # use down as long as possible - if rule.ruletype == "allow": - self._right_role_allows.append(rule) - elif rule.ruletype == "role_transition": - self._right_role_transitions.append(rule) - else: - self.log.error("Unknown rule type: {0} (This is an SETools bug)". - format(rule.ruletype)) - - def _diff_rbac_rules(self, left_list, right_list): - """Common method for comparing rbac rules.""" - added, removed, matched = self._set_diff(left_list, right_list) + added, removed, matched = self._set_diff( + self._expand_generator(self._left_rbac_rules["role_transition"], RoleTransitionWrapper), + self._expand_generator(self._right_rbac_rules["role_transition"], + RoleTransitionWrapper)) modified = [] - for left_rule, right_rule in matched: # Criteria for modified rules # 1. change to default role @@ -121,7 +81,26 @@ class RBACRulesDifference(Difference): right_rule.default, left_rule.default)) - return added, removed, modified + self.added_role_transitions = added + self.removed_role_transitions = removed + self.modified_role_transitions = modified + + # + # Internal functions + # + def _create_rbac_rule_lists(self): + """Create rule lists for both policies.""" + # do not expand yet, to keep memory + # use down as long as possible + self.log.debug("Building RBAC rule lists from {0.left_policy}".format(self)) + for rule in self.left_policy.rbacrules(): + self._left_rbac_rules[rule.ruletype].append(rule) + + self.log.debug("Building RBAC rule lists from {0.right_policy}".format(self)) + for rule in self.right_policy.rbacrules(): + self._right_rbac_rules[rule.ruletype].append(rule) + + self.log.debug("Completed building RBAC rule lists.") def _reset_diff(self): """Reset diff results on policy changes.""" @@ -134,10 +113,8 @@ class RBACRulesDifference(Difference): self.modified_role_transitions = None # Sets of rules for each policy - self._left_role_allows = None - self._right_role_allows = None - self._left_role_transitions = None - self._right_role_transitions = None + self._left_rbac_rules.clear() + self._right_rbac_rules.clear() class RoleAllowWrapper(Wrapper): diff --git a/lib/python2.7/site-packages/setools/diff/roles.py b/lib/python2.7/site-packages/setools/diff/roles.py index 38ca84e..38ca84e 100644..100755 --- a/lib/python2.7/site-packages/setools/diff/roles.py +++ b/lib/python2.7/site-packages/setools/diff/roles.py diff --git a/lib/python2.7/site-packages/setools/diff/terules.py b/lib/python2.7/site-packages/setools/diff/terules.py index 179e5ec..437bc06 100644..100755 --- a/lib/python2.7/site-packages/setools/diff/terules.py +++ b/lib/python2.7/site-packages/setools/diff/terules.py @@ -16,8 +16,9 @@ # License along with SETools. If not, see # <http://www.gnu.org/licenses/>. # -from collections import namedtuple +from collections import defaultdict, namedtuple +from ..policyrep import ioctlSet from ..policyrep.exception import RuleNotConditional, RuleUseError, TERuleNoFilename from .conditional import ConditionalExprWrapper @@ -33,272 +34,219 @@ modified_avrule_record = namedtuple("modified_avrule", ["rule", modified_terule_record = namedtuple("modified_terule", ["rule", "added_default", "removed_default"]) -class TERulesDifference(Difference): +def av_diff_template(ruletype): """ - Determine the difference in type enforcement rules - between two policies. - """ + This is a template for the access vector diff functions. - added_allows = DiffResultDescriptor("diff_allows") - removed_allows = DiffResultDescriptor("diff_allows") - modified_allows = DiffResultDescriptor("diff_allows") - - added_auditallows = DiffResultDescriptor("diff_auditallows") - removed_auditallows = DiffResultDescriptor("diff_auditallows") - modified_auditallows = DiffResultDescriptor("diff_auditallows") + Parameters: + ruletype The rule type, e.g. "allow". + """ - added_neverallows = DiffResultDescriptor("diff_neverallows") - removed_neverallows = DiffResultDescriptor("diff_neverallows") - modified_neverallows = DiffResultDescriptor("diff_neverallows") + def diff(self): + """Generate the difference in rules between the policies.""" - added_dontaudits = DiffResultDescriptor("diff_dontaudits") - removed_dontaudits = DiffResultDescriptor("diff_dontaudits") - modified_dontaudits = DiffResultDescriptor("diff_dontaudits") + self.log.info( + "Generating {0} differences from {1.left_policy} to {1.right_policy}". + format(ruletype, self)) - added_type_transitions = DiffResultDescriptor("diff_type_transitions") - removed_type_transitions = DiffResultDescriptor("diff_type_transitions") - modified_type_transitions = DiffResultDescriptor("diff_type_transitions") + if not self._left_te_rules or not self._right_te_rules: + self._create_te_rule_lists() - added_type_changes = DiffResultDescriptor("diff_type_changes") - removed_type_changes = DiffResultDescriptor("diff_type_changes") - modified_type_changes = DiffResultDescriptor("diff_type_changes") + added, removed, matched = self._set_diff( + self._expand_generator(self._left_te_rules[ruletype], AVRuleWrapper), + self._expand_generator(self._right_te_rules[ruletype], AVRuleWrapper)) - added_type_members = DiffResultDescriptor("diff_type_members") - removed_type_members = DiffResultDescriptor("diff_type_members") - modified_type_members = DiffResultDescriptor("diff_type_members") + modified = [] + for left_rule, right_rule in matched: + # Criteria for modified rules + # 1. change to permissions + added_perms, removed_perms, matched_perms = self._set_diff(left_rule.perms, + right_rule.perms) - # Lists of rules for each policy - _left_allows = None - _right_allows = None + # the final set comprehension is to avoid having lists + # like [("perm1", "perm1"), ("perm2", "perm2")], as the + # matched_perms return from _set_diff is a set of tuples + if added_perms or removed_perms: + modified.append(modified_avrule_record(left_rule, + added_perms, + removed_perms, + set(p[0] for p in matched_perms))) - _left_auditallows = None - _right_auditallows = None + setattr(self, "added_{0}s".format(ruletype), added) + setattr(self, "removed_{0}s".format(ruletype), removed) + setattr(self, "modified_{0}s".format(ruletype), modified) - _left_neverallows = None - _right_neverallows = None + return diff - _left_dontaudits = None - _right_dontaudits = None - _left_type_transitions = None - _right_type_transitions = None +def avx_diff_template(ruletype): - _left_type_changes = None - _right_type_changes = None + """ + This is a template for the extended permission access vector diff functions. - _left_type_members = None - _right_type_members = None + Parameters: + ruletype The rule type, e.g. "allowxperm". + """ - def diff_allows(self): - """Generate the difference in allow rules between the policies.""" + def diff(self): + """Generate the difference in rules between the policies.""" self.log.info( - "Generating allow differences from {0.left_policy} to {0.right_policy}".format(self)) + "Generating {0} differences from {1.left_policy} to {1.right_policy}". + format(ruletype, self)) - if self._left_allows is None or self._right_allows is None: + if not self._left_te_rules or not self._right_te_rules: self._create_te_rule_lists() - self.added_allows, self.removed_allows, self.modified_allows = self._diff_av_rules( - self._expand_generator(self._left_allows, AVRuleWrapper), - self._expand_generator(self._right_allows, AVRuleWrapper)) + added, removed, matched = self._set_diff( + self._expand_generator(self._left_te_rules[ruletype], AVRuleXpermWrapper), + self._expand_generator(self._right_te_rules[ruletype], AVRuleXpermWrapper)) - def diff_auditallows(self): - """Generate the difference in auditallow rules between the policies.""" + modified = [] + for left_rule, right_rule in matched: + # Criteria for modified rules + # 1. change to permissions + added_perms, removed_perms, matched_perms = self._set_diff(left_rule.perms, + right_rule.perms) - self.log.info( - "Generating auditallow differences from {0.left_policy} to {0.right_policy}". - format(self)) + # the final set comprehension is to avoid having lists + # like [("perm1", "perm1"), ("perm2", "perm2")], as the + # matched_perms return from _set_diff is a set of tuples + if added_perms or removed_perms: + modified.append(modified_avrule_record(left_rule, + ioctlSet(added_perms), + ioctlSet(removed_perms), + ioctlSet(p[0] for p in matched_perms))) - if self._left_auditallows is None or self._right_auditallows is None: - self._create_te_rule_lists() + setattr(self, "added_{0}s".format(ruletype), added) + setattr(self, "removed_{0}s".format(ruletype), removed) + setattr(self, "modified_{0}s".format(ruletype), modified) - self.added_auditallows, \ - self.removed_auditallows, \ - self.modified_auditallows = self._diff_av_rules( - self._expand_generator(self._left_auditallows, AVRuleWrapper), - self._expand_generator(self._right_auditallows, AVRuleWrapper)) + return diff - def diff_neverallows(self): - """Generate the difference in neverallow rules between the policies.""" - self.log.info( - "Generating neverallow differences from {0.left_policy} to {0.right_policy}". - format(self)) +def te_diff_template(ruletype): - if self._left_neverallows is None or self._right_neverallows is None: - self._create_te_rule_lists() + """ + This is a template for the type_* diff functions. - self.added_neverallows, \ - self.removed_neverallows, \ - self.modified_neverallows = self._diff_av_rules( - self._expand_generator(self._left_neverallows, AVRuleWrapper), - self._expand_generator(self._right_neverallows, AVRuleWrapper)) + Parameters: + ruletype The rule type, e.g. "type_transition". + """ - def diff_dontaudits(self): - """Generate the difference in dontaudit rules between the policies.""" + def diff(self): + """Generate the difference in rules between the policies.""" self.log.info( - "Generating dontaudit differences from {0.left_policy} to {0.right_policy}". - format(self)) + "Generating {0} differences from {1.left_policy} to {1.right_policy}". + format(ruletype, self)) - if self._left_dontaudits is None or self._right_dontaudits is None: + if not self._left_te_rules or not self._right_te_rules: self._create_te_rule_lists() - self.added_dontaudits, \ - self.removed_dontaudits, \ - self.modified_dontaudits = self._diff_av_rules( - self._expand_generator(self._left_dontaudits, AVRuleWrapper), - self._expand_generator(self._right_dontaudits, AVRuleWrapper)) + added, removed, matched = self._set_diff( + self._expand_generator(self._left_te_rules[ruletype], TERuleWrapper), + self._expand_generator(self._right_te_rules[ruletype], TERuleWrapper)) - def diff_type_transitions(self): - """Generate the difference in type_transition rules between the policies.""" - - self.log.info( - "Generating type_transition differences from {0.left_policy} to {0.right_policy}". - format(self)) + modified = [] + for left_rule, right_rule in matched: + # Criteria for modified rules + # 1. change to default type + if SymbolWrapper(left_rule.default) != SymbolWrapper(right_rule.default): + modified.append(modified_terule_record(left_rule, + right_rule.default, + left_rule.default)) - if self._left_type_transitions is None or self._right_type_transitions is None: - self._create_te_rule_lists() + setattr(self, "added_{0}s".format(ruletype), added) + setattr(self, "removed_{0}s".format(ruletype), removed) + setattr(self, "modified_{0}s".format(ruletype), modified) - self.added_type_transitions, \ - self.removed_type_transitions, \ - self.modified_type_transitions = self._diff_te_rules( - self._expand_generator(self._left_type_transitions, TERuleWrapper), - self._expand_generator(self._right_type_transitions, TERuleWrapper)) + return diff - def diff_type_changes(self): - """Generate the difference in type_change rules between the policies.""" - self.log.info( - "Generating type_change differences from {0.left_policy} to {0.right_policy}". - format(self)) +class TERulesDifference(Difference): - if self._left_type_changes is None or self._right_type_changes is None: - self._create_te_rule_lists() + """ + Determine the difference in type enforcement rules + between two policies. + """ - self.added_type_changes, \ - self.removed_type_changes, \ - self.modified_type_changes = self._diff_te_rules( - self._expand_generator(self._left_type_changes, TERuleWrapper), - self._expand_generator(self._right_type_changes, TERuleWrapper)) + diff_allows = av_diff_template("allow") + added_allows = DiffResultDescriptor("diff_allows") + removed_allows = DiffResultDescriptor("diff_allows") + modified_allows = DiffResultDescriptor("diff_allows") - def diff_type_members(self): - """Generate the difference in type_member rules between the policies.""" + diff_auditallows = av_diff_template("auditallow") + added_auditallows = DiffResultDescriptor("diff_auditallows") + removed_auditallows = DiffResultDescriptor("diff_auditallows") + modified_auditallows = DiffResultDescriptor("diff_auditallows") - self.log.info( - "Generating type_member differences from {0.left_policy} to {0.right_policy}". - format(self)) + diff_neverallows = av_diff_template("neverallow") + added_neverallows = DiffResultDescriptor("diff_neverallows") + removed_neverallows = DiffResultDescriptor("diff_neverallows") + modified_neverallows = DiffResultDescriptor("diff_neverallows") - if self._left_type_members is None or self._right_type_members is None: - self._create_te_rule_lists() + diff_dontaudits = av_diff_template("dontaudit") + added_dontaudits = DiffResultDescriptor("diff_dontaudits") + removed_dontaudits = DiffResultDescriptor("diff_dontaudits") + modified_dontaudits = DiffResultDescriptor("diff_dontaudits") - self.added_type_members, \ - self.removed_type_members, \ - self.modified_type_members = self._diff_te_rules( - self._expand_generator(self._left_type_members, TERuleWrapper), - self._expand_generator(self._right_type_members, TERuleWrapper)) + diff_allowxperms = avx_diff_template("allowxperm") + added_allowxperms = DiffResultDescriptor("diff_allowxperms") + removed_allowxperms = DiffResultDescriptor("diff_allowxperms") + modified_allowxperms = DiffResultDescriptor("diff_allowxperms") - # - # Internal functions - # - def _create_te_rule_lists(self): - """Create rule lists for both policies.""" + diff_auditallowxperms = avx_diff_template("auditallowxperm") + added_auditallowxperms = DiffResultDescriptor("diff_auditallowxperms") + removed_auditallowxperms = DiffResultDescriptor("diff_auditallowxperms") + modified_auditallowxperms = DiffResultDescriptor("diff_auditallowxperms") - self._left_allows = [] - self._left_auditallows = [] - self._left_neverallows = [] - self._left_dontaudits = [] - self._left_type_transitions = [] - self._left_type_changes = [] - self._left_type_members = [] - for rule in self.left_policy.terules(): - # do not expand yet, to keep memory - # use down as long as possible - if rule.ruletype == "allow": - self._left_allows.append(rule) - elif rule.ruletype == "auditallow": - self._left_auditallows.append(rule) - elif rule.ruletype == "neverallow": - self._left_neverallows.append(rule) - elif rule.ruletype == "dontaudit": - self._left_dontaudits.append(rule) - elif rule.ruletype == "type_transition": - self._left_type_transitions.append(rule) - elif rule.ruletype == "type_change": - self._left_type_changes.append(rule) - elif rule.ruletype == "type_member": - self._left_type_members.append(rule) - else: - self.log.error("Unknown rule type: {0} (This is an SETools bug)". - format(rule.ruletype)) - - self._right_allows = [] - self._right_auditallows = [] - self._right_neverallows = [] - self._right_dontaudits = [] - self._right_type_transitions = [] - self._right_type_changes = [] - self._right_type_members = [] - for rule in self.right_policy.terules(): - # do not expand yet, to keep memory - # use down as long as possible - if rule.ruletype == "allow": - self._right_allows.append(rule) - elif rule.ruletype == "auditallow": - self._right_auditallows.append(rule) - elif rule.ruletype == "neverallow": - self._right_neverallows.append(rule) - elif rule.ruletype == "dontaudit": - self._right_dontaudits.append(rule) - elif rule.ruletype == "type_transition": - self._right_type_transitions.append(rule) - elif rule.ruletype == "type_change": - self._right_type_changes.append(rule) - elif rule.ruletype == "type_member": - self._right_type_members.append(rule) - else: - self.log.error("Unknown rule type: {0} (This is an SETools bug)". - format(rule.ruletype)) - - def _diff_av_rules(self, left_list, right_list): - """Common method for comparing access vector rules.""" - added, removed, matched = self._set_diff(left_list, right_list) + diff_neverallowxperms = avx_diff_template("neverallowxperm") + added_neverallowxperms = DiffResultDescriptor("diff_neverallowxperms") + removed_neverallowxperms = DiffResultDescriptor("diff_neverallowxperms") + modified_neverallowxperms = DiffResultDescriptor("diff_neverallowxperms") - modified = [] + diff_dontauditxperms = avx_diff_template("dontauditxperm") + added_dontauditxperms = DiffResultDescriptor("diff_dontauditxperms") + removed_dontauditxperms = DiffResultDescriptor("diff_dontauditxperms") + modified_dontauditxperms = DiffResultDescriptor("diff_dontauditxperms") - for left_rule, right_rule in matched: - # Criteria for modified rules - # 1. change to permissions - added_perms, removed_perms, matched_perms = self._set_diff(left_rule.perms, - right_rule.perms) + diff_type_transitions = te_diff_template("type_transition") + added_type_transitions = DiffResultDescriptor("diff_type_transitions") + removed_type_transitions = DiffResultDescriptor("diff_type_transitions") + modified_type_transitions = DiffResultDescriptor("diff_type_transitions") - # the final set comprehension is to avoid having lists - # like [("perm1", "perm1"), ("perm2", "perm2")], as the - # matched_perms return from _set_diff is a set of tuples - if added_perms or removed_perms: - modified.append(modified_avrule_record(left_rule, - added_perms, - removed_perms, - set(p[0] for p in matched_perms))) + diff_type_changes = te_diff_template("type_change") + added_type_changes = DiffResultDescriptor("diff_type_changes") + removed_type_changes = DiffResultDescriptor("diff_type_changes") + modified_type_changes = DiffResultDescriptor("diff_type_changes") - return added, removed, modified + diff_type_members = te_diff_template("type_member") + added_type_members = DiffResultDescriptor("diff_type_members") + removed_type_members = DiffResultDescriptor("diff_type_members") + modified_type_members = DiffResultDescriptor("diff_type_members") - def _diff_te_rules(self, left_list, right_list): - """Common method for comparing type_* rules.""" - added, removed, matched = self._set_diff(left_list, right_list) + # Lists of rules for each policy + _left_te_rules = defaultdict(list) + _right_te_rules = defaultdict(list) - modified = [] + # + # Internal functions + # + def _create_te_rule_lists(self): + """Create rule lists for both policies.""" + # do not expand yet, to keep memory + # use down as long as possible + self.log.debug("Building TE rule lists from {0.left_policy}".format(self)) + for rule in self.left_policy.terules(): + self._left_te_rules[rule.ruletype].append(rule) - for left_rule, right_rule in matched: - # Criteria for modified rules - # 1. change to default type - if SymbolWrapper(left_rule.default) != SymbolWrapper(right_rule.default): - modified.append(modified_terule_record(left_rule, - right_rule.default, - left_rule.default)) + self.log.debug("Building TE rule lists from {0.right_policy}".format(self)) + for rule in self.right_policy.terules(): + self._right_te_rules[rule.ruletype].append(rule) - return added, removed, modified + self.log.debug("Completed building TE rule lists.") def _reset_diff(self): """Reset diff results on policy changes.""" @@ -315,6 +263,18 @@ class TERulesDifference(Difference): self.added_dontaudits = None self.removed_dontaudits = None self.modified_dontaudits = None + self.added_allowxperms = None + self.removed_allowxperms = None + self.modified_allowxperms = None + self.added_auditallowxperms = None + self.removed_auditallowxperms = None + self.modified_auditallowxperms = None + self.added_neverallowxperms = None + self.removed_neverallowxperms = None + self.modified_neverallowxperms = None + self.added_dontauditxperms = None + self.removed_dontauditxperms = None + self.modified_dontauditxperms = None self.added_type_transitions = None self.removed_type_transitions = None self.modified_type_transitions = None @@ -326,20 +286,8 @@ class TERulesDifference(Difference): self.modified_type_members = None # Sets of rules for each policy - self._left_allows = None - self._right_allows = None - self._left_auditallows = None - self._right_auditallows = None - self._left_neverallows = None - self._right_neverallows = None - self._left_dontaudits = None - self._right_dontaudits = None - self._left_type_transitions = None - self._right_type_transitions = None - self._left_type_changes = None - self._right_type_changes = None - self._left_type_members = None - self._right_type_members = None + self._left_te_rules.clear() + self._right_te_rules.clear() class AVRuleWrapper(Wrapper): @@ -377,6 +325,34 @@ class AVRuleWrapper(Wrapper): self.conditional_block == other.conditional_block +class AVRuleXpermWrapper(Wrapper): + + """Wrap extended permission access vector rules to allow set operations.""" + + def __init__(self, rule): + self.origin = rule + self.ruletype = rule.ruletype + self.source = SymbolWrapper(rule.source) + self.target = SymbolWrapper(rule.target) + self.tclass = SymbolWrapper(rule.tclass) + self.xperm_type = rule.xperm_type + self.key = hash(rule) + + def __hash__(self): + return self.key + + def __lt__(self, other): + return self.key < other.key + + def __eq__(self, other): + # because TERuleDifference groups rules by ruletype, + # the ruletype always matches. + return self.source == other.source and \ + self.target == other.target and \ + self.tclass == other.tclass and \ + self.xperm_type == other.xperm_type + + class TERuleWrapper(Wrapper): """Wrap type_* rules to allow set operations.""" diff --git a/lib/python2.7/site-packages/setools/diff/typeattr.py b/lib/python2.7/site-packages/setools/diff/typeattr.py index 8c51832..8c51832 100644..100755 --- a/lib/python2.7/site-packages/setools/diff/typeattr.py +++ b/lib/python2.7/site-packages/setools/diff/typeattr.py diff --git a/lib/python2.7/site-packages/setools/diff/types.py b/lib/python2.7/site-packages/setools/diff/types.py index d0e99d9..d0e99d9 100644..100755 --- a/lib/python2.7/site-packages/setools/diff/types.py +++ b/lib/python2.7/site-packages/setools/diff/types.py diff --git a/lib/python2.7/site-packages/setools/diff/users.py b/lib/python2.7/site-packages/setools/diff/users.py index 78f3d3e..78f3d3e 100644..100755 --- a/lib/python2.7/site-packages/setools/diff/users.py +++ b/lib/python2.7/site-packages/setools/diff/users.py diff --git a/lib/python2.7/site-packages/setools/dta.py b/lib/python2.7/site-packages/setools/dta.py index 53328f4..b16838d 100644..100755 --- a/lib/python2.7/site-packages/setools/dta.py +++ b/lib/python2.7/site-packages/setools/dta.py @@ -54,7 +54,7 @@ class DomainTransitionAnalysis(object): Parameter: policy The policy to analyze. """ - self.log = logging.getLogger(self.__class__.__name__) + self.log = logging.getLogger(__name__) self.policy = policy self.exclude = exclude @@ -82,7 +82,7 @@ class DomainTransitionAnalysis(object): if types: self._exclude = [self.policy.lookup_type(t) for t in types] else: - self._exclude = None + self._exclude = [] self.rebuildsubgraph = True @@ -107,7 +107,7 @@ class DomainTransitionAnalysis(object): if self.rebuildsubgraph: self._build_subgraph() - self.log.info("Generating one shortest path from {0} to {1}...".format(s, t)) + self.log.info("Generating one domain transition path from {0} to {1}...".format(s, t)) try: yield self.__generate_steps(nx.shortest_path(self.subG, s, t)) @@ -143,7 +143,8 @@ class DomainTransitionAnalysis(object): if self.rebuildsubgraph: self._build_subgraph() - self.log.info("Generating all paths from {0} to {1}, max len {2}...".format(s, t, maxlen)) + self.log.info("Generating all domain transition paths from {0} to {1}, max length {2}...". + format(s, t, maxlen)) try: for path in nx.all_simple_paths(self.subG, s, t, maxlen): @@ -175,7 +176,8 @@ class DomainTransitionAnalysis(object): if self.rebuildsubgraph: self._build_subgraph() - self.log.info("Generating all shortest paths from {0} to {1}...".format(s, t)) + self.log.info("Generating all shortest domain transition paths from {0} to {1}...". + format(s, t)) try: for path in nx.all_shortest_paths(self.subG, s, t): @@ -207,7 +209,7 @@ class DomainTransitionAnalysis(object): if self.rebuildsubgraph: self._build_subgraph() - self.log.info("Generating all transitions {1} {0}". + self.log.info("Generating all domain transitions {1} {0}". format(s, "in to" if self.reverse else "out from")) try: @@ -247,21 +249,21 @@ class DomainTransitionAnalysis(object): @staticmethod def __generate_entrypoints(edge): """ - Generator which yields the entrypoint, execute, and + Creates a list of entrypoint, execute, and type_transition rules for each entrypoint. Parameter: data The dictionary of entrypoints. - Yield: tuple(type, entry, exec, trans) + Return: list of tuple(type, entry, exec, trans) type The entrypoint type. entry The list of entrypoint rules. exec The list of execute rules. trans The list of type_transition rules. """ - for e in edge.entrypoint: - yield entrypoint_output(e, edge.entrypoint[e], edge.execute[e], edge.type_transition[e]) + return [entrypoint_output(e, edge.entrypoint[e], edge.execute[e], edge.type_transition[e]) + for e in edge.entrypoint] def __generate_steps(self, path): """ @@ -361,7 +363,7 @@ class DomainTransitionAnalysis(object): self.G.clear() self.G.name = "Domain transition graph for {0}.".format(self.policy) - self.log.info("Building graph from {0}...".format(self.policy)) + self.log.info("Building domain transition graph from {0}...".format(self.policy)) # hash tables keyed on domain type setexec = defaultdict(list) @@ -500,7 +502,10 @@ class DomainTransitionAnalysis(object): self.rebuildgraph = False self.rebuildsubgraph = True - self.log.info("Completed building graph.") + self.log.info("Completed building domain transition graph.") + self.log.debug("Graph stats: nodes: {0}, edges: {1}.".format( + nx.number_of_nodes(self.G), + nx.number_of_edges(self.G))) def __remove_excluded_entrypoints(self): invalid_edges = [] @@ -535,7 +540,7 @@ class DomainTransitionAnalysis(object): if self.rebuildgraph: self._build_graph() - self.log.info("Building subgraph.") + self.log.info("Building domain transition subgraph.") self.log.debug("Excluding {0}".format(self.exclude)) self.log.debug("Reverse {0}".format(self.reverse)) @@ -553,7 +558,10 @@ class DomainTransitionAnalysis(object): self.__remove_excluded_entrypoints() self.rebuildsubgraph = False - self.log.info("Completed building subgraph.") + self.log.info("Completed building domain transition subgraph.") + self.log.debug("Subgraph stats: nodes: {0}, edges: {1}.".format( + nx.number_of_nodes(self.subG), + nx.number_of_edges(self.subG))) class Edge(object): @@ -562,6 +570,7 @@ class Edge(object): A graph edge. Also used for returning domain transition steps. Parameters: + graph The NetworkX graph. source The source type of the edge. target The target tyep of the edge. @@ -583,12 +592,6 @@ class Edge(object): self.source = source self.target = target - # a bit of a hack to make Edges work - # in NetworkX functions that work on - # 2-tuples of (source, target) - # (see __getitem__ below) - self.st_tuple = (source, target) - if not self.G.has_edge(source, target): if not create: raise ValueError("Edge does not exist in graph") @@ -603,4 +606,18 @@ class Edge(object): self.setcurrent = None def __getitem__(self, key): - return self.st_tuple[key] + # This is implemented so this object can be used in NetworkX + # functions that operate on (source, target) tuples + if isinstance(key, slice): + return [self._index_to_item(i) for i in range(* key.indices(2))] + else: + return self._index_to_item(key) + + def _index_to_item(self, index): + """Return source or target based on index.""" + if index == 0: + return self.source + elif index == 1: + return self.target + else: + raise IndexError("Invalid index (edges only have 2 items): {0}".format(index)) diff --git a/lib/python2.7/site-packages/setools/exception.py b/lib/python2.7/site-packages/setools/exception.py index c3505cd..c3505cd 100644..100755 --- a/lib/python2.7/site-packages/setools/exception.py +++ b/lib/python2.7/site-packages/setools/exception.py diff --git a/lib/python2.7/site-packages/setools/fsusequery.py b/lib/python2.7/site-packages/setools/fsusequery.py index 131a649..a877501 100644..100755 --- a/lib/python2.7/site-packages/setools/fsusequery.py +++ b/lib/python2.7/site-packages/setools/fsusequery.py @@ -19,11 +19,13 @@ import logging import re -from . import contextquery from .descriptors import CriteriaDescriptor, CriteriaSetDescriptor +from .mixins import MatchContext +from .query import PolicyQuery +from .util import match_regex -class FSUseQuery(contextquery.ContextQuery): +class FSUseQuery(MatchContext, PolicyQuery): """ Query fs_use_* statements. @@ -60,22 +62,22 @@ class FSUseQuery(contextquery.ContextQuery): fs = CriteriaDescriptor("fs_regex") fs_regex = False + def __init__(self, policy, **kwargs): + super(FSUseQuery, self).__init__(policy, **kwargs) + self.log = logging.getLogger(__name__) + def results(self): """Generator which yields all matching fs_use_* statements.""" - self.log.info("Generating results from {0.policy}".format(self)) + self.log.info("Generating fs_use_* results from {0.policy}".format(self)) self.log.debug("Ruletypes: {0.ruletype}".format(self)) self.log.debug("FS: {0.fs!r}, regex: {0.fs_regex}".format(self)) - self.log.debug("User: {0.user!r}, regex: {0.user_regex}".format(self)) - self.log.debug("Role: {0.role!r}, regex: {0.role_regex}".format(self)) - self.log.debug("Type: {0.type_!r}, regex: {0.type_regex}".format(self)) - self.log.debug("Range: {0.range_!r}, subset: {0.range_subset}, overlap: {0.range_overlap}, " - "superset: {0.range_superset}, proper: {0.range_proper}".format(self)) + self._match_context_debug(self.log) for fsu in self.policy.fs_uses(): if self.ruletype and fsu.ruletype not in self.ruletype: continue - if self.fs and not self._match_regex( + if self.fs and not match_regex( fsu.fs, self.fs, self.fs_regex): diff --git a/lib/python2.7/site-packages/setools/genfsconquery.py b/lib/python2.7/site-packages/setools/genfsconquery.py index c67dfd6..ea9dbd1 100644..100755 --- a/lib/python2.7/site-packages/setools/genfsconquery.py +++ b/lib/python2.7/site-packages/setools/genfsconquery.py @@ -19,11 +19,13 @@ import logging import re -from . import contextquery from .descriptors import CriteriaDescriptor +from .mixins import MatchContext +from .query import PolicyQuery +from .util import match_regex -class GenfsconQuery(contextquery.ContextQuery): +class GenfsconQuery(MatchContext, PolicyQuery): """ Query genfscon statements. @@ -64,26 +66,26 @@ class GenfsconQuery(contextquery.ContextQuery): path = CriteriaDescriptor("path_regex") path_regex = False + def __init__(self, policy, **kwargs): + super(GenfsconQuery, self).__init__(policy, **kwargs) + self.log = logging.getLogger(__name__) + def results(self): """Generator which yields all matching genfscons.""" - self.log.info("Generating results from {0.policy}".format(self)) + self.log.info("Generating genfscon results from {0.policy}".format(self)) self.log.debug("FS: {0.fs!r}, regex: {0.fs_regex}".format(self)) self.log.debug("Path: {0.path!r}, regex: {0.path_regex}".format(self)) self.log.debug("Filetype: {0.filetype!r}".format(self)) - self.log.debug("User: {0.user!r}, regex: {0.user_regex}".format(self)) - self.log.debug("Role: {0.role!r}, regex: {0.role_regex}".format(self)) - self.log.debug("Type: {0.type_!r}, regex: {0.type_regex}".format(self)) - self.log.debug("Range: {0.range_!r}, subset: {0.range_subset}, overlap: {0.range_overlap}, " - "superset: {0.range_superset}, proper: {0.range_proper}".format(self)) + self._match_context_debug(self.log) for genfs in self.policy.genfscons(): - if self.fs and not self._match_regex( + if self.fs and not match_regex( genfs.fs, self.fs, self.fs_regex): continue - if self.path and not self._match_regex( + if self.path and not match_regex( genfs.path, self.path, self.path_regex): diff --git a/lib/python2.7/site-packages/setools/infoflow.py b/lib/python2.7/site-packages/setools/infoflow.py index 5812828..15eb38e 100644..100755 --- a/lib/python2.7/site-packages/setools/infoflow.py +++ b/lib/python2.7/site-packages/setools/infoflow.py @@ -41,7 +41,7 @@ class InfoFlowAnalysis(object): exclude The types excluded from the information flow analysis. (default is none) """ - self.log = logging.getLogger(self.__class__.__name__) + self.log = logging.getLogger(__name__) self.policy = policy @@ -113,7 +113,8 @@ class InfoFlowAnalysis(object): if self.rebuildsubgraph: self._build_subgraph() - self.log.info("Generating one shortest path from {0} to {1}...".format(s, t)) + self.log.info("Generating one shortest information flow path from {0} to {1}...". + format(s, t)) try: yield self.__generate_steps(nx.shortest_path(self.subG, s, t)) @@ -153,7 +154,8 @@ class InfoFlowAnalysis(object): if self.rebuildsubgraph: self._build_subgraph() - self.log.info("Generating all paths from {0} to {1}, max len {2}...".format(s, t, maxlen)) + self.log.info("Generating all information flow paths from {0} to {1}, max length {2}...". + format(s, t, maxlen)) try: for path in nx.all_simple_paths(self.subG, s, t, maxlen): @@ -188,7 +190,8 @@ class InfoFlowAnalysis(object): if self.rebuildsubgraph: self._build_subgraph() - self.log.info("Generating all shortest paths from {0} to {1}...".format(s, t)) + self.log.info("Generating all shortest information flow paths from {0} to {1}...". + format(s, t)) try: for path in nx.all_shortest_paths(self.subG, s, t): @@ -226,7 +229,8 @@ class InfoFlowAnalysis(object): if self.rebuildsubgraph: self._build_subgraph() - self.log.info("Generating all infoflows {0} {1}".format("out of" if out else "into", s)) + self.log.info("Generating all information flows {0} {1}". + format("out of" if out else "into", s)) if out: flows = self.subG.out_edges_iter(s) @@ -294,7 +298,7 @@ class InfoFlowAnalysis(object): self.perm_map.map_policy(self.policy) - self.log.info("Building graph from {0}...".format(self.policy)) + self.log.info("Building information flow graph from {0}...".format(self.policy)) for rule in self.policy.terules(): if rule.ruletype != "allow": @@ -318,13 +322,16 @@ class InfoFlowAnalysis(object): self.rebuildgraph = False self.rebuildsubgraph = True - self.log.info("Completed building graph.") + self.log.info("Completed building information flow graph.") + self.log.debug("Graph stats: nodes: {0}, edges: {1}.".format( + nx.number_of_nodes(self.G), + nx.number_of_edges(self.G))) def _build_subgraph(self): if self.rebuildgraph: self._build_graph() - self.log.info("Building subgraph...") + self.log.info("Building information flow subgraph...") self.log.debug("Excluding {0!r}".format(self.exclude)) self.log.debug("Min weight {0}".format(self.min_weight)) @@ -345,7 +352,10 @@ class InfoFlowAnalysis(object): self.subG.remove_edges_from(delete_list) self.rebuildsubgraph = False - self.log.info("Completed building subgraph.") + self.log.info("Completed building information flow subgraph.") + self.log.debug("Subgraph stats: nodes: {0}, edges: {1}.".format( + nx.number_of_nodes(self.subG), + nx.number_of_edges(self.subG))) class Edge(object): @@ -354,6 +364,7 @@ class Edge(object): A graph edge. Also used for returning information flow steps. Parameters: + graph The NetworkX graph. source The source type of the edge. target The target type of the edge. @@ -376,12 +387,6 @@ class Edge(object): self.source = source self.target = target - # a bit of a hack to make edges work - # in NetworkX functions that work on - # 2-tuples of (source, target) - # (see __getitem__ below) - self.st_tuple = (source, target) - if not self.G.has_edge(source, target): if create: self.G.add_edge(source, target, weight=1) @@ -391,4 +396,18 @@ class Edge(object): raise ValueError("Edge does not exist in graph") def __getitem__(self, key): - return self.st_tuple[key] + # This is implemented so this object can be used in NetworkX + # functions that operate on (source, target) tuples + if isinstance(key, slice): + return [self._index_to_item(i) for i in range(* key.indices(2))] + else: + return self._index_to_item(key) + + def _index_to_item(self, index): + """Return source or target based on index.""" + if index == 0: + return self.source + elif index == 1: + return self.target + else: + raise IndexError("Invalid index (edges only have 2 items): {0}".format(index)) diff --git a/lib/python2.7/site-packages/setools/initsidquery.py b/lib/python2.7/site-packages/setools/initsidquery.py index 1eb3790..aa62edb 100644..100755 --- a/lib/python2.7/site-packages/setools/initsidquery.py +++ b/lib/python2.7/site-packages/setools/initsidquery.py @@ -18,11 +18,11 @@ # import logging -from . import compquery -from . import contextquery +from .mixins import MatchContext, MatchName +from .query import PolicyQuery -class InitialSIDQuery(compquery.ComponentQuery, contextquery.ContextQuery): +class InitialSIDQuery(MatchName, MatchContext, PolicyQuery): """ Initial SID (Initial context) query. @@ -54,15 +54,15 @@ class InitialSIDQuery(compquery.ComponentQuery, contextquery.ContextQuery): No effect if not using set operations. """ + def __init__(self, policy, **kwargs): + super(InitialSIDQuery, self).__init__(policy, **kwargs) + self.log = logging.getLogger(__name__) + def results(self): """Generator which yields all matching initial SIDs.""" - self.log.info("Generating results from {0.policy}".format(self)) - self.log.debug("Name: {0.name!r}, regex: {0.name_regex}".format(self)) - self.log.debug("User: {0.user!r}, regex: {0.user_regex}".format(self)) - self.log.debug("Role: {0.role!r}, regex: {0.role_regex}".format(self)) - self.log.debug("Type: {0.type_!r}, regex: {0.type_regex}".format(self)) - self.log.debug("Range: {0.range_!r}, subset: {0.range_subset}, overlap: {0.range_overlap}, " - "superset: {0.range_superset}, proper: {0.range_proper}".format(self)) + self.log.info("Generating initial SID results from {0.policy}".format(self)) + self._match_name_debug(self.log) + self._match_context_debug(self.log) for i in self.policy.initialsids(): if not self._match_name(i): diff --git a/lib/python2.7/site-packages/setools/iomemconquery.py b/lib/python2.7/site-packages/setools/iomemconquery.py new file mode 100644 index 0000000..cc1c69a --- /dev/null +++ b/lib/python2.7/site-packages/setools/iomemconquery.py @@ -0,0 +1,124 @@ +# Derived from portconquery.py +# +# This file is part of SETools. +# +# SETools 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. +# +# SETools 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 SETools. If not, see +# <http://www.gnu.org/licenses/>. +# +import logging + +from .mixins import MatchContext +from .policyrep.xencontext import addr_range +from .query import PolicyQuery +from .util import match_range + + +class IomemconQuery(MatchContext, PolicyQuery): + + """ + Iomemcon context query. + + Parameter: + policy The policy to query. + + Keyword Parameters/Class attributes: + addr A 2-tuple of the memory addr range to match. (Set both to + the same value for a single mem addr) + addr_subset If true, the criteria will match if it is a subset + of the iomemcon's range. + addr_overlap If true, the criteria will match if it overlaps + any of the iomemcon's range. + addr_superset If true, the criteria will match if it is a superset + of the iomemcon's range. + addr_proper If true, use proper superset/subset operations. + No effect if not using set operations. + + user The criteria to match the context's user. + user_regex If true, regular expression matching + will be used on the user. + + role The criteria to match the context's role. + role_regex If true, regular expression matching + will be used on the role. + + type_ The criteria to match the context's type. + type_regex If true, regular expression matching + will be used on the type. + + range_ The criteria to match the context's range. + range_subset If true, the criteria will match if it is a subset + of the context's range. + range_overlap If true, the criteria will match if it overlaps + any of the context's range. + range_superset If true, the criteria will match if it is a superset + of the context's range. + range_proper If true, use proper superset/subset operations. + No effect if not using set operations. + """ + + _addr = None + addr_subset = False + addr_overlap = False + addr_superset = False + addr_proper = False + + @property + def addr(self): + return self._addr + + @addr.setter + def addr(self, value): + pending_addr = addr_range(*value) + + if all(pending_addr): + if pending_addr.low < 1 or pending_addr.high < 1: + raise ValueError("Memory address must be positive: {0.low}-{0.high}". + format(pending_addr)) + + if pending_addr.low > pending_addr.high: + raise ValueError( + "The low mem addr must be smaller than the high mem addr: {0.low}-{0.high}". + format(pending_addr)) + + self._addr = pending_addr + else: + self._addr = None + + def __init__(self, policy, **kwargs): + super(IomemconQuery, self).__init__(policy, **kwargs) + self.log = logging.getLogger(__name__) + + def results(self): + """Generator which yields all matching iomemcons.""" + self.log.info("Generating results from {0.policy}".format(self)) + self.log.debug("Address: {0.addr!r}, overlap: {0.addr_overlap}, " + "subset: {0.addr_subset}, superset: {0.addr_superset}, " + "proper: {0.addr_proper}".format(self)) + self._match_context_debug(self.log) + + for iomemcon in self.policy.iomemcons(): + + if self.addr and not match_range( + iomemcon.addr, + self.addr, + self.addr_subset, + self.addr_overlap, + self.addr_superset, + self.addr_proper): + continue + + if not self._match_context(iomemcon.context): + continue + + yield iomemcon diff --git a/lib/python2.7/site-packages/setools/ioportconquery.py b/lib/python2.7/site-packages/setools/ioportconquery.py new file mode 100644 index 0000000..84775a6 --- /dev/null +++ b/lib/python2.7/site-packages/setools/ioportconquery.py @@ -0,0 +1,124 @@ +# Derived from portconquery.py +# +# This file is part of SETools. +# +# SETools 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. +# +# SETools 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 SETools. If not, see +# <http://www.gnu.org/licenses/>. +# +import logging + +from .mixins import MatchContext +from .policyrep.xencontext import port_range +from .query import PolicyQuery +from .util import match_range + + +class IoportconQuery(MatchContext, PolicyQuery): + + """ + Ioportcon context query. + + Parameter: + policy The policy to query. + + Keyword Parameters/Class attributes: + ports A 2-tuple of the port range to match. (Set both to + the same value for a single port) + ports_subset If true, the criteria will match if it is a subset + of the ioportcon's range. + ports_overlap If true, the criteria will match if it overlaps + any of the ioportcon's range. + ports_superset If true, the criteria will match if it is a superset + of the ioportcon's range. + ports_proper If true, use proper superset/subset operations. + No effect if not using set operations. + + user The criteria to match the context's user. + user_regex If true, regular expression matching + will be used on the user. + + role The criteria to match the context's role. + role_regex If true, regular expression matching + will be used on the role. + + type_ The criteria to match the context's type. + type_regex If true, regular expression matching + will be used on the type. + + range_ The criteria to match the context's range. + range_subset If true, the criteria will match if it is a subset + of the context's range. + range_overlap If true, the criteria will match if it overlaps + any of the context's range. + range_superset If true, the criteria will match if it is a superset + of the context's range. + range_proper If true, use proper superset/subset operations. + No effect if not using set operations. + """ + + _ports = None + ports_subset = False + ports_overlap = False + ports_superset = False + ports_proper = False + + @property + def ports(self): + return self._ports + + @ports.setter + def ports(self, value): + pending_ports = port_range(*value) + + if all(pending_ports): + if pending_ports.low < 1 or pending_ports.high < 1: + raise ValueError("Port numbers must be positive: {0.low}-{0.high}". + format(pending_ports)) + + if pending_ports.low > pending_ports.high: + raise ValueError( + "The low port must be smaller than the high port: {0.low}-{0.high}". + format(pending_ports)) + + self._ports = pending_ports + else: + self._ports = None + + def __init__(self, policy, **kwargs): + super(IoportconQuery, self).__init__(policy, **kwargs) + self.log = logging.getLogger(__name__) + + def results(self): + """Generator which yields all matching ioportcons.""" + self.log.info("Generating results from {0.policy}".format(self)) + self.log.debug("Ports: {0.ports!r}, overlap: {0.ports_overlap}, " + "subset: {0.ports_subset}, superset: {0.ports_superset}, " + "proper: {0.ports_proper}".format(self)) + self._match_context_debug(self.log) + + for ioportcon in self.policy.ioportcons(): + + if self.ports and not match_range( + ioportcon.ports, + self.ports, + self.ports_subset, + self.ports_overlap, + self.ports_superset, + self.ports_proper): + continue + + if not self._match_context(ioportcon.context): + continue + + yield ioportcon diff --git a/lib/python2.7/site-packages/setools/mixins.py b/lib/python2.7/site-packages/setools/mixins.py index 99dc9ff..97e4fec 100644..100755 --- a/lib/python2.7/site-packages/setools/mixins.py +++ b/lib/python2.7/site-packages/setools/mixins.py @@ -20,6 +20,7 @@ import re from .descriptors import CriteriaDescriptor, CriteriaSetDescriptor +from .util import match_in_set, match_regex, match_range, match_regex_or_set class MatchAlias(object): @@ -29,6 +30,10 @@ class MatchAlias(object): alias = CriteriaDescriptor("alias_regex") alias_regex = False + def _match_alias_debug(self, log): + """Emit log debugging info for alias matching.""" + log.debug("Alias: {0.alias}, regex: {0.alias_regex}".format(self)) + def _match_alias(self, obj): """ Match the alias criteria @@ -41,7 +46,113 @@ class MatchAlias(object): # if there is no criteria, everything matches. return True - return self._match_in_set(obj.aliases(), self.alias, self.alias_regex) + return match_in_set(obj.aliases(), self.alias, self.alias_regex) + + +class MatchContext(object): + + """ + Mixin for matching contexts. + + Class attributes: + user The user to match in the context. + user_regex If true, regular expression matching + will be used on the user. + role The role to match in the context. + role_regex If true, regular expression matching + will be used on the role. + type_ The type to match in the context. + type_regex If true, regular expression matching + will be used on the type. + range_ The range to match in the context. + range_subset If true, the criteria will match if it + is a subset of the context's range. + range_overlap If true, the criteria will match if it + overlaps any of the context's range. + range_superset If true, the criteria will match if it + is a superset of the context's range. + range_proper If true, use proper superset/subset + on range matching operations. + No effect if not using set operations. + """ + + user = CriteriaDescriptor("user_regex", "lookup_user") + user_regex = False + role = CriteriaDescriptor("role_regex", "lookup_role") + role_regex = False + type_ = CriteriaDescriptor("type_regex", "lookup_type") + type_regex = False + range_ = CriteriaDescriptor(lookup_function="lookup_range") + range_overlap = False + range_subset = False + range_superset = False + range_proper = False + + def _match_context_debug(self, log): + """Emit log debugging info for context matching.""" + log.debug("User: {0.user!r}, regex: {0.user_regex}".format(self)) + log.debug("Role: {0.role!r}, regex: {0.role_regex}".format(self)) + log.debug("Type: {0.type_!r}, regex: {0.type_regex}".format(self)) + log.debug("Range: {0.range_!r}, subset: {0.range_subset}, overlap: {0.range_overlap}, " + "superset: {0.range_superset}, proper: {0.range_proper}".format(self)) + + def _match_context(self, context): + """ + Match the context criteria. + + Parameter: + obj An object with context attributes "user", "role", + "type_" and "range_". + """ + + if self.user and not match_regex( + context.user, + self.user, + self.user_regex): + return False + + if self.role and not match_regex( + context.role, + self.role, + self.role_regex): + return False + + if self.type_ and not match_regex( + context.type_, + self.type_, + self.type_regex): + return False + + if self.range_ and not match_range( + context.range_, + self.range_, + self.range_subset, + self.range_overlap, + self.range_superset, + self.range_proper): + return False + + return True + + +class MatchName(object): + + """Mixin for matching an object's name.""" + + name = CriteriaDescriptor("name_regex") + name_regex = False + + def _match_name_debug(self, log): + """Log debugging messages for name matching.""" + log.debug("Name: {0.name!r}, regex: {0.name_regex}".format(self)) + + def _match_name(self, obj): + """Match the object to the name criteria.""" + if not self.name: + # if there is no criteria, everything matches. + return True + + return match_regex(obj, self.name, self.name_regex) class MatchObjClass(object): @@ -51,6 +162,10 @@ class MatchObjClass(object): tclass = CriteriaSetDescriptor("tclass_regex", "lookup_class") tclass_regex = False + def _match_object_class_debug(self, log): + """Emit log debugging info for permission matching.""" + log.debug("Class: {0.tclass!r}, regex: {0.tclass_regex}".format(self)) + def _match_object_class(self, obj): """ Match the object class criteria @@ -77,6 +192,11 @@ class MatchPermission(object): perms_regex = False perms_subset = False + def _match_perms_debug(self, log): + """Emit log debugging info for permission matching.""" + log.debug("Perms: {0.perms!r}, regex: {0.perms_regex}, eq: {0.perms_equal}, " + "subset: {0.perms_subset!r}".format(self)) + def _match_perms(self, obj): """ Match the permission criteria @@ -92,5 +212,4 @@ class MatchPermission(object): if self.perms_subset: return obj.perms >= self.perms else: - return self._match_regex_or_set(obj.perms, self.perms, self.perms_equal, - self.perms_regex) + return match_regex_or_set(obj.perms, self.perms, self.perms_equal, self.perms_regex) diff --git a/lib/python2.7/site-packages/setools/mlsrulequery.py b/lib/python2.7/site-packages/setools/mlsrulequery.py index 615964e..f53f7c7 100644..100755 --- a/lib/python2.7/site-packages/setools/mlsrulequery.py +++ b/lib/python2.7/site-packages/setools/mlsrulequery.py @@ -18,11 +18,13 @@ # import logging -from . import mixins, query from .descriptors import CriteriaDescriptor, CriteriaSetDescriptor +from .mixins import MatchObjClass +from .query import PolicyQuery +from .util import match_indirect_regex, match_range -class MLSRuleQuery(mixins.MatchObjClass, query.PolicyQuery): +class MLSRuleQuery(MatchObjClass, PolicyQuery): """ Query MLS rules. @@ -46,8 +48,10 @@ class MLSRuleQuery(mixins.MatchObjClass, query.PolicyQuery): ruletype = CriteriaSetDescriptor(lookup_function="validate_mls_ruletype") source = CriteriaDescriptor("source_regex", "lookup_type_or_attr") source_regex = False + source_indirect = True target = CriteriaDescriptor("target_regex", "lookup_type_or_attr") target_regex = False + target_indirect = True tclass = CriteriaSetDescriptor("tclass_regex", "lookup_class") tclass_regex = False default = CriteriaDescriptor(lookup_function="lookup_range") @@ -56,13 +60,19 @@ class MLSRuleQuery(mixins.MatchObjClass, query.PolicyQuery): default_superset = False default_proper = False + def __init__(self, policy, **kwargs): + super(MLSRuleQuery, self).__init__(policy, **kwargs) + self.log = logging.getLogger(__name__) + def results(self): """Generator which yields all matching MLS rules.""" - self.log.info("Generating results from {0.policy}".format(self)) + self.log.info("Generating MLS rule results from {0.policy}".format(self)) self.log.debug("Ruletypes: {0.ruletype}".format(self)) - self.log.debug("Source: {0.source!r}, regex: {0.source_regex}".format(self)) - self.log.debug("Target: {0.target!r}, regex: {0.target_regex}".format(self)) - self.log.debug("Class: {0.tclass!r}, regex: {0.tclass_regex}".format(self)) + self.log.debug("Source: {0.source!r}, indirect: {0.source_indirect}, " + "regex: {0.source_regex}".format(self)) + self.log.debug("Target: {0.target!r}, indirect: {0.target_indirect}, " + "regex: {0.target_regex}".format(self)) + self._match_object_class_debug(self.log) self.log.debug("Default: {0.default!r}, overlap: {0.default_overlap}, " "subset: {0.default_subset}, superset: {0.default_superset}, " "proper: {0.default_proper}".format(self)) @@ -78,18 +88,20 @@ class MLSRuleQuery(mixins.MatchObjClass, query.PolicyQuery): # # Matching on source type # - if self.source and not self._match_regex( + if self.source and not match_indirect_regex( rule.source, self.source, + self.source_indirect, self.source_regex): continue # # Matching on target type # - if self.target and not self._match_regex( + if self.target and not match_indirect_regex( rule.target, self.target, + self.target_indirect, self.target_regex): continue @@ -102,7 +114,7 @@ class MLSRuleQuery(mixins.MatchObjClass, query.PolicyQuery): # # Matching on range # - if self.default and not self._match_range( + if self.default and not match_range( rule.default, self.default, self.default_subset, diff --git a/lib/python2.7/site-packages/setools/netifconquery.py b/lib/python2.7/site-packages/setools/netifconquery.py index 30db977..125b80b 100644..100755 --- a/lib/python2.7/site-packages/setools/netifconquery.py +++ b/lib/python2.7/site-packages/setools/netifconquery.py @@ -18,11 +18,12 @@ # import logging -from . import compquery -from . import contextquery +from .mixins import MatchContext, MatchName +from .query import PolicyQuery +from .util import match_regex -class NetifconQuery(compquery.ComponentQuery, contextquery.ContextQuery): +class NetifconQuery(MatchContext, MatchName, PolicyQuery): """ Network interface context query. @@ -54,18 +55,18 @@ class NetifconQuery(compquery.ComponentQuery, contextquery.ContextQuery): No effect if not using set operations. """ + def __init__(self, policy, **kwargs): + super(NetifconQuery, self).__init__(policy, **kwargs) + self.log = logging.getLogger(__name__) + def results(self): """Generator which yields all matching netifcons.""" - self.log.info("Generating results from {0.policy}".format(self)) - self.log.debug("Name: {0.name!r}, regex: {0.name_regex}".format(self)) - self.log.debug("User: {0.user!r}, regex: {0.user_regex}".format(self)) - self.log.debug("Role: {0.role!r}, regex: {0.role_regex}".format(self)) - self.log.debug("Type: {0.type_!r}, regex: {0.type_regex}".format(self)) - self.log.debug("Range: {0.range_!r}, subset: {0.range_subset}, overlap: {0.range_overlap}, " - "superset: {0.range_superset}, proper: {0.range_proper}".format(self)) + self.log.info("Generating netifcon results from {0.policy}".format(self)) + self._match_name_debug(self.log) + self._match_context_debug(self.log) for netif in self.policy.netifcons(): - if self.name and not self._match_regex( + if self.name and not match_regex( netif.netif, self.name, self.name_regex): diff --git a/lib/python2.7/site-packages/setools/nodeconquery.py b/lib/python2.7/site-packages/setools/nodeconquery.py index eb21d81..4410f96 100644..100755 --- a/lib/python2.7/site-packages/setools/nodeconquery.py +++ b/lib/python2.7/site-packages/setools/nodeconquery.py @@ -24,10 +24,11 @@ except ImportError: # pragma: no cover import logging from socket import AF_INET, AF_INET6 -from . import contextquery +from .mixins import MatchContext +from .query import PolicyQuery -class NodeconQuery(contextquery.ContextQuery): +class NodeconQuery(MatchContext, PolicyQuery): """ Query nodecon statements. @@ -97,16 +98,16 @@ class NodeconQuery(contextquery.ContextQuery): else: self._network = None + def __init__(self, policy, **kwargs): + super(NodeconQuery, self).__init__(policy, **kwargs) + self.log = logging.getLogger(__name__) + def results(self): """Generator which yields all matching nodecons.""" - self.log.info("Generating results from {0.policy}".format(self)) + self.log.info("Generating nodecon results from {0.policy}".format(self)) self.log.debug("Network: {0.network!r}, overlap: {0.network_overlap}".format(self)) self.log.debug("IP Version: {0.ip_version}".format(self)) - self.log.debug("User: {0.user!r}, regex: {0.user_regex}".format(self)) - self.log.debug("Role: {0.role!r}, regex: {0.role_regex}".format(self)) - self.log.debug("Type: {0.type_!r}, regex: {0.type_regex}".format(self)) - self.log.debug("Range: {0.range_!r}, subset: {0.range_subset}, overlap: {0.range_overlap}, " - "superset: {0.range_superset}, proper: {0.range_proper}".format(self)) + self._match_context_debug(self.log) for nodecon in self.policy.nodecons(): diff --git a/lib/python2.7/site-packages/setools/objclassquery.py b/lib/python2.7/site-packages/setools/objclassquery.py index 8f40df8..7bb1c88 100644..100755 --- a/lib/python2.7/site-packages/setools/objclassquery.py +++ b/lib/python2.7/site-packages/setools/objclassquery.py @@ -19,12 +19,14 @@ import logging import re -from . import compquery from .descriptors import CriteriaDescriptor, CriteriaSetDescriptor +from .mixins import MatchName from .policyrep.exception import NoCommon +from .query import PolicyQuery +from .util import match_regex, match_regex_or_set -class ObjClassQuery(compquery.ComponentQuery): +class ObjClassQuery(MatchName, PolicyQuery): """ Query object classes. @@ -60,10 +62,14 @@ class ObjClassQuery(compquery.ComponentQuery): perms_indirect = True perms_regex = False + def __init__(self, policy, **kwargs): + super(ObjClassQuery, self).__init__(policy, **kwargs) + self.log = logging.getLogger(__name__) + def results(self): """Generator which yields all matching object classes.""" - self.log.info("Generating results from {0.policy}".format(self)) - self.log.debug("Name: {0.name!r}, regex: {0.name_regex}".format(self)) + self.log.info("Generating object class results from {0.policy}".format(self)) + self._match_name_debug(self.log) self.log.debug("Common: {0.common!r}, regex: {0.common_regex}".format(self)) self.log.debug("Perms: {0.perms}, regex: {0.perms_regex}, " "eq: {0.perms_equal}, indirect: {0.perms_indirect}".format(self)) @@ -74,7 +80,7 @@ class ObjClassQuery(compquery.ComponentQuery): if self.common: try: - if not self._match_regex( + if not match_regex( class_.common, self.common, self.common_regex): @@ -91,7 +97,7 @@ class ObjClassQuery(compquery.ComponentQuery): except NoCommon: pass - if not self._match_regex_or_set( + if not match_regex_or_set( perms, self.perms, self.perms_equal, diff --git a/lib/python2.7/site-packages/setools/pcideviceconquery.py b/lib/python2.7/site-packages/setools/pcideviceconquery.py new file mode 100644 index 0000000..666a65c --- /dev/null +++ b/lib/python2.7/site-packages/setools/pcideviceconquery.py @@ -0,0 +1,93 @@ +# Derived from portconquery.py +# +# This file is part of SETools. +# +# SETools 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. +# +# SETools 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 SETools. If not, see +# <http://www.gnu.org/licenses/>. +# +import logging + +from .mixins import MatchContext +from .query import PolicyQuery + + +class PcideviceconQuery(MatchContext, PolicyQuery): + + """ + Pcidevicecon context query. + + Parameter: + policy The policy to query. + + Keyword Parameters/Class attributes: + device A single PCI device ID. + + user The criteria to match the context's user. + user_regex If true, regular expression matching + will be used on the user. + + role The criteria to match the context's role. + role_regex If true, regular expression matching + will be used on the role. + + type_ The criteria to match the context's type. + type_regex If true, regular expression matching + will be used on the type. + + range_ The criteria to match the context's range. + range_subset If true, the criteria will match if it is a subset + of the context's range. + range_overlap If true, the criteria will match if it overlaps + any of the context's range. + range_superset If true, the criteria will match if it is a superset + of the context's range. + range_proper If true, use proper superset/subset operations. + No effect if not using set operations. + """ + + _device = None + + @property + def device(self): + return self._device + + @device.setter + def device(self, value): + if value: + if value < 1: + raise ValueError("PCI device ID must be positive: {0}".format(value)) + + self._device = value + else: + self._device = None + + def __init__(self, policy, **kwargs): + super(PcideviceconQuery, self).__init__(policy, **kwargs) + self.log = logging.getLogger(__name__) + + def results(self): + """Generator which yields all matching pcidevicecons.""" + self.log.info("Generating results from {0.policy}".format(self)) + self.log.debug("Device ID: {0.device!r}".format(self)) + self._match_context_debug(self.log) + + for pcidevicecon in self.policy.pcidevicecons(): + + if self.device and self.device != pcidevicecon.device: + continue + + if not self._match_context(pcidevicecon.context): + continue + + yield pcidevicecon diff --git a/lib/python2.7/site-packages/setools/permmap.py b/lib/python2.7/site-packages/setools/permmap.py index 54cd9f9..55da2fa 100644..100755 --- a/lib/python2.7/site-packages/setools/permmap.py +++ b/lib/python2.7/site-packages/setools/permmap.py @@ -18,26 +18,31 @@ # import sys import logging +import copy +from collections import OrderedDict from errno import ENOENT from . import exception from . import policyrep +from .descriptors import PermissionMapDescriptor + +infoflow_directions = ["r", "w", "b", "n", "u"] +min_weight = 1 +max_weight = 10 class PermissionMap(object): """Permission Map for information flow analysis.""" - valid_infoflow_directions = ["r", "w", "b", "n", "u"] - min_weight = 1 - max_weight = 10 - def __init__(self, permmapfile=None): """ Parameter: permmapfile The path to the permission map to load. """ - self.log = logging.getLogger(self.__class__.__name__) + self.log = logging.getLogger(__name__) + self.permmap = OrderedDict() + self.permmapfile = None if permmapfile: self.load(permmapfile) @@ -52,6 +57,17 @@ class PermissionMap(object): else: raise RuntimeError("Unable to load default permission map.") + def __str__(self): + return self.permmapfile + + def __deepcopy__(self, memo): + newobj = PermissionMap.__new__(PermissionMap) + newobj.log = self.log + newobj.permmap = copy.deepcopy(self.permmap) + newobj.permmapfile = self.permmapfile + memo[id(self)] = newobj + return newobj + def load(self, permmapfile): """ Parameter: @@ -64,11 +80,12 @@ class PermissionMap(object): # 2 = read class name and number of perms # 3 = read perms with open(permmapfile, "r") as mapfile: + total_perms = 0 class_count = 0 num_classes = 0 state = 1 - self.permmap = dict() + self.permmap.clear() for line_num, line in enumerate(mapfile, start=1): entry = line.split() @@ -117,7 +134,7 @@ class PermissionMap(object): "{0}:{1}:Extra class found: {2}". format(permmapfile, line_num, class_name)) - self.permmap[class_name] = dict() + self.permmap[class_name] = OrderedDict() perm_count = 0 state = 3 @@ -125,7 +142,7 @@ class PermissionMap(object): perm_name = str(entry[0]) flow_direction = str(entry[1]) - if flow_direction not in self.valid_infoflow_directions: + if flow_direction not in infoflow_directions: raise exception.PermissionMapParseError( "{0}:{1}:Invalid information flow direction: {2}". format(permmapfile, line_num, entry[1])) @@ -137,20 +154,100 @@ class PermissionMap(object): "{0}:{1}:Invalid permission weight: {2}". format(permmapfile, line_num, entry[2])) - if not self.min_weight <= weight <= self.max_weight: + if not min_weight <= weight <= max_weight: raise exception.PermissionMapParseError( "{0}:{1}:Permission weight must be {3}-{4}: {2}". format(permmapfile, line_num, entry[2], - self.min_weight, self.max_weight)) + min_weight, max_weight)) + + self.log.debug("Read {0}:{1} {2} {3}".format( + class_name, perm_name, flow_direction, weight)) - self.permmap[class_name][perm_name] = {'direction': flow_direction, - 'weight': weight, - 'enabled': True} + if flow_direction == 'u': + self.log.info("Permission {0}:{1} is unmapped.".format( + class_name, perm_name)) + mapping = Mapping(self.permmap, class_name, perm_name, create=True) + mapping.direction = flow_direction + mapping.weight = weight + + total_perms += 1 perm_count += 1 if perm_count >= num_perms: state = 2 + self.permmapfile = permmapfile + self.log.info("Successfully opened permission map \"{0}\"".format(permmapfile)) + self.log.debug("Read {0} classes and {1} total permissions.".format( + class_count, total_perms)) + + def save(self, permmapfile): + """ + Save the permission map to the specified path. Existing files + will be overwritten. + + Parameter: + permmapfile The path to write the permission map. + """ + with open(permmapfile, "w") as mapfile: + self.log.info("Writing permission map to \"{0}\"".format(permmapfile)) + mapfile.write("{0}\n\n".format(len(self.permmap))) + + for classname, perms in self.permmap.items(): + mapfile.write("class {0} {1}\n".format(classname, len(perms))) + + for permname, settings in perms.items(): + direction = settings['direction'] + weight = settings['weight'] + + assert min_weight <= weight <= max_weight, \ + "{0}:{1} weight is out of range ({2}). This is an SETools bug.".format( + classname, permname, weight) + + assert direction in infoflow_directions, \ + "{0}:{1} flow direction ({2}) is invalid. This is an SETools bug.".format( + classname, permname, direction) + + if direction == 'u': + self.log.warning("Warning: permission {0} in class {1} is unmapped.".format( + permname, classname)) + + mapfile.write("{0:>20} {1:>9} {2:>9}\n".format(permname, direction, weight)) + + mapfile.write("\n") + + self.log.info("Successfully wrote permission map to \"{0}\"".format(permmapfile)) + + def classes(self): + """ + Generate class names in the permission map. + + Yield: + class An object class name. + """ + for cls in self.permmap.keys(): + yield cls + + def perms(self, class_): + """ + Generate permission mappings for the specified class. + + Parameter: + class_ An object class name. + + Yield: + Mapping A permission's complete map (weight, direction, enabled) + """ + try: + for perm in self.permmap[class_].keys(): + yield Mapping(self.permmap, class_, perm) + except KeyError: + raise exception.UnmappedClass("{0} is not mapped.".format(class_)) + + def mapping(self, class_, perm): + """Retrieve a specific permission's mapping.""" + return Mapping(self.permmap, class_, perm) + def exclude_class(self, class_): """ Exclude all permissions in an object class for calculating rule weights. @@ -161,14 +258,8 @@ class PermissionMap(object): Exceptions: UnmappedClass The specified object class is not mapped. """ - - classname = str(class_) - - try: - for perm in self.permmap[classname]: - self.permmap[classname][perm]['enabled'] = False - except KeyError: - raise exception.UnmappedClass("{0} is not mapped.".format(classname)) + for perm in self.perms(class_): + perm.enabled = False def exclude_permission(self, class_, permission): """ @@ -182,16 +273,7 @@ class PermissionMap(object): UnmappedClass The specified object class is not mapped. UnmappedPermission The specified permission is not mapped for the object class. """ - classname = str(class_) - - if classname not in self.permmap: - raise exception.UnmappedClass("{0} is not mapped.".format(classname)) - - try: - self.permmap[classname][permission]['enabled'] = False - except KeyError: - raise exception.UnmappedPermission("{0}:{1} is not mapped.". - format(classname, permission)) + Mapping(self.permmap, class_, permission).enabled = False def include_class(self, class_): """ @@ -204,13 +286,8 @@ class PermissionMap(object): UnmappedClass The specified object class is not mapped. """ - classname = str(class_) - - try: - for perm in self.permmap[classname]: - self.permmap[classname][perm]['enabled'] = True - except KeyError: - raise exception.UnmappedClass("{0} is not mapped.".format(classname)) + for perm in self.perms(class_): + perm.enabled = True def include_permission(self, class_, permission): """ @@ -225,16 +302,7 @@ class PermissionMap(object): UnmappedPermission The specified permission is not mapped for the object class. """ - classname = str(class_) - - if classname not in self.permmap: - raise exception.UnmappedClass("{0} is not mapped.".format(classname)) - - try: - self.permmap[classname][permission]['enabled'] = True - except KeyError: - raise exception.UnmappedPermission("{0}:{1} is not mapped.". - format(classname, permission)) + Mapping(self.permmap, class_, permission).enabled = True def map_policy(self, policy): """Create mappings for all classes and permissions in the specified policy.""" @@ -242,8 +310,8 @@ class PermissionMap(object): class_name = str(class_) if class_name not in self.permmap: - self.log.info("Adding unmapped class {0} from {1}".format(class_name, policy)) - self.permmap[class_name] = dict() + self.log.debug("Adding unmapped class {0} from {1}".format(class_name, policy)) + self.permmap[class_name] = OrderedDict() perms = class_.perms @@ -254,11 +322,9 @@ class PermissionMap(object): for perm_name in perms: if perm_name not in self.permmap[class_name]: - self.log.info("Adding unmapped permission {0} in {1} from {2}". - format(perm_name, class_name, policy)) - self.permmap[class_name][perm_name] = {'direction': 'u', - 'weight': 1, - 'enabled': True} + self.log.debug("Adding unmapped permission {0} in {1} from {2}". + format(perm_name, class_name, policy)) + Mapping(self.permmap, class_name, perm_name, create=True) def rule_weight(self, rule): """ @@ -280,29 +346,22 @@ class PermissionMap(object): raise exception.RuleTypeError("{0} rules cannot be used for calculating a weight". format(rule.ruletype)) - if class_name not in self.permmap: - raise exception.UnmappedClass("{0} is not mapped.".format(class_name)) - # iterate over the permissions and determine the # weight of the rule in each direction. The result # is the largest-weight permission in each direction for perm_name in rule.perms: - try: - mapping = self.permmap[class_name][perm_name] - except KeyError: - raise exception.UnmappedPermission("{0}:{1} is not mapped.". - format(class_name, perm_name)) + mapping = Mapping(self.permmap, class_name, perm_name) - if not mapping['enabled']: + if not mapping.enabled: continue - if mapping['direction'] == "r": - read_weight = max(read_weight, mapping['weight']) - elif mapping['direction'] == "w": - write_weight = max(write_weight, mapping['weight']) - elif mapping['direction'] == "b": - read_weight = max(read_weight, mapping['weight']) - write_weight = max(write_weight, mapping['weight']) + if mapping.direction == "r": + read_weight = max(read_weight, mapping.weight) + elif mapping.direction == "w": + write_weight = max(write_weight, mapping.weight) + elif mapping.direction == "b": + read_weight = max(read_weight, mapping.weight) + write_weight = max(write_weight, mapping.weight) return (read_weight, write_weight) @@ -319,20 +378,7 @@ class PermissionMap(object): UnmappedClass The specified object class is not mapped. UnmappedPermission The specified permission is not mapped for the object class. """ - - if direction not in self.valid_infoflow_directions: - raise ValueError("Invalid information flow direction: {0}".format(direction)) - - classname = str(class_) - - if classname not in self.permmap: - raise exception.UnmappedClass("{0} is not mapped.".format(classname)) - - try: - self.permmap[classname][permission]['direction'] = direction - except KeyError: - raise exception.UnmappedPermission("{0}:{1} is not mapped.". - format(classname, permission)) + Mapping(self.permmap, class_, permission).direction = direction def set_weight(self, class_, permission, weight): """ @@ -347,17 +393,61 @@ class PermissionMap(object): UnmappedClass The specified object class is not mapped. UnmappedPermission The specified permission is not mapped for the object class. """ + Mapping(self.permmap, class_, permission).weight = weight - if not self.min_weight <= weight <= self.max_weight: - raise ValueError("Permission weights must be 1-10: {0}".format(weight)) - classname = str(class_) +# +# Settings Validation Functions +# +def validate_weight(weight): + if not min_weight <= weight <= max_weight: + raise ValueError("Permission weights must be 1-10: {0}".format(weight)) - if classname not in self.permmap: - raise exception.UnmappedClass("{0} is not mapped.".format(classname)) + return weight - try: - self.permmap[classname][permission]['weight'] = weight - except KeyError: - raise exception.UnmappedPermission("{0}:{1} is not mapped.". - format(classname, permission)) + +def validate_direction(direction): + if direction not in infoflow_directions: + raise ValueError("Invalid information flow direction: {0}".format(direction)) + + return direction + + +def validate_enabled(enabled): + return bool(enabled) + + +class Mapping(object): + + """A mapping for a permission in the permission map.""" + + weight = PermissionMapDescriptor("weight", validate_weight) + direction = PermissionMapDescriptor("direction", validate_direction) + enabled = PermissionMapDescriptor("enabled", validate_enabled) + + def __init__(self, perm_map, classname, permission, create=False): + self.perm_map = perm_map + self.class_ = classname + self.perm = permission + + if create: + if classname not in self.perm_map: + self.perm_map[classname] = OrderedDict() + + self.perm_map[classname][permission] = {'direction': 'u', + 'weight': 1, + 'enabled': True} + + else: + if classname not in self.perm_map: + raise exception.UnmappedClass("{0} is not mapped.".format(classname)) + + if permission not in self.perm_map[classname]: + raise exception.UnmappedPermission("{0}:{1} is not mapped.". + format(classname, permission)) + + def __lt__(self, other): + if self.class_ == other.class_: + return self.perm < other.perm + else: + return self.class_ < other.class_ diff --git a/lib/python2.7/site-packages/setools/pirqconquery.py b/lib/python2.7/site-packages/setools/pirqconquery.py new file mode 100644 index 0000000..529a5ee --- /dev/null +++ b/lib/python2.7/site-packages/setools/pirqconquery.py @@ -0,0 +1,93 @@ +# Derived from portconquery.py +# +# This file is part of SETools. +# +# SETools 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. +# +# SETools 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 SETools. If not, see +# <http://www.gnu.org/licenses/>. +# +import logging + +from .mixins import MatchContext +from .query import PolicyQuery + + +class PirqconQuery(MatchContext, PolicyQuery): + + """ + Pirqcon context query. + + Parameter: + policy The policy to query. + + Keyword Parameters/Class attributes: + irq A single IRQ value. + + user The criteria to match the context's user. + user_regex If true, regular expression matching + will be used on the user. + + role The criteria to match the context's role. + role_regex If true, regular expression matching + will be used on the role. + + type_ The criteria to match the context's type. + type_regex If true, regular expression matching + will be used on the type. + + range_ The criteria to match the context's range. + range_subset If true, the criteria will match if it is a subset + of the context's range. + range_overlap If true, the criteria will match if it overlaps + any of the context's range. + range_superset If true, the criteria will match if it is a superset + of the context's range. + range_proper If true, use proper superset/subset operations. + No effect if not using set operations. + """ + + _irq = None + + @property + def irq(self): + return self._irq + + @irq.setter + def irq(self, value): + if value: + if value < 1: + raise ValueError("The IRQ must be positive: {0}".format(value)) + + self._irq = value + else: + self._irq = None + + def __init__(self, policy, **kwargs): + super(PirqconQuery, self).__init__(policy, **kwargs) + self.log = logging.getLogger(__name__) + + def results(self): + """Generator which yields all matching pirqcons.""" + self.log.info("Generating results from {0.policy}".format(self)) + self.log.debug("IRQ: {0.irq!r}".format(self)) + self._match_context_debug(self.log) + + for pirqcon in self.policy.pirqcons(): + + if self.irq and self.irq != pirqcon.irq: + continue + + if not self._match_context(pirqcon.context): + continue + + yield pirqcon diff --git a/lib/python2.7/site-packages/setools/polcapquery.py b/lib/python2.7/site-packages/setools/polcapquery.py index e024b05..34ca769 100644..100755 --- a/lib/python2.7/site-packages/setools/polcapquery.py +++ b/lib/python2.7/site-packages/setools/polcapquery.py @@ -18,10 +18,11 @@ # import logging -from . import compquery +from .mixins import MatchName +from .query import PolicyQuery -class PolCapQuery(compquery.ComponentQuery): +class PolCapQuery(MatchName, PolicyQuery): """ Query SELinux policy capabilities @@ -35,10 +36,14 @@ class PolCapQuery(compquery.ComponentQuery): be used for matching the name. """ + def __init__(self, policy, **kwargs): + super(PolCapQuery, self).__init__(policy, **kwargs) + self.log = logging.getLogger(__name__) + def results(self): """Generator which yields all matching policy capabilities.""" - self.log.info("Generating results from {0.policy}".format(self)) - self.log.debug("Name: {0.name!r}, regex: {0.name_regex}".format(self)) + self.log.info("Generating policy capability results from {0.policy}".format(self)) + self._match_name_debug(self.log) for cap in self.policy.polcaps(): if not self._match_name(cap): diff --git a/lib/python2.7/site-packages/setools/policyrep/__init__.py b/lib/python2.7/site-packages/setools/policyrep/__init__.py index 5894cdb..be305bb 100644..100755 --- a/lib/python2.7/site-packages/setools/policyrep/__init__.py +++ b/lib/python2.7/site-packages/setools/policyrep/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2014-2015, Tresys Technology, LLC +# Copyright 2014-2016, Tresys Technology, LLC # # This file is part of SETools. # @@ -41,11 +41,9 @@ from . import qpol # This also makes sense since an object would only # be valid for the policy it comes from. -# Exceptions -from . import exception - # Components from . import boolcond +from . import bounds from . import default from . import mls from . import objclass @@ -67,6 +65,14 @@ from . import fscontext from . import initsid from . import netcontext +# Xen +from . import xencontext + +# Classes useful for policyrep users: +from . import exception +from .netcontext import PortconProtocol, port_range +from .terule import ioctlSet + class SELinuxPolicy(object): @@ -78,7 +84,7 @@ class SELinuxPolicy(object): policyfile Path to a policy to open. """ - self.log = logging.getLogger(self.__class__.__name__) + self.log = logging.getLogger(__name__) self.policy = None self.filename = None @@ -166,6 +172,11 @@ class SELinuxPolicy(object): """The policy database version (e.g. v29)""" return self.policy.version() + @property + def target_platform(self): + """The policy platform (selinux or xen)""" + return self.policy.target_platform() + # # Policy statistics # @@ -176,11 +187,21 @@ class SELinuxPolicy(object): return self.policy.avrule_allow_count() @property + def allowxperm_count(self): + """The number of allowxperm rules.""" + return self.policy.avrule_allowx_count() + + @property def auditallow_count(self): """The number of auditallow rules.""" return self.policy.avrule_auditallow_count() @property + def auditallowxperm_count(self): + """The number of auditallowxperm rules.""" + return self.policy.avrule_auditallowx_count() + + @property def boolean_count(self): """The number of Booleans.""" return self.policy.bool_count() @@ -216,11 +237,21 @@ class SELinuxPolicy(object): return sum(1 for d in self.defaults()) @property + def devicetreecon_count(self): + """The number of Xen devicetreecon statements.""" + return self.policy.devicetreecon_count() + + @property def dontaudit_count(self): """The number of dontaudit rules.""" return self.policy.avrule_dontaudit_count() @property + def dontauditxperm_count(self): + """The number of dontauditxperm rules.""" + return self.policy.avrule_dontauditx_count() + + @property def fs_use_count(self): """fs_use_* statements.""" return self.policy.fs_use_count() @@ -236,6 +267,16 @@ class SELinuxPolicy(object): return self.policy.isid_count() @property + def iomemcon_count(self): + """The number of Xen iomemcon statements.""" + return self.policy.iomemcon_count() + + @property + def ioportcon_count(self): + """The number of Xen ioportcon statements.""" + return self.policy.ioportcon_count() + + @property def level_count(self): """The number of levels.""" return sum(1 for _ in self.levels()) @@ -261,11 +302,21 @@ class SELinuxPolicy(object): return self.policy.avrule_neverallow_count() @property + def neverallowxperm_count(self): + """The number of neverallowxperm rules.""" + return self.policy.avrule_neverallowx_count() + + @property def nodecon_count(self): """The number of nodecon statements.""" return self.policy.nodecon_count() @property + def pcidevicecon_count(self): + """The number of Xen pcidevicecon statements.""" + return self.policy.pcidevicecon_count() + + @property def permission_count(self): """The number of permissions.""" return sum(len(c.perms) for c in chain(self.commons(), self.classes())) @@ -276,6 +327,11 @@ class SELinuxPolicy(object): return self.policy.permissive_count() @property + def pirqcon_count(self): + """The number of Xen pirqcon statements.""" + return self.policy.pirqcon_count() + + @property def polcap_count(self): """The number of policy capabilities.""" return self.policy.polcap_count() @@ -331,6 +387,11 @@ class SELinuxPolicy(object): return self.policy.terule_trans_count() + self.policy.filename_trans_count() @property + def typebounds_count(self): + """The number of typebounds rules.""" + return sum(1 for b in self.bounds() if b.ruletype == "typebounds") + + @property def user_count(self): """The number of users.""" return self.policy.user_count() @@ -400,6 +461,11 @@ class SELinuxPolicy(object): for bool_ in self.policy.bool_iter(): yield boolcond.boolean_factory(self.policy, bool_) + def bounds(self): + """Generator which yields all *bounds statements (typebounds, etc.)""" + for bound in self.policy.typebounds_iter(): + yield bounds.bounds_factory(self.policy, bound) + def categories(self): """Generator which yields all MLS categories.""" for cat in self.policy.cat_iter(): @@ -500,6 +566,7 @@ class SELinuxPolicy(object): def terules(self): """Generator which yields all type enforcement rules.""" for rule in chain(self.policy.avrule_iter(), + self.policy.avrulex_iter(), self.policy.terule_iter(), self.policy.filename_trans_iter()): yield terule.te_rule_factory(self.policy, rule) @@ -508,6 +575,11 @@ class SELinuxPolicy(object): # Policy rule type validators # @staticmethod + def validate_bounds_ruletype(types): + """Validate constraint types.""" + return bounds.validate_ruletype(types) + + @staticmethod def validate_constraint_ruletype(types): """Validate constraint types.""" return constraint.validate_ruletype(types) @@ -590,3 +662,31 @@ class SELinuxPolicy(object): """Generator which yields all portcon statements.""" for port in self.policy.portcon_iter(): yield netcontext.portcon_factory(self.policy, port) + + # + # Xen labeling statements + # + def iomemcons(self): + """Generator which yields all iomemcon statements.""" + for mem_addr in self.policy.iomemcon_iter(): + yield xencontext.iomemcon_factory(self.policy, mem_addr) + + def ioportcons(self): + """Generator which yields all ioportcon statements.""" + for port in self.policy.ioportcon_iter(): + yield xencontext.ioportcon_factory(self.policy, port) + + def pcidevicecons(self): + """Generator which yields all pcidevicecon statements.""" + for device in self.policy.pcidevicecon_iter(): + yield xencontext.pcidevicecon_factory(self.policy, device) + + def pirqcons(self): + """Generator which yields all pirqcon statements.""" + for irq in self.policy.pirqcon_iter(): + yield xencontext.pirqcon_factory(self.policy, irq) + + def devicetreecons(self): + """Generator which yields all devicetreecon statements.""" + for path in self.policy.devicetreecon_iter(): + yield xencontext.devicetreecon_factory(self.policy, path) diff --git a/lib/python2.7/site-packages/setools/policyrep/_qpol.py b/lib/python2.7/site-packages/setools/policyrep/_qpol.py index 97a341e..97a341e 100644..100755 --- a/lib/python2.7/site-packages/setools/policyrep/_qpol.py +++ b/lib/python2.7/site-packages/setools/policyrep/_qpol.py diff --git a/lib/python2.7/site-packages/setools/policyrep/_qpol.so b/lib/python2.7/site-packages/setools/policyrep/_qpol.so Binary files differindex f459582..ce80c45 100755 --- a/lib/python2.7/site-packages/setools/policyrep/_qpol.so +++ b/lib/python2.7/site-packages/setools/policyrep/_qpol.so diff --git a/lib/python2.7/site-packages/setools/policyrep/boolcond.py b/lib/python2.7/site-packages/setools/policyrep/boolcond.py index f7df2c5..f7df2c5 100644..100755 --- a/lib/python2.7/site-packages/setools/policyrep/boolcond.py +++ b/lib/python2.7/site-packages/setools/policyrep/boolcond.py diff --git a/lib/python2.7/site-packages/setools/policyrep/bounds.py b/lib/python2.7/site-packages/setools/policyrep/bounds.py new file mode 100755 index 0000000..469ddef --- /dev/null +++ b/lib/python2.7/site-packages/setools/policyrep/bounds.py @@ -0,0 +1,60 @@ +# Copyright 2016, Tresys Technology, LLC +# +# This file is part of SETools. +# +# SETools 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. +# +# SETools 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 SETools. If not, see +# <http://www.gnu.org/licenses/>. +# +from . import exception +from .symbol import PolicySymbol +from .qpol import qpol_typebounds_t +from .typeattr import type_factory + + +def bounds_factory(policy, sym): + """Factory for creating bounds statement objects.""" + + if isinstance(sym, qpol_typebounds_t): + return Bounds(policy, sym) + else: + raise TypeError("typebounds rules cannot be looked up.") + + +def validate_ruletype(t): + """Validate *bounds rule types.""" + if t not in ["typebounds"]: + raise exception.InvalidBoundsType("{0} is not a valid *bounds rule type.".format(t)) + + return t + + +class Bounds(PolicySymbol): + + """A typebounds statement.""" + + def __str__(self): + return "{0.ruletype} {0.parent} {0.child};".format(self) + + def __hash__(self): + return hash("{0.ruletype}|{0.child};".format(self)) + + ruletype = "typebounds" + + @property + def parent(self): + return type_factory(self.policy, self.qpol_symbol.parent_name(self.policy)) + + @property + def child(self): + return type_factory(self.policy, self.qpol_symbol.child_name(self.policy)) diff --git a/lib/python2.7/site-packages/setools/policyrep/constraint.py b/lib/python2.7/site-packages/setools/policyrep/constraint.py index abaa6d1..4437761 100644..100755 --- a/lib/python2.7/site-packages/setools/policyrep/constraint.py +++ b/lib/python2.7/site-packages/setools/policyrep/constraint.py @@ -1,4 +1,4 @@ -# Copyright 2014-2015, Tresys Technology, LLC +# Copyright 2014-2016, Tresys Technology, LLC # # This file is part of SETools. # @@ -16,13 +16,13 @@ # License along with SETools. If not, see # <http://www.gnu.org/licenses/>. # -from . import exception from . import qpol -from . import role -from . import symbol -from . import objclass -from . import typeattr -from . import user +from .exception import ConstraintUseError, InvalidConstraintType +from .role import role_factory +from .symbol import PolicySymbol +from .objclass import class_factory +from .typeattr import type_or_attr_factory +from .user import user_factory def _is_mls(policy, sym): @@ -41,7 +41,7 @@ def _is_mls(policy, sym): def validate_ruletype(t): """Validate constraint rule types.""" if t not in ["constrain", "mlsconstrain", "validatetrans", "mlsvalidatetrans"]: - raise exception.InvalidConstraintType("{0} is not a valid constraint type.".format(t)) + raise InvalidConstraintType("{0} is not a valid constraint type.".format(t)) return t @@ -65,127 +65,213 @@ def constraint_factory(policy, sym): raise TypeError("Constraints cannot be looked-up.") -class BaseConstraint(symbol.PolicySymbol): +class BaseConstraint(PolicySymbol): """Base class for constraint rules.""" - _expr_type_to_text = { - qpol.QPOL_CEXPR_TYPE_NOT: "not", - qpol.QPOL_CEXPR_TYPE_AND: "and", - qpol.QPOL_CEXPR_TYPE_OR: "\n\tor"} - - _expr_op_to_text = { - qpol.QPOL_CEXPR_OP_EQ: "==", - qpol.QPOL_CEXPR_OP_NEQ: "!=", - qpol.QPOL_CEXPR_OP_DOM: "dom", - qpol.QPOL_CEXPR_OP_DOMBY: "domby", - qpol.QPOL_CEXPR_OP_INCOMP: "incomp"} - - _sym_to_text = { - qpol.QPOL_CEXPR_SYM_USER: "u1", - qpol.QPOL_CEXPR_SYM_ROLE: "r1", - qpol.QPOL_CEXPR_SYM_TYPE: "t1", - qpol.QPOL_CEXPR_SYM_USER + qpol.QPOL_CEXPR_SYM_TARGET: "u2", - qpol.QPOL_CEXPR_SYM_ROLE + qpol.QPOL_CEXPR_SYM_TARGET: "r2", - qpol.QPOL_CEXPR_SYM_TYPE + qpol.QPOL_CEXPR_SYM_TARGET: "t2", - qpol.QPOL_CEXPR_SYM_USER + qpol.QPOL_CEXPR_SYM_XTARGET: "u3", - qpol.QPOL_CEXPR_SYM_ROLE + qpol.QPOL_CEXPR_SYM_XTARGET: "r3", - qpol.QPOL_CEXPR_SYM_TYPE + qpol.QPOL_CEXPR_SYM_XTARGET: "t3", - qpol.QPOL_CEXPR_SYM_L1L2: "l1", - qpol.QPOL_CEXPR_SYM_L1H2: "l1", - qpol.QPOL_CEXPR_SYM_H1L2: "h1", - qpol.QPOL_CEXPR_SYM_H1H2: "h1", - qpol.QPOL_CEXPR_SYM_L1H1: "l1", - qpol.QPOL_CEXPR_SYM_L2H2: "l2", - qpol.QPOL_CEXPR_SYM_L1L2 + qpol.QPOL_CEXPR_SYM_TARGET: "l2", - qpol.QPOL_CEXPR_SYM_L1H2 + qpol.QPOL_CEXPR_SYM_TARGET: "h2", - qpol.QPOL_CEXPR_SYM_H1L2 + qpol.QPOL_CEXPR_SYM_TARGET: "l2", - qpol.QPOL_CEXPR_SYM_H1H2 + qpol.QPOL_CEXPR_SYM_TARGET: "h2", - qpol.QPOL_CEXPR_SYM_L1H1 + qpol.QPOL_CEXPR_SYM_TARGET: "h1", - qpol.QPOL_CEXPR_SYM_L2H2 + qpol.QPOL_CEXPR_SYM_TARGET: "h2"} - - # Boolean operators - _expr_type_to_precedence = { - qpol.QPOL_CEXPR_TYPE_NOT: 3, - qpol.QPOL_CEXPR_TYPE_AND: 2, - qpol.QPOL_CEXPR_TYPE_OR: 1} - - # Logical operators have the same precedence - _logical_op_precedence = 4 + _role_syms = [qpol.QPOL_CEXPR_SYM_ROLE, + qpol.QPOL_CEXPR_SYM_ROLE + qpol.QPOL_CEXPR_SYM_TARGET, + qpol.QPOL_CEXPR_SYM_ROLE + qpol.QPOL_CEXPR_SYM_XTARGET] + + _type_syms = [qpol.QPOL_CEXPR_SYM_TYPE, + qpol.QPOL_CEXPR_SYM_TYPE + qpol.QPOL_CEXPR_SYM_TARGET, + qpol.QPOL_CEXPR_SYM_TYPE + qpol.QPOL_CEXPR_SYM_XTARGET] + + _user_syms = [qpol.QPOL_CEXPR_SYM_USER, + qpol.QPOL_CEXPR_SYM_USER + qpol.QPOL_CEXPR_SYM_TARGET, + qpol.QPOL_CEXPR_SYM_USER + qpol.QPOL_CEXPR_SYM_XTARGET] def __init__(self, policy, qpol_symbol, ruletype): - symbol.PolicySymbol.__init__(self, policy, qpol_symbol) + PolicySymbol.__init__(self, policy, qpol_symbol) self.ruletype = ruletype def __str__(self): raise NotImplementedError - def _build_expression(self): + # There is no levels function as specific + # levels cannot be used in expressions, only + # the l1, h1, etc. symbols + + @property + def roles(self): + """The roles used in the expression.""" + return set(self._get_symbols(self._role_syms, role_factory)) + + @property + def perms(self): + raise NotImplementedError + + def statement(self): + return str(self) + + @property + def tclass(self): + """Object class for this constraint.""" + return class_factory(self.policy, self.qpol_symbol.object_class(self.policy)) + + @property + def types(self): + """The types and type attributes used in the expression.""" + + return set(self._get_symbols(self._type_syms, type_or_attr_factory)) + + @property + def users(self): + """The users used in the expression.""" + return set(self._get_symbols(self._user_syms, user_factory)) + + def expression(self): + """ + The constraint's expression in infix notation. + + Return: list + """ + + _precedence = { + "not": 4, + "and": 2, + "or": 1, + "==": 3, + "!=": 3, + "dom": 3, + "domby": 3, + "incomp": 3} + + _max_precedence = 4 + + _operands = ["u1", "u2", "u3", + "r1", "r2", "r3", + "t1", "t2", "t3", + "l1", "l2", + "h1", "h2"] + # qpol representation is in postfix notation. This code # converts it to infix notation. Parentheses are added # to ensure correct expressions, though they may end up # being overused. Set previous operator at start to the # highest precedence (op) so if there is a single binary # operator, no parentheses are output - stack = [] - prev_op_precedence = self._logical_op_precedence + prev_op_precedence = _max_precedence + for op in self.postfix_expression(): + if isinstance(op, frozenset) or op in _operands: + # operands + stack.append(op) + else: + # operators + if op == "not": + # unary operator + operator = op + operand = stack.pop() + op_precedence = _precedence[op] + stack.append([operator, "(", operand, ")"]) + else: + # binary operators + operand2 = stack.pop() + operand1 = stack.pop() + operator = op + + # if previous operator is of higher precedence + # no parentheses are needed. + if _precedence[op] < prev_op_precedence: + stack.append([operand1, operator, operand2]) + else: + stack.append(["(", operand1, operator, operand2, ")"]) + + prev_op_precedence = _precedence[op] + + return self._flatten_expression(stack) + + def postfix_expression(self): + """ + The constraint's expression in postfix notation. + + Return: list + """ + + _expr_type_to_text = { + qpol.QPOL_CEXPR_TYPE_NOT: "not", + qpol.QPOL_CEXPR_TYPE_AND: "and", + qpol.QPOL_CEXPR_TYPE_OR: "or"} + + _expr_op_to_text = { + qpol.QPOL_CEXPR_OP_EQ: "==", + qpol.QPOL_CEXPR_OP_NEQ: "!=", + qpol.QPOL_CEXPR_OP_DOM: "dom", + qpol.QPOL_CEXPR_OP_DOMBY: "domby", + qpol.QPOL_CEXPR_OP_INCOMP: "incomp"} + + _sym_to_text = { + qpol.QPOL_CEXPR_SYM_USER: "u1", + qpol.QPOL_CEXPR_SYM_ROLE: "r1", + qpol.QPOL_CEXPR_SYM_TYPE: "t1", + qpol.QPOL_CEXPR_SYM_USER + qpol.QPOL_CEXPR_SYM_TARGET: "u2", + qpol.QPOL_CEXPR_SYM_ROLE + qpol.QPOL_CEXPR_SYM_TARGET: "r2", + qpol.QPOL_CEXPR_SYM_TYPE + qpol.QPOL_CEXPR_SYM_TARGET: "t2", + qpol.QPOL_CEXPR_SYM_USER + qpol.QPOL_CEXPR_SYM_XTARGET: "u3", + qpol.QPOL_CEXPR_SYM_ROLE + qpol.QPOL_CEXPR_SYM_XTARGET: "r3", + qpol.QPOL_CEXPR_SYM_TYPE + qpol.QPOL_CEXPR_SYM_XTARGET: "t3", + qpol.QPOL_CEXPR_SYM_L1L2: "l1", + qpol.QPOL_CEXPR_SYM_L1H2: "l1", + qpol.QPOL_CEXPR_SYM_H1L2: "h1", + qpol.QPOL_CEXPR_SYM_H1H2: "h1", + qpol.QPOL_CEXPR_SYM_L1H1: "l1", + qpol.QPOL_CEXPR_SYM_L2H2: "l2", + qpol.QPOL_CEXPR_SYM_L1L2 + qpol.QPOL_CEXPR_SYM_TARGET: "l2", + qpol.QPOL_CEXPR_SYM_L1H2 + qpol.QPOL_CEXPR_SYM_TARGET: "h2", + qpol.QPOL_CEXPR_SYM_H1L2 + qpol.QPOL_CEXPR_SYM_TARGET: "l2", + qpol.QPOL_CEXPR_SYM_H1H2 + qpol.QPOL_CEXPR_SYM_TARGET: "h2", + qpol.QPOL_CEXPR_SYM_L1H1 + qpol.QPOL_CEXPR_SYM_TARGET: "h1", + qpol.QPOL_CEXPR_SYM_L2H2 + qpol.QPOL_CEXPR_SYM_TARGET: "h2"} + + expression = [] for expr_node in self.qpol_symbol.expr_iter(self.policy): op = expr_node.op(self.policy) sym_type = expr_node.sym_type(self.policy) expr_type = expr_node.expr_type(self.policy) if expr_type == qpol.QPOL_CEXPR_TYPE_ATTR: - # logical operator with symbol (e.g. u1 == u2) - operand1 = self._sym_to_text[sym_type] - operand2 = self._sym_to_text[sym_type + qpol.QPOL_CEXPR_SYM_TARGET] - operator = self._expr_op_to_text[op] + # logical operator with symbols (e.g. u1 == u2) + operand1 = _sym_to_text[sym_type] + operand2 = _sym_to_text[sym_type + qpol.QPOL_CEXPR_SYM_TARGET] + operator = _expr_op_to_text[op] - stack.append([operand1, operator, operand2]) - - prev_op_precedence = self._logical_op_precedence + expression.extend([operand1, operand2, operator]) elif expr_type == qpol.QPOL_CEXPR_TYPE_NAMES: # logical operator with type or attribute list (e.g. t1 == { spam_t eggs_t }) - operand1 = self._sym_to_text[sym_type] - operator = self._expr_op_to_text[op] + operand1 = _sym_to_text[sym_type] + operator = _expr_op_to_text[op] names = list(expr_node.names_iter(self.policy)) - if not names: - operand2 = "<empty set>" - elif len(names) == 1: - operand2 = names[0] + if sym_type in self._role_syms: + operand2 = frozenset(role_factory(self.policy, n) for n in names) + elif sym_type in self._type_syms: + operand2 = frozenset(type_or_attr_factory(self.policy, n) for n in names) else: - operand2 = "{{ {0} }}".format(' '.join(names)) + operand2 = frozenset(user_factory(self.policy, n) for n in names) - stack.append([operand1, operator, operand2]) + expression.extend([operand1, operand2, operator]) + else: + # individual operators (and/or/not) + expression.append(_expr_type_to_text[expr_type]) - prev_op_precedence = self._logical_op_precedence - elif expr_type == qpol.QPOL_CEXPR_TYPE_NOT: - # unary operator (not) - operand = stack.pop() - operator = self._expr_type_to_text[expr_type] + return expression - stack.append([operator, "(", operand, ")"]) + # + # Internal functions + # + def _flatten_expression(self, expr): + """Flatten the expression into a flat list.""" + ret = [] - prev_op_precedence = self._expr_type_to_precedence[expr_type] + for i in expr: + if isinstance(i, list): + ret.extend(self._flatten_expression(i)) else: - # binary operator (and/or) - operand1 = stack.pop() - operand2 = stack.pop() - operator = self._expr_type_to_text[expr_type] - op_precedence = self._expr_type_to_precedence[expr_type] - - # if previous operator is of higher precedence - # no parentheses are needed. - if op_precedence < prev_op_precedence: - stack.append([operand1, operator, operand2]) - else: - stack.append(["(", operand1, operator, operand2, ")"]) - - prev_op_precedence = op_precedence + ret.append(i) - return self.__unwind_subexpression(stack) + return ret def _get_symbols(self, syms, factory): """ @@ -205,60 +291,21 @@ class BaseConstraint(symbol.PolicySymbol): for s in expr_node.names_iter(self.policy): yield factory(self.policy, s) - def __unwind_subexpression(self, expr): + @staticmethod + def _expression_str(expr): + """Generate the string representation of the expression.""" ret = [] - # do a string.join on sublists (subexpressions) - for i in expr: - if isinstance(i, list): - ret.append(self.__unwind_subexpression(i)) + for item in expr: + if isinstance(item, frozenset): + if len(item) > 1: + ret.append("{{ {0} }} ".format(" ".join(str(j) for j in item))) + else: + ret.append("{0}".format(" ".join(str(j) for j in item))) else: - ret.append(i) - - return ' '.join(ret) - - # There is no levels function as specific - # levels cannot be used in expressions, only - # the l1, h1, etc. symbols - - @property - def roles(self): - """The roles used in the expression.""" - role_syms = [qpol.QPOL_CEXPR_SYM_ROLE, - qpol.QPOL_CEXPR_SYM_ROLE + qpol.QPOL_CEXPR_SYM_TARGET, - qpol.QPOL_CEXPR_SYM_ROLE + qpol.QPOL_CEXPR_SYM_XTARGET] - - return set(self._get_symbols(role_syms, role.role_factory)) - - @property - def perms(self): - raise NotImplementedError - - def statement(self): - return str(self) - - @property - def tclass(self): - """Object class for this constraint.""" - return objclass.class_factory(self.policy, self.qpol_symbol.object_class(self.policy)) - - @property - def types(self): - """The types and type attributes used in the expression.""" - type_syms = [qpol.QPOL_CEXPR_SYM_TYPE, - qpol.QPOL_CEXPR_SYM_TYPE + qpol.QPOL_CEXPR_SYM_TARGET, - qpol.QPOL_CEXPR_SYM_TYPE + qpol.QPOL_CEXPR_SYM_XTARGET] - - return set(self._get_symbols(type_syms, typeattr.type_or_attr_factory)) - - @property - def users(self): - """The users used in the expression.""" - user_syms = [qpol.QPOL_CEXPR_SYM_USER, - qpol.QPOL_CEXPR_SYM_USER + qpol.QPOL_CEXPR_SYM_TARGET, - qpol.QPOL_CEXPR_SYM_USER + qpol.QPOL_CEXPR_SYM_XTARGET] + ret.append(item) - return set(self._get_symbols(user_syms, user.user_factory)) + return " ".join(ret) class Constraint(BaseConstraint): @@ -270,12 +317,12 @@ class Constraint(BaseConstraint): perms = self.perms if len(perms) > 1: - rule_string += "{{ {0} }} (\n".format(' '.join(perms)) + rule_string += "{{ {0} }} (".format(' '.join(perms)) else: # convert to list since sets cannot be indexed - rule_string += "{0} (\n".format(list(perms)[0]) + rule_string += "{0} (".format(list(perms)[0]) - rule_string += "\t{0}\n);".format(self._build_expression()) + rule_string += "{0});".format(self._expression_str(self.expression())) return rule_string @@ -290,9 +337,9 @@ class Validatetrans(BaseConstraint): """A validatetrans rule (validatetrans/mlsvalidatetrans).""" def __str__(self): - return "{0.ruletype} {0.tclass}\n\t{1}\n);".format(self, self._build_expression()) + return "{0.ruletype} {0.tclass} ({1});".format(self, + self._expression_str(self.expression())) @property def perms(self): - raise exception.ConstraintUseError("{0} rules do not have permissions.". - format(self.ruletype)) + raise ConstraintUseError("{0} rules do not have permissions.".format(self.ruletype)) diff --git a/lib/python2.7/site-packages/setools/policyrep/context.py b/lib/python2.7/site-packages/setools/policyrep/context.py index f2f3fc7..f2f3fc7 100644..100755 --- a/lib/python2.7/site-packages/setools/policyrep/context.py +++ b/lib/python2.7/site-packages/setools/policyrep/context.py diff --git a/lib/python2.7/site-packages/setools/policyrep/default.py b/lib/python2.7/site-packages/setools/policyrep/default.py index 40c7197..40c7197 100644..100755 --- a/lib/python2.7/site-packages/setools/policyrep/default.py +++ b/lib/python2.7/site-packages/setools/policyrep/default.py diff --git a/lib/python2.7/site-packages/setools/policyrep/exception.py b/lib/python2.7/site-packages/setools/policyrep/exception.py index bab5792..f29b467 100644..100755 --- a/lib/python2.7/site-packages/setools/policyrep/exception.py +++ b/lib/python2.7/site-packages/setools/policyrep/exception.py @@ -150,10 +150,15 @@ class InvalidRuleType(InvalidSymbol): pass +class InvalidBoundsType(InvalidSymbol): + + """Exception for invalid *bounds rule types.""" + pass + + class InvalidConstraintType(InvalidSymbol): """Exception for invalid constraint types.""" - # This is not a rule but is similar. pass diff --git a/lib/python2.7/site-packages/setools/policyrep/fscontext.py b/lib/python2.7/site-packages/setools/policyrep/fscontext.py index 1dc648e..1dc648e 100644..100755 --- a/lib/python2.7/site-packages/setools/policyrep/fscontext.py +++ b/lib/python2.7/site-packages/setools/policyrep/fscontext.py diff --git a/lib/python2.7/site-packages/setools/policyrep/initsid.py b/lib/python2.7/site-packages/setools/policyrep/initsid.py index 0197c74..0197c74 100644..100755 --- a/lib/python2.7/site-packages/setools/policyrep/initsid.py +++ b/lib/python2.7/site-packages/setools/policyrep/initsid.py diff --git a/lib/python2.7/site-packages/setools/policyrep/mls.py b/lib/python2.7/site-packages/setools/policyrep/mls.py index 65a5ddc..68662c4 100644..100755 --- a/lib/python2.7/site-packages/setools/policyrep/mls.py +++ b/lib/python2.7/site-packages/setools/policyrep/mls.py @@ -109,7 +109,7 @@ def level_factory(policy, sym): try: semantic_level = qpol.qpol_semantic_level_t(policy, sens) except ValueError: - raise exception.InvalidLevel("{0} is invalid ({1} is not a valid sensitivity)". + raise exception.InvalidLevel("{0} is not a valid level ({1} is not a valid sensitivity)". format(sym, sens)) try: @@ -125,23 +125,25 @@ def level_factory(policy, sym): semantic_level.add_cats(policy, catrange[0], catrange[1]) except ValueError: raise exception.InvalidLevel( - "{0} is invalid ({1} is not a valid category range)".format(sym, group)) + "{0} is not a valid level ({1} is not a valid category range)". + format(sym, group)) elif len(catrange) == 1: try: semantic_level.add_cats(policy, catrange[0], catrange[0]) except ValueError: - raise exception.InvalidLevel("{0} is invalid ({1} is not a valid category)". - format(sym, group)) + raise exception.InvalidLevel( + "{0} is not a valid level ({1} is not a valid category)".format(sym, group)) else: - raise exception.InvalidLevel("{0} is invalid (level parsing error)".format(sym)) + raise exception.InvalidLevel( + "{0} is not a valid level (level parsing error)".format(sym)) # convert to level object try: policy_level = qpol.qpol_mls_level_t(policy, semantic_level) except ValueError: raise exception.InvalidLevel( - "{0} is invalid (one or more categories are not associated with the sensitivity)". - format(sym)) + "{0} is not a valid level (one or more categories are not associated with the " + "sensitivity)".format(sym)) return Level(policy, policy_level) diff --git a/lib/python2.7/site-packages/setools/policyrep/mlsrule.py b/lib/python2.7/site-packages/setools/policyrep/mlsrule.py index 77f2df4..c4f3a3a 100644..100755 --- a/lib/python2.7/site-packages/setools/policyrep/mlsrule.py +++ b/lib/python2.7/site-packages/setools/policyrep/mlsrule.py @@ -42,10 +42,10 @@ def expanded_mls_rule_factory(original, source, target): target The target type of the expanded rule. """ - if isinstance(original, MLSRule): - rule = ExpandedMLSRule(original.policy, original.qpol_symbol) - elif isinstance(original, MLSRule): + if isinstance(original, ExpandedMLSRule): return original + elif isinstance(original, MLSRule): + rule = ExpandedMLSRule(original.policy, original.qpol_symbol) else: raise TypeError("The original rule must be a MLS rule class.") diff --git a/lib/python2.7/site-packages/setools/policyrep/netcontext.py b/lib/python2.7/site-packages/setools/policyrep/netcontext.py index 4c9b6ec..6a70a5a 100644..100755 --- a/lib/python2.7/site-packages/setools/policyrep/netcontext.py +++ b/lib/python2.7/site-packages/setools/policyrep/netcontext.py @@ -16,7 +16,7 @@ # License along with SETools. If not, see # <http://www.gnu.org/licenses/>. # -import socket +from socket import IPPROTO_TCP, IPPROTO_UDP, getprotobyname from collections import namedtuple from . import qpol @@ -25,6 +25,10 @@ from . import context port_range = namedtuple("port_range", ["low", "high"]) +# Python does not have a constant +# for the DCCP protocol. +IPPROTO_DCCP = getprotobyname("dccp") + def netifcon_factory(policy, name): """Factory function for creating netifcon objects.""" @@ -146,8 +150,23 @@ class PortconProtocol(int): corresponding protocol string (udp, tcp). """ - _proto_to_text = {socket.IPPROTO_TCP: 'tcp', - socket.IPPROTO_UDP: 'udp'} + _proto_to_text = {IPPROTO_DCCP: 'dccp', + IPPROTO_TCP: 'tcp', + IPPROTO_UDP: 'udp'} + + def __new__(cls, value): + try: + # convert string representation + num = getprotobyname(value) + except TypeError: + num = value + + if num not in cls._proto_to_text: + raise ValueError("{0} is not a supported IP protocol. " + "Values such as {1} (TCP) or {2} (UDP) should be used.". + format(value, IPPROTO_TCP, IPPROTO_UDP)) + + return super(PortconProtocol, cls).__new__(cls, num) def __str__(self): return self._proto_to_text[self] diff --git a/lib/python2.7/site-packages/setools/policyrep/objclass.py b/lib/python2.7/site-packages/setools/policyrep/objclass.py index bf9a553..bf9a553 100644..100755 --- a/lib/python2.7/site-packages/setools/policyrep/objclass.py +++ b/lib/python2.7/site-packages/setools/policyrep/objclass.py diff --git a/lib/python2.7/site-packages/setools/policyrep/polcap.py b/lib/python2.7/site-packages/setools/policyrep/polcap.py index 8ab164d..8ab164d 100644..100755 --- a/lib/python2.7/site-packages/setools/policyrep/polcap.py +++ b/lib/python2.7/site-packages/setools/policyrep/polcap.py diff --git a/lib/python2.7/site-packages/setools/policyrep/qpol.i b/lib/python2.7/site-packages/setools/policyrep/qpol.i new file mode 100644 index 0000000..267250d --- /dev/null +++ b/lib/python2.7/site-packages/setools/policyrep/qpol.i @@ -0,0 +1,3498 @@ +/** + * 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 <sys/stat.h> +#include <arpa/inet.h> +#include <sepol/policydb.h> +#include <sepol/policydb/policydb.h> +#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" +#include "include/qpol/xen_query.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; + +%} + +%include exception.i +%include stdint.i + +/* handle size_t as architecture dependent */ +#ifdef SWIGWORDSIZE64 +typedef uint64_t size_t; +#else +typedef uint32_t size_t; +#endif + +%inline %{ + /* cast void * to char * as it can't have a constructor */ + const char * to_str(void *x) { + return (const char *)x; + } + + /* cast a void * to int, while freeing the pointer */ + int to_int_with_free(void *x) { + int i = *(int *)x; + free(x); + return i; + } +%} +%{ +/* C Bridge to Python logging callback */ +__attribute__ ((format(printf, 4, 0))) +static void qpol_log_callback(void *varg, + const qpol_policy_t * p __attribute__ ((unused)), + int level, + const char *fmt, + va_list va_args) +{ + /* Expand to a full string to avoid any C format string + * or variable args handling when passing to Python + */ + + PyObject *py_callback, *rc; + char *str = NULL; + + if(vasprintf(&str, fmt, va_args) < 0) + return; + + py_callback = (PyObject *) varg; + + /* this char* casting doesn't make sense, but this runs afoul of -Werror + * otherwise as the Python library doesn't do const char* */ + rc = PyObject_CallFunction(py_callback, (char*)"(is)", level, str); + Py_XDECREF(rc); + free(str); +} +%} + +%pythoncode %{ +import logging +from functools import wraps + +def QpolGenerator(cast): + """ + A decorator which converts qpol iterators into Python generators. + + Qpol iterators use void* to be generic about their contents. + The purpose of the _from_void functions below is to wrap + the pointer casting, hence the "cast" variable name here. + + Decorator parameter: + cast A wrapper function which casts the qpol iterator return pointer + to the proper C data type pointer. The Python function + reference to the C Python extension is used, for example: + + @QpolGenerator(_qpol.qpol_type_from_void) + """ + + def decorate(func): + @wraps(func) + def wrapper(*args, **kwargs): + qpol_iter = func(*args) + while not qpol_iter.isend(): + yield cast(qpol_iter.item()) + qpol_iter.next_() + + return wrapper + return decorate + +def qpol_logger(level, msg): + """Log qpol messages via Python logging.""" + logging.getLogger(__name__).debug(msg) + +def qpol_policy_factory(path): + """Factory function for qpol policy objects.""" + # The main purpose here is to hook in the + # above logger callback. + return qpol_policy_t(path, 0, qpol_logger) +%} + +/* qpol_policy */ +#define QPOL_POLICY_OPTION_NO_NEVERALLOWS 0x00000001 +#define QPOL_POLICY_OPTION_NO_RULES 0x00000002 +#define QPOL_POLICY_OPTION_MATCH_SYSTEM 0x00000004 +/* add maximum and minimum policy versions supported by the statically linked libsepol */ +%constant int QPOL_POLICY_MAX_VERSION = POLICYDB_VERSION_MAX; +%constant int QPOL_POLICY_MIN_VERSION = POLICYDB_VERSION_MIN; +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); + +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_CAP_POLCAPS, + QPOL_CAP_BOUNDS, + QPOL_CAP_DEFAULT_OBJECTS, + QPOL_CAP_DEFAULT_TYPE, + QPOL_CAP_PERMISSIVE, + QPOL_CAP_FILENAME_TRANS, + QPOL_CAP_ROLETRANS, + QPOL_CAP_XPERM_IOCTL +} qpol_capability_e; +%exception qpol_policy { + $action + if (!result) { + if (errno == EINVAL) { + PyErr_SetString(PyExc_SyntaxError, "Invalid policy."); + } else { + PyErr_SetFromErrnoWithFilename(PyExc_OSError, arg1); + } + return NULL; + } +} +%extend qpol_policy { + qpol_policy(const char *path, const int options, PyObject *py_callback) { + qpol_policy_t *p; + + if (!PyCallable_Check(py_callback)) { + PyErr_SetString(PyExc_TypeError, "Callback parameter must be callable"); + return NULL; + } + + qpol_policy_open_from_file(path, &p, qpol_log_callback, (void*)py_callback, options); + return p; + } + ~qpol_policy() { + qpol_policy_destroy(&self); + }; + + int 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; + }; + + const char *handle_unknown () { + unsigned int h; + qpol_policy_get_policy_handle_unknown(self, &h); + + switch (h) { + case SEPOL_DENY_UNKNOWN: return "deny"; + case SEPOL_REJECT_UNKNOWN: return "reject"; + case SEPOL_ALLOW_UNKNOWN: return "allow"; + default: return "unknown"; + } + }; + + /* This is whether SELinux or XEN policy */ + const char *target_platform () { + int t; + (void)qpol_policy_get_target_platform(self, &t); + switch (t) { + case SEPOL_TARGET_SELINUX: return "selinux"; + case SEPOL_TARGET_XEN: return "xen"; + default: return "unknown"; + } + }; + + int capability (qpol_capability_e cap) { + return qpol_policy_has_capability(self, cap); + }; + + %newobject type_iter(); + %pythoncode %{ @QpolGenerator(_qpol.qpol_type_from_void) %} + qpol_iterator_t *type_iter() { + qpol_iterator_t *iter; + if (qpol_policy_get_type_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + }; + + size_t type_count() { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_type_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + }; + + %newobject role_iter(); + %pythoncode %{ @QpolGenerator(_qpol.qpol_role_from_void) %} + qpol_iterator_t *role_iter() { + qpol_iterator_t *iter; + if (qpol_policy_get_role_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + }; + + size_t role_count() { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_role_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + }; + + %newobject level_iter(); + %pythoncode %{ @QpolGenerator(_qpol.qpol_level_from_void) %} + qpol_iterator_t *level_iter() { + qpol_iterator_t *iter; + if (qpol_policy_get_level_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + }; + + size_t level_count() { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_level_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + }; + + %newobject cat_iter(); + %pythoncode %{ @QpolGenerator(_qpol.qpol_cat_from_void) %} + qpol_iterator_t *cat_iter() { + qpol_iterator_t *iter; + if (qpol_policy_get_cat_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + }; + + size_t cat_count() { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_cat_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + }; + + %newobject user_iter(); + %pythoncode %{ @QpolGenerator(_qpol.qpol_user_from_void) %} + qpol_iterator_t *user_iter() { + qpol_iterator_t *iter; + if (qpol_policy_get_user_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + }; + + size_t user_count() { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_user_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + }; + + + %newobject bool_iter(); + %pythoncode %{ @QpolGenerator(_qpol.qpol_bool_from_void) %} + qpol_iterator_t *bool_iter() { + qpol_iterator_t *iter; + if (qpol_policy_get_bool_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + }; + + size_t bool_count() { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_bool_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + }; + + %newobject class_iter(char*); + %pythoncode %{ @QpolGenerator(_qpol.qpol_class_from_void) %} + qpol_iterator_t *class_iter(char *perm=NULL) { + 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; + fail: + return NULL; + }; + + size_t class_count() { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_class_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + }; + + %newobject common_iter(char*); + %pythoncode %{ @QpolGenerator(_qpol.qpol_common_from_void) %} + qpol_iterator_t *common_iter(char *perm=NULL) { + 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; + fail: + return NULL; + }; + + size_t common_count() { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_common_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + }; + + %newobject fs_use_iter(); + %pythoncode %{ @QpolGenerator(_qpol.qpol_fs_use_from_void) %} + qpol_iterator_t *fs_use_iter() { + qpol_iterator_t *iter; + if (qpol_policy_get_fs_use_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + }; + + size_t fs_use_count() { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_fs_use_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + }; + + %newobject genfscon_iter(); + %pythoncode %{ @QpolGenerator(_qpol.qpol_genfscon_from_void) %} + qpol_iterator_t *genfscon_iter() { + qpol_iterator_t *iter; + if (qpol_policy_get_genfscon_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + }; + + size_t genfscon_count() { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_genfscon_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + }; + + %newobject isid_iter(); + %pythoncode %{ @QpolGenerator(_qpol.qpol_isid_from_void) %} + qpol_iterator_t *isid_iter() { + qpol_iterator_t *iter; + if (qpol_policy_get_isid_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + }; + + size_t isid_count() { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_isid_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + }; + + %newobject netifcon_iter(); + %pythoncode %{ @QpolGenerator(_qpol.qpol_netifcon_from_void) %} + qpol_iterator_t *netifcon_iter() { + qpol_iterator_t *iter; + if (qpol_policy_get_netifcon_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + }; + + size_t netifcon_count() { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_netifcon_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + }; + + %newobject nodecon_iter(); + %pythoncode %{ @QpolGenerator(_qpol.qpol_nodecon_from_void) %} + qpol_iterator_t *nodecon_iter() { + qpol_iterator_t *iter; + if (qpol_policy_get_nodecon_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + }; + + size_t nodecon_count() { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_nodecon_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + }; + + %newobject portcon_iter(); + %pythoncode %{ @QpolGenerator(_qpol.qpol_portcon_from_void) %} + qpol_iterator_t *portcon_iter() { + qpol_iterator_t *iter; + if (qpol_policy_get_portcon_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + }; + + size_t portcon_count() { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_portcon_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + }; + + %newobject constraint_iter(); + %pythoncode %{ @QpolGenerator(_qpol.qpol_constraint_from_void) %} + qpol_iterator_t *constraint_iter() { + qpol_iterator_t *iter; + if (qpol_policy_get_constraint_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + }; + + size_t constraint_count() { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_constraint_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + }; + + %newobject validatetrans_iter(); + %pythoncode %{ @QpolGenerator(_qpol.qpol_validatetrans_from_void) %} + qpol_iterator_t *validatetrans_iter() { + qpol_iterator_t *iter; + if (qpol_policy_get_validatetrans_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + }; + + size_t validatetrans_count() { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_validatetrans_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + }; + + %newobject role_allow_iter(); + %pythoncode %{ @QpolGenerator(_qpol.qpol_role_allow_from_void) %} + qpol_iterator_t *role_allow_iter() { + qpol_iterator_t *iter; + if (qpol_policy_get_role_allow_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + }; + + size_t role_allow_count() { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_role_allow_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + }; + + %newobject role_trans_iter(); + %pythoncode %{ @QpolGenerator(_qpol.qpol_role_trans_from_void) %} + qpol_iterator_t *role_trans_iter() { + qpol_iterator_t *iter; + if (qpol_policy_get_role_trans_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + }; + + size_t role_trans_count() { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_role_trans_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + }; + + %newobject range_trans_iter(); + %pythoncode %{ @QpolGenerator(_qpol.qpol_range_trans_from_void) %} + qpol_iterator_t *range_trans_iter() { + qpol_iterator_t *iter; + if (qpol_policy_get_range_trans_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + }; + + size_t range_trans_count() { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_range_trans_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + }; + + %newobject avrule_iter(int); + %pythoncode %{ @QpolGenerator(_qpol.qpol_avrule_from_void) %} + qpol_iterator_t *avrule_iter() { + qpol_iterator_t *iter; + uint32_t rule_types = QPOL_RULE_ALLOW | QPOL_RULE_AUDITALLOW | QPOL_RULE_DONTAUDIT; + + if (qpol_policy_has_capability(self, QPOL_CAP_NEVERALLOW)) + rule_types |= QPOL_RULE_NEVERALLOW; + + if (qpol_policy_get_avrule_iter(self, rule_types, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + }; + + size_t avrule_allow_count() { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_avrule_iter(self, QPOL_RULE_ALLOW, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + }; + + size_t avrule_auditallow_count() { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_avrule_iter(self, QPOL_RULE_AUDITALLOW, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + }; + + size_t avrule_neverallow_count() { + if (qpol_policy_has_capability(self, QPOL_CAP_NEVERALLOW)) { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_avrule_iter(self, QPOL_RULE_NEVERALLOW, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + } else { + return 0; + } + fail: + return 0; + }; + + size_t avrule_dontaudit_count() { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_avrule_iter(self, QPOL_RULE_DONTAUDIT, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + }; + + %newobject avulex_iter(int); + %pythoncode %{ @QpolGenerator(_qpol.qpol_avrule_from_void) %} + qpol_iterator_t *avrulex_iter() { + qpol_iterator_t *iter; + uint32_t rule_types = QPOL_RULE_XPERMS_ALLOW | QPOL_RULE_XPERMS_AUDITALLOW | QPOL_RULE_XPERMS_DONTAUDIT; + + if (qpol_policy_has_capability(self, QPOL_CAP_NEVERALLOW)) + rule_types |= QPOL_RULE_XPERMS_NEVERALLOW; + + if (qpol_policy_get_avrule_iter(self, rule_types, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + }; + + size_t avrule_allowx_count() { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_avrule_iter(self, QPOL_RULE_XPERMS_ALLOW, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + }; + + size_t avrule_auditallowx_count() { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_avrule_iter(self, QPOL_RULE_XPERMS_AUDITALLOW, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + }; + + size_t avrule_neverallowx_count() { + if (qpol_policy_has_capability(self, QPOL_CAP_NEVERALLOW)) { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_avrule_iter(self, QPOL_RULE_XPERMS_NEVERALLOW, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + } else { + return 0; + } + fail: + return 0; + }; + + size_t avrule_dontauditx_count() { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_avrule_iter(self, QPOL_RULE_XPERMS_DONTAUDIT, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + }; + + %newobject terule_iter(int); + %pythoncode %{ @QpolGenerator(_qpol.qpol_terule_from_void) %} + qpol_iterator_t *terule_iter() { + qpol_iterator_t *iter; + uint32_t rule_types = QPOL_RULE_TYPE_TRANS | QPOL_RULE_TYPE_CHANGE | QPOL_RULE_TYPE_MEMBER; + + if (qpol_policy_get_terule_iter(self, rule_types, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + }; + + size_t terule_trans_count() { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_terule_iter(self, QPOL_RULE_TYPE_TRANS, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + }; + + size_t terule_change_count() { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_terule_iter(self, QPOL_RULE_TYPE_CHANGE, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + }; + + size_t terule_member_count() { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_terule_iter(self, QPOL_RULE_TYPE_MEMBER, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + }; + + %newobject cond_iter(); + qpol_iterator_t *cond_iter() { + qpol_iterator_t *iter; + if (qpol_policy_get_cond_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + }; + + size_t cond_count() { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_cond_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + }; + + %newobject filename_trans_iter(); + %pythoncode %{ @QpolGenerator(_qpol.qpol_filename_trans_from_void) %} + qpol_iterator_t *filename_trans_iter() { + qpol_iterator_t *iter; + if (qpol_policy_get_filename_trans_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + }; + + size_t filename_trans_count() { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_filename_trans_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + }; + + %newobject permissive_iter(); + %pythoncode %{ @QpolGenerator(_qpol.qpol_type_from_void) %} + qpol_iterator_t *permissive_iter() { + qpol_iterator_t *iter; + if (qpol_policy_get_permissive_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + }; + + size_t permissive_count() { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_permissive_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + }; + + %newobject typebounds_iter(); + %pythoncode %{ @QpolGenerator(_qpol.qpol_typebounds_from_void) %} + qpol_iterator_t *typebounds_iter() { + qpol_iterator_t *iter; + if (qpol_policy_get_typebounds_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + }; + + %newobject polcap_iter(); + %pythoncode %{ @QpolGenerator(_qpol.qpol_polcap_from_void) %} + qpol_iterator_t *polcap_iter() { + qpol_iterator_t *iter; + if (qpol_policy_get_polcap_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + }; + + size_t polcap_count() { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_polcap_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + }; + + %newobject default_iter(); + %pythoncode %{ @QpolGenerator(_qpol.qpol_default_object_from_void) %} + qpol_iterator_t *default_iter() { + qpol_iterator_t *iter; + if (qpol_policy_get_default_object_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + }; + + %newobject iomemcon_iter(); + %pythoncode %{ @QpolGenerator(_qpol.qpol_iomemcon_from_void) %} + qpol_iterator_t *iomemcon_iter() { + qpol_iterator_t *iter; + if (qpol_policy_get_iomemcon_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + }; + size_t iomemcon_count() { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_iomemcon_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + }; + + %newobject ioportcon_iter(); + %pythoncode %{ @QpolGenerator(_qpol.qpol_ioportcon_from_void) %} + qpol_iterator_t *ioportcon_iter() { + qpol_iterator_t *iter; + if (qpol_policy_get_ioportcon_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + }; + + size_t ioportcon_count() { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_ioportcon_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + }; + + %newobject pcidevicecon_iter(); + %pythoncode %{ @QpolGenerator(_qpol.qpol_pcidevicecon_from_void) %} + qpol_iterator_t *pcidevicecon_iter() { + qpol_iterator_t *iter; + if (qpol_policy_get_pcidevicecon_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + }; + size_t pcidevicecon_count() { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_pcidevicecon_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + }; + + %newobject pirqcon_iter(); + %pythoncode %{ @QpolGenerator(_qpol.qpol_pirqcon_from_void) %} + qpol_iterator_t *pirqcon_iter() { + qpol_iterator_t *iter; + if (qpol_policy_get_pirqcon_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + }; + size_t pirqcon_count() { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_pirqcon_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + }; + + %newobject devicetreecon_iter(); + %pythoncode %{ @QpolGenerator(_qpol.qpol_devicetreecon_from_void) %} + qpol_iterator_t *devicetreecon_iter() { + qpol_iterator_t *iter; + if (qpol_policy_get_devicetreecon_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + }; + size_t devicetreecon_count() { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_devicetreecon_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + }; +}; + +/* qpol iterator */ +typedef struct qpol_iterator {} qpol_iterator_t; +%extend qpol_iterator { + /* user never directly creates, but SWIG expects a constructor */ + qpol_iterator() { + SWIG_exception(SWIG_TypeError, "User may not create iterators difectly"); + fail: + return NULL; + }; + ~qpol_iterator() { + qpol_iterator_destroy(&self); + }; + void *item() { + void *i; + if (qpol_iterator_get_item(self, &i)) { + SWIG_exception(SWIG_RuntimeError, "Could not get item"); + } + return i; + fail: + return NULL; + }; + void next_() { + if (qpol_iterator_next(self)) { + SWIG_exception(SWIG_RuntimeError, "Error advancing iterator"); + } + fail: + return; + }; + int isend() { + return qpol_iterator_end(self); + }; + size_t size() { + size_t s; + if (qpol_iterator_get_size(self, &s)) { + SWIG_exception(SWIG_ValueError, "Could not get iterator size"); + } + return s; + fail: + return 0; + }; +}; + +/* qpol type */ +typedef struct qpol_type {} qpol_type_t; +%extend qpol_type { + %exception qpol_type { + $action + if (!result) { + PyErr_SetString(PyExc_ValueError, "Invalid type or attribute."); + return NULL; + } + } + qpol_type(qpol_policy_t *p, const char *name) { + const qpol_type_t *t; + qpol_policy_get_type_by_name(p, name, &t); + return (qpol_type_t*)t; + }; + ~qpol_type() { + /* no op */ + return; + }; + const char *name(qpol_policy_t *p) { + const char *name; + if (qpol_type_get_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get type name"); + } + return name; + fail: + return NULL; + }; + int value(qpol_policy_t *p) { + uint32_t v; + if (qpol_type_get_value(p, self, &v)) { + SWIG_exception(SWIG_ValueError, "Could not get type value"); + } + fail: + return (int) v; + }; + int isalias(qpol_policy_t *p) { + unsigned char i; + if (qpol_type_get_isalias(p, self, &i)) { + SWIG_exception(SWIG_ValueError, "Could not determine whether type is an alias"); + } + fail: + return (int)i; + }; + int isattr(qpol_policy_t *p) { + unsigned char i; + if (qpol_type_get_isattr(p, self, &i)) { + SWIG_exception(SWIG_ValueError, "Could not determine whether type is an attribute"); + } + fail: + return (int)i; + }; + int ispermissive(qpol_policy_t *p) { + unsigned char i; + if (qpol_type_get_ispermissive(p, self, &i)) { + SWIG_exception(SWIG_ValueError, "Could not determine whether type is permissive"); + } + fail: + return (int)i; + }; + + %newobject type_iter(qpol_policy_t*); + %pythoncode %{ @QpolGenerator(_qpol.qpol_type_from_void) %} + qpol_iterator_t *type_iter(qpol_policy_t *p) { + qpol_iterator_t *iter; + 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"); + } + fail: + return iter; + }; + + %newobject attr_iter(qpol_policy_t*); + %pythoncode %{ @QpolGenerator(_qpol.qpol_type_from_void) %} + qpol_iterator_t *attr_iter(qpol_policy_t *p) { + qpol_iterator_t *iter; + 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"); + } + fail: + return iter; + }; + + %newobject alias_iter(qpol_policy_t*); + %pythoncode %{ @QpolGenerator(_qpol.to_str) %} + qpol_iterator_t *alias_iter(qpol_policy_t *p) { + qpol_iterator_t *iter; + if (qpol_type_get_alias_iter(p, self, &iter)) { + SWIG_exception(SWIG_RuntimeError, "Could not get type aliases"); + } + fail: + return iter; + }; + + const char *name(qpol_policy_t *p) { + const char *name; + if (qpol_permissive_get_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get permissive type name"); + } + return name; + fail: + return NULL; + }; + }; +%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 { + %exception qpol_role { + $action + if (!result) { + PyErr_SetString(PyExc_ValueError, "Invalid type or attribute."); + return NULL; + } + } + qpol_role(qpol_policy_t *p, const char *name) { + const qpol_role_t *r; + qpol_policy_get_role_by_name(p, name, &r); + return (qpol_role_t*)r; + }; + ~qpol_role() { + /* no op */ + return; + }; + int value (qpol_policy_t *p) { + uint32_t v; + if (qpol_role_get_value(p, self, &v)) { + SWIG_exception(SWIG_ValueError, "Could not get role value"); + } + fail: + return (int) v; + }; + const char *name(qpol_policy_t *p) { + const char *name; + if (qpol_role_get_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get role name"); + } + return name; + fail: + return NULL; + }; + + %newobject type_iter(qpol_policy_t*); + %pythoncode %{ @QpolGenerator(_qpol.qpol_type_from_void) %} + qpol_iterator_t *type_iter(qpol_policy_t *p) { + qpol_iterator_t *iter; + if (qpol_role_get_type_iter(p, self, &iter)) { + SWIG_exception(SWIG_RuntimeError, "Could not get role types"); + } + fail: + return iter; + }; + + %newobject dominate_iter(qpol_policy_t*); + qpol_iterator_t *dominate_iter(qpol_policy_t *p) { + qpol_iterator_t *iter; + if (qpol_role_get_dominate_iter(p, self, &iter)) { + SWIG_exception(SWIG_RuntimeError, "Could not get dominated roles"); + } + 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 { + %exception qpol_level { + $action + if (!result) { + if (errno == EINVAL) { + PyErr_SetString(PyExc_ValueError, "Invalid level."); + } else { + PyErr_SetFromErrno(PyExc_OSError); + } + + return NULL; + } + } + qpol_level(qpol_policy_t *p, const char *name) { + const qpol_level_t *l; + qpol_policy_get_level_by_name(p, name, &l); + return (qpol_level_t*)l; + }; + + ~qpol_level() { + /* no op */ + return; + }; + int isalias(qpol_policy_t *p) { + unsigned char i; + if (qpol_level_get_isalias(p, self, &i)) { + SWIG_exception(SWIG_ValueError, "Could not determine whether level is an alias"); + } + fail: + return (int)i; + }; + int value(qpol_policy_t *p) { + uint32_t v; + if (qpol_level_get_value(p, self, &v)) { + SWIG_exception(SWIG_ValueError, "Could not get level sensitivity value"); + } + fail: + return (int) v; + }; + const char *name(qpol_policy_t *p) { + const char *name; + if (qpol_level_get_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get level sensitivity name"); + } + return name; + fail: + return NULL; + }; + + %newobject cat_iter(qpol_policy_t*); + %pythoncode %{ @QpolGenerator(_qpol.qpol_cat_from_void) %} + qpol_iterator_t *cat_iter(qpol_policy_t *p) { + qpol_iterator_t *iter; + if (qpol_level_get_cat_iter(p, self, &iter)) { + SWIG_exception(SWIG_RuntimeError, "Could not get level categories"); + } + fail: + return iter; + }; + + %newobject alias_iter(qpol_policy_t*); + %pythoncode %{ @QpolGenerator(_qpol.to_str) %} + qpol_iterator_t *alias_iter(qpol_policy_t *p) { + qpol_iterator_t *iter; + if (qpol_level_get_alias_iter(p, self, &iter)) { + SWIG_exception(SWIG_RuntimeError, "Could not get level aliases"); + } + 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 { + %exception qpol_cat { + $action + if (!result) { + if (errno == EINVAL) { + PyErr_SetString(PyExc_ValueError, "Invalid category."); + } else { + PyErr_SetFromErrno(PyExc_OSError); + } + + return NULL; + } + } + qpol_cat(qpol_policy_t *p, const char *name) { + const qpol_cat_t *c; + qpol_policy_get_cat_by_name(p, name, &c); + return (qpol_cat_t*)c; + }; + + ~qpol_cat() { + /* no op */ + return; + }; + int isalias(qpol_policy_t *p) { + unsigned char i; + if (qpol_cat_get_isalias(p, self, &i)) { + SWIG_exception(SWIG_ValueError, "Could not determine whether category is an alias"); + } + fail: + return (int)i; + }; + int value(qpol_policy_t *p) { + uint32_t v; + if (qpol_cat_get_value(p, self, &v)) { + SWIG_exception(SWIG_ValueError, "Could not get category value"); + } + fail: + return (int) v; + }; + const char *name(qpol_policy_t *p) { + const char *name; + if (qpol_cat_get_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get category name"); + } + return name; + fail: + return NULL; + }; + %newobject alias_iter(qpol_policy_t*); + %pythoncode %{ @QpolGenerator(_qpol.to_str) %} + qpol_iterator_t *alias_iter(qpol_policy_t *p) { + qpol_iterator_t *iter; + if (qpol_cat_get_alias_iter(p, self, &iter)) { + SWIG_exception(SWIG_RuntimeError, "Could not get category aliases"); + } + 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 { + /* + * TODO: determine how to conditionally destroy this range. + * It should only be destroyed if it was looked up (user-entered) + * Otherwise qpol will destroy the others when the policy closes. + */ + %exception qpol_mls_range { + $action + if (!result) { + if (errno == EINVAL) { + PyErr_SetString(PyExc_ValueError, "Invalid range."); + } else { + PyErr_SetFromErrno(PyExc_OSError); + } + + return NULL; + } + } + + qpol_mls_range(qpol_policy_t *p, qpol_mls_level_t *l, qpol_mls_level_t *h) { + qpol_mls_range_t *range; + qpol_policy_get_mls_range_from_mls_levels(p, l, h, &range); + return range; + } + + ~qpol_mls_range() { + /* no op */ + return; + }; + const qpol_mls_level_t *high_level(qpol_policy_t *p) { + const qpol_mls_level_t *l; + if (qpol_mls_range_get_high_level(p, self, &l)) { + SWIG_exception(SWIG_ValueError, "Could not get range high levl"); + } + fail: + return l; + }; + const qpol_mls_level_t *low_level(qpol_policy_t *p) { + const qpol_mls_level_t *l; + if (qpol_mls_range_get_low_level(p, self, &l)) { + SWIG_exception(SWIG_ValueError, "Could not get range low levl"); + } + fail: + return l; + }; +}; +%inline %{ + qpol_mls_range_t *qpol_mls_range_from_void(void *x) { + return (qpol_mls_range_t*)x; + }; +%} + +/* qpol semantic mls level */ +typedef struct qpol_semantic_level {} qpol_semantic_level_t; +%extend qpol_semantic_level { + %exception qpol_semantic_level { + $action + if (!result) { + PyErr_SetString(PyExc_ValueError, "Invalid sensitivity name."); + return NULL; + } + } + + qpol_semantic_level(qpol_policy_t *p, const char *name) { + const qpol_semantic_level_t *l; + qpol_policy_get_semantic_level_by_name(p, name, &l); + return (qpol_semantic_level_t*)l; + }; + + ~qpol_semantic_level() { + qpol_semantic_level_destroy(self); + return; + }; + + %exception add_cats { + $action + if (result) { + PyErr_SetString(PyExc_ValueError, "Invalid category name or category range."); + return NULL; + } + } + int add_cats(qpol_policy_t *p, const char *low, const char *high) { + return qpol_semantic_level_add_cats_by_name(p, self, low, high); + } +}; + +/* qpol mls level */ +typedef struct qpol_mls_level {} qpol_mls_level_t; +%extend qpol_mls_level { + %exception qpol_mls_level { + $action + if (!result) { + PyErr_SetString(PyExc_ValueError, "Invalid level."); + return NULL; + } + } + + qpol_mls_level(qpol_policy_t *p, qpol_semantic_level_t *l) { + qpol_mls_level_t *level; + qpol_mls_level_from_semantic_level(p, l, &level); + return level; + } + + ~qpol_mls_level() { + /* no op */ + return; + }; + const char *sens_name(qpol_policy_t *p) { + const char *name; + if (qpol_mls_level_get_sens_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get level sensitivity name"); + } + fail: + return name; + }; + + %newobject cat_iter(qpol_policy_t*); + %pythoncode %{ @QpolGenerator(_qpol.qpol_cat_from_void) %} + qpol_iterator_t *cat_iter(qpol_policy_t *p) { + qpol_iterator_t *iter; + if (qpol_mls_level_get_cat_iter(p, self, &iter)) { + SWIG_exception(SWIG_RuntimeError, "Could not get level categories"); + } + 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 { + %exception qpol_user { + $action + if (!result) { + PyErr_SetString(PyExc_ValueError, "Invalid user."); + return NULL; + } + } + qpol_user(qpol_policy_t *p, const char *name) { + const qpol_user_t *u; + qpol_policy_get_user_by_name(p, name, &u); + return (qpol_user_t*)u; + }; + ~qpol_user() { + /* no op */ + return; + }; + int value(qpol_policy_t *p) { + uint32_t v; + if (qpol_user_get_value(p, self, &v)) { + SWIG_exception(SWIG_ValueError, "Could not get user value"); + } + fail: + return (int) v; + }; + + %newobject role_iter(qpol_policy_t*); + %pythoncode %{ @QpolGenerator(_qpol.qpol_role_from_void) %} + qpol_iterator_t *role_iter(qpol_policy_t *p) { + qpol_iterator_t *iter; + if (qpol_user_get_role_iter(p, self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + fail: + return iter; + }; + + const qpol_mls_range_t *range(qpol_policy_t *p) { + const qpol_mls_range_t *r; + if (qpol_user_get_range(p, self, &r)) { + SWIG_exception(SWIG_ValueError, "Could not get user range"); + } + fail: + return r; + }; + const char *name(qpol_policy_t *p) { + const char *name; + if (qpol_user_get_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get user name"); + } + fail: + return name; + }; + const qpol_mls_level_t *dfltlevel(qpol_policy_t *p) { + const qpol_mls_level_t *l; + if (qpol_user_get_dfltlevel(p, self, &l)) { + SWIG_exception(SWIG_ValueError, "Could not get user default level"); + } + 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 { + qpol_bool(qpol_policy_t *p, const char *name) { + qpol_bool_t *b; + if (qpol_policy_get_bool_by_name(p, name, &b)) { + SWIG_exception(SWIG_RuntimeError, "Boolean does not exist"); + } + fail: + return b; + }; + ~qpol_bool() { + /* no op */ + return; + }; + int value(qpol_policy_t *p) { + uint32_t v; + if (qpol_bool_get_value(p, self, &v)) { + SWIG_exception(SWIG_ValueError, "Could not get boolean value"); + } + fail: + return (int) v; + }; + int state(qpol_policy_t *p) { + int s; + if (qpol_bool_get_state(p, self, &s)) { + SWIG_exception(SWIG_ValueError, "Could not get boolean state"); + } + fail: + return s; + }; + + const char *name(qpol_policy_t *p) { + const char *name; + if (qpol_bool_get_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get boolean name"); + } + 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 { + qpol_context() { + SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_context_t objects"); + fail: + return NULL; + }; + ~qpol_context() { + /* no op */ + return; + }; + const qpol_user_t *user(qpol_policy_t *p) { + const qpol_user_t *u; + if (qpol_context_get_user(p, self, &u)) { + SWIG_exception(SWIG_ValueError, "Could not get user from context"); + } + fail: + return u; + }; + const qpol_role_t *role(qpol_policy_t *p) { + const qpol_role_t *r; + if (qpol_context_get_role(p, self, &r)) { + SWIG_exception(SWIG_ValueError, "Could not get role from context"); + } + fail: + return r; + }; + const qpol_type_t *type_(qpol_policy_t *p) { + const qpol_type_t *t; + if (qpol_context_get_type(p, self, &t)) { + SWIG_exception(SWIG_ValueError, "Could not get type from context"); + } + fail: + return t; + }; + const qpol_mls_range_t *range(qpol_policy_t *p) { + const qpol_mls_range_t *r; + if (qpol_context_get_range(p, self, &r)) { + SWIG_exception(SWIG_ValueError, "Could not get range from context"); + } + 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 { + %exception qpol_class { + $action + if (!result) { + if (errno == EINVAL) { + PyErr_SetString(PyExc_ValueError, "Invalid class."); + } else { + PyErr_SetFromErrno(PyExc_OSError); + } + + return NULL; + } + } + qpol_class(qpol_policy_t *p, const char *name) { + const qpol_class_t *c; + qpol_policy_get_class_by_name(p, name, &c); + return (qpol_class_t*)c; + }; + + ~qpol_class() { + /* no op */ + return; + }; + int value(qpol_policy_t *p) { + uint32_t v; + if (qpol_class_get_value(p, self, &v)) { + SWIG_exception(SWIG_ValueError, "Could not get value for class"); + } + fail: + return (int) v; + }; + + %exception common { + $action + if (!result) { + PyErr_SetString(PyExc_ValueError, "Class does not inherit a common."); + return NULL; + } + } + const qpol_common_t *common(qpol_policy_t *p) { + const qpol_common_t *c; + if(qpol_class_get_common(p, self, &c)) { + SWIG_exception(SWIG_ValueError, "Could not get common for class"); + } + fail: + return c; + }; + %newobject perm_iter(qpol_policy_t*); + %pythoncode %{ @QpolGenerator(_qpol.to_str) %} + qpol_iterator_t *perm_iter(qpol_policy_t *p) { + qpol_iterator_t *iter; + if(qpol_class_get_perm_iter(p, self, &iter)) { + SWIG_exception(SWIG_RuntimeError, "Could not get class permissions"); + } + fail: + return iter; + }; + + %newobject constraint_iter(qpol_policy_t*); + %pythoncode %{ @QpolGenerator(_qpol.qpol_constraint_from_void) %} + qpol_iterator_t *constraint_iter(qpol_policy_t *p) { + qpol_iterator_t *iter; + if(qpol_class_get_constraint_iter(p, self, &iter)) { + SWIG_exception(SWIG_RuntimeError, "Could not get class constraints"); + } + fail: + return iter; + }; + + %newobject validatetrans_iter(qpol_policy_t*); + %pythoncode %{ @QpolGenerator(_qpol.qpol_validatetrans_from_void) %} + qpol_iterator_t *validatetrans_iter(qpol_policy_t *p) { + qpol_iterator_t *iter; + if(qpol_class_get_validatetrans_iter(p, self, &iter)) { + SWIG_exception(SWIG_RuntimeError, "Could not get class validatetrans statements"); + } + fail: + return iter; + }; + + const char *name(qpol_policy_t *p) { + const char *name; + if (qpol_class_get_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get class name"); + } + 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 { + %exception qpol_common { + $action + if (!result) { + if (errno == EINVAL) { + PyErr_SetString(PyExc_ValueError, "Invalid common."); + } else { + PyErr_SetFromErrno(PyExc_OSError); + } + + return NULL; + } + } + qpol_common(qpol_policy_t *p, const char *name) { + const qpol_common_t *c; + qpol_policy_get_common_by_name(p, name, &c); + return (qpol_common_t*)c; + }; + + ~qpol_common() { + /* no op */ + return; + }; + int value(qpol_policy_t *p) { + uint32_t v; + if (qpol_common_get_value(p, self, &v)) { + SWIG_exception(SWIG_ValueError, "Could not get value for common"); + } + fail: + return (int) v; + }; + + %newobject perm_iter(qpol_policy_t*); + %pythoncode %{ @QpolGenerator(_qpol.to_str) %} + qpol_iterator_t *perm_iter(qpol_policy_t *p) { + qpol_iterator_t *iter; + if(qpol_common_get_perm_iter(p, self, &iter)) { + SWIG_exception(SWIG_RuntimeError, "Could not get common permissions"); + } + fail: + return iter; + }; + + const char *name(qpol_policy_t *p) { + const char *name; + if (qpol_common_get_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get common name"); + } + 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. */ +#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 +typedef struct qpol_fs_use {} qpol_fs_use_t; +%extend qpol_fs_use { + qpol_fs_use(qpol_policy_t *p, const char *name) { + const qpol_fs_use_t *f; + if (qpol_policy_get_fs_use_by_name(p, name, &f)) { + SWIG_exception(SWIG_RuntimeError, "FS Use Statement does not exist"); + } + fail: + return (qpol_fs_use_t*)f; + }; + ~qpol_fs_use() { + /* no op */ + return; + }; + const char *name(qpol_policy_t *p) { + const char *name; + if (qpol_fs_use_get_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get file system name"); + } + fail: + return name; + }; + int behavior(qpol_policy_t *p) { + uint32_t behav; + if (qpol_fs_use_get_behavior(p, self, &behav)) { + SWIG_exception(SWIG_ValueError, "Could not get file system labeling behavior"); + } + fail: + return (int) behav; + }; + const qpol_context_t *context(qpol_policy_t *p) { + uint32_t behav; + const qpol_context_t *ctx = NULL; + 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"); + } + 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 */ +#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 +typedef struct qpol_genfscon {} qpol_genfscon_t; +%extend qpol_genfscon { + qpol_genfscon(qpol_policy_t *p, const char *name, const char *path) { + qpol_genfscon_t *g; + if (qpol_policy_get_genfscon_by_name(p, name, path, &g)) { + SWIG_exception(SWIG_RuntimeError, "Genfscon statement does not exist"); + } + fail: + return g; + }; + ~qpol_genfscon() { + free(self); + }; + const char *name(qpol_policy_t *p) { + const char *name; + if (qpol_genfscon_get_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get file system name"); + } + fail: + return name; + }; + const char *path(qpol_policy_t *p) { + const char *path; + if (qpol_genfscon_get_path(p, self, &path)) { + SWIG_exception(SWIG_ValueError, "Could not get file system path"); + } + fail: + return path; + }; + unsigned int object_class(qpol_policy_t *p) { + uint32_t cls; + if (qpol_genfscon_get_class(p, self, &cls)) { + SWIG_exception(SWIG_ValueError, "Could not get genfscon statement class"); + } + switch (cls) { + case QPOL_CLASS_BLK_FILE: return S_IFBLK; + case QPOL_CLASS_CHR_FILE: return S_IFCHR; + case QPOL_CLASS_DIR: return S_IFDIR; + case QPOL_CLASS_FIFO_FILE: return S_IFIFO; + case QPOL_CLASS_FILE: return S_IFREG; + case QPOL_CLASS_LNK_FILE: return S_IFLNK; + case QPOL_CLASS_SOCK_FILE: return S_IFSOCK; + default: return 0; /* all file types */ + } + fail: + return 0; + }; + const qpol_context_t *context(qpol_policy_t *p) { + const qpol_context_t *ctx; + if (qpol_genfscon_get_context(p, self, &ctx)) { + SWIG_exception(SWIG_ValueError, "Could not get context for genfscon statement"); + } + 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 { + %exception qpol_isid { + $action + if (!result) { + if (errno == EINVAL) { + PyErr_SetString(PyExc_ValueError, "Invalid initial sid name."); + } else { + PyErr_SetFromErrno(PyExc_OSError); + } + + return NULL; + } + } + qpol_isid(qpol_policy_t *p, const char *name) { + const qpol_isid_t *i; + qpol_policy_get_isid_by_name(p, name, &i); + return (qpol_isid_t*)i; + }; + + ~qpol_isid() { + /* no op */ + return; + }; + const char *name(qpol_policy_t *p) { + const char *name; + if (qpol_isid_get_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get name for initial sid"); + } + fail: + return name; + }; + const qpol_context_t *context(qpol_policy_t *p) { + const qpol_context_t *ctx; + if (qpol_isid_get_context(p, self, &ctx)) { + SWIG_exception(SWIG_ValueError, "Could not get context for initial sid"); + } + 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 { + qpol_netifcon(qpol_policy_t *p, const char *name) { + const qpol_netifcon_t *n; + if (qpol_policy_get_netifcon_by_name(p, name, &n)) { + SWIG_exception(SWIG_RuntimeError, "Netifcon statement does not exist"); + } + fail: + return (qpol_netifcon_t*)n; + }; + ~qpol_netifcon() { + /* no op */ + return; + }; + const char *name(qpol_policy_t *p) { + const char *name; + if (qpol_netifcon_get_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get name for netifcon statement"); + } + fail: + return name; + }; + const qpol_context_t *msg_con(qpol_policy_t *p) { + const qpol_context_t *ctx; + if (qpol_netifcon_get_msg_con(p, self, &ctx)) { + SWIG_exception(SWIG_ValueError, "Could not get message context for netifcon statement"); + } + fail: + return ctx; + }; + const qpol_context_t *if_con(qpol_policy_t *p) { + const qpol_context_t *ctx; + if (qpol_netifcon_get_if_con(p, self, &ctx)) { + SWIG_exception(SWIG_ValueError, "Could not get interface context for netifcon statement"); + } + 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 { + qpol_nodecon(qpol_policy_t *p, int addr[4], int mask[4], int protocol) { + uint32_t a[4], m[4]; + qpol_nodecon_t *n; + 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"); + } + fail: + return n; + } + ~qpol_nodecon() { + free(self); + }; + char *addr(qpol_policy_t *p) { + uint32_t *a; + unsigned char proto; + char *addr = NULL; + + addr = malloc(INET6_ADDRSTRLEN * sizeof(char)); + if(!addr) + SWIG_exception(SWIG_MemoryError, "Out of memory"); + + if (qpol_nodecon_get_addr(p, self, &a, &proto)) { + SWIG_exception(SWIG_ValueError, "Could not get address of nodecon statement"); + } + + if(proto == QPOL_IPV4) { + inet_ntop(AF_INET, a, addr, INET6_ADDRSTRLEN); + } else { + inet_ntop(AF_INET6, a, addr, INET6_ADDRSTRLEN); + } + + fail: + return addr; + }; + char *mask(qpol_policy_t *p) { + uint32_t *m; + unsigned char proto; + char *mask; + mask = malloc(INET6_ADDRSTRLEN * sizeof(char)); + if (!mask) + SWIG_exception(SWIG_MemoryError, "Out of memory"); + + if (qpol_nodecon_get_mask(p, self, &m, &proto)) { + SWIG_exception(SWIG_ValueError, "Could not get mask of nodecon statement"); + } + + if(proto == QPOL_IPV4) { + inet_ntop(AF_INET, m, mask, INET6_ADDRSTRLEN); + } else { + inet_ntop(AF_INET6, m, mask, INET6_ADDRSTRLEN); + } + fail: + return mask; + }; + int protocol(qpol_policy_t *p) { + unsigned char proto; + if (qpol_nodecon_get_protocol(p, self, &proto)) { + SWIG_exception(SWIG_ValueError, "Could not get protocol for nodecon statement"); + } + fail: + if(proto == QPOL_IPV4) { + return AF_INET; + } else { + return AF_INET6; + } + }; + const qpol_context_t *context(qpol_policy_t *p) { + const qpol_context_t *ctx; + if (qpol_nodecon_get_context(p, self, &ctx)) { + SWIG_exception(SWIG_ValueError, "Could not get context for nodecon statement"); + } + 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 { + qpol_portcon(qpol_policy_t *p, uint16_t low, uint16_t high, uint8_t protocol) { + const qpol_portcon_t *qp; + if (qpol_policy_get_portcon_by_port(p, low, high, protocol, &qp)) { + SWIG_exception(SWIG_RuntimeError, "Portcon statement does not exist"); + } + fail: + return (qpol_portcon_t*)qp; + }; + ~qpol_portcon() { + /* no op */ + return; + }; + uint16_t low_port(qpol_policy_t *p) { + uint16_t port = 0; + if(qpol_portcon_get_low_port(p, self, &port)) { + SWIG_exception(SWIG_RuntimeError, "Could not get low port for portcon statement"); + } + fail: + return port; + }; + uint16_t high_port(qpol_policy_t *p) { + uint16_t port = 0; + if(qpol_portcon_get_high_port(p, self, &port)) { + SWIG_exception(SWIG_RuntimeError, "Could not get high port for portcon statement"); + } + fail: + return port; + }; + uint8_t protocol(qpol_policy_t *p) { + uint8_t proto = 0; + if (qpol_portcon_get_protocol(p, self, &proto)) { + SWIG_exception(SWIG_RuntimeError, "Could not get protocol for portcon statement"); + } + fail: + return proto; + }; + const qpol_context_t *context(qpol_policy_t *p) { + const qpol_context_t *ctx; + if (qpol_portcon_get_context(p, self, &ctx)) { + SWIG_exception(SWIG_ValueError, "Could not get context for portcon statement"); + } + 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 { + qpol_constraint() { + SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_constraint_t objects"); + fail: + return NULL; + }; + ~qpol_constraint() { + free(self); + }; + const qpol_class_t *object_class(qpol_policy_t *p) { + const qpol_class_t *cls; + if (qpol_constraint_get_class(p, self, &cls)) { + SWIG_exception(SWIG_ValueError, "Could not get class for constraint"); + } + fail: + return cls; + }; + + %newobject perm_iter(qpol_policy_t*); + %pythoncode %{ @QpolGenerator(_qpol.to_str) %} + qpol_iterator_t *perm_iter(qpol_policy_t *p) { + qpol_iterator_t *iter; + if (qpol_constraint_get_perm_iter(p, self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of memory"); + } + fail: + return iter; + }; + + %newobject expr_iter(qpol_policy_t*); + %pythoncode %{ @QpolGenerator(_qpol.qpol_constraint_expr_node_from_void) %} + qpol_iterator_t *expr_iter(qpol_policy_t *p) { + qpol_iterator_t *iter; + if (qpol_constraint_get_expr_iter(p, self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of memory"); + } + 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 { + qpol_validatetrans() { + SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_validatetrans_t objects"); + fail: + return NULL; + }; + ~qpol_validatetrans() { + free(self); + }; + const qpol_class_t *object_class(qpol_policy_t *p) { + const qpol_class_t *cls; + if (qpol_validatetrans_get_class(p, self, &cls)) { + SWIG_exception(SWIG_ValueError, "Could not get class for validatetrans"); + } + fail: + return cls; + }; + %newobject expr_iter(qpol_policy_t*); + %pythoncode %{ @QpolGenerator(_qpol.qpol_constraint_expr_node_from_void) %} + qpol_iterator_t *expr_iter(qpol_policy_t *p) { + qpol_iterator_t *iter; + if (qpol_validatetrans_get_expr_iter(p, self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of memory"); + } + 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 { + qpol_constraint_expr_node() { + SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_constraint_expr_node_t objects"); + fail: + return NULL; + }; + ~qpol_constraint_expr_node() { + /* no op */ + return; + }; + int expr_type(qpol_policy_t *p) { + uint32_t et; + if (qpol_constraint_expr_node_get_expr_type(p, self, &et)) { + SWIG_exception(SWIG_ValueError, "Could not get expression type for node"); + } + fail: + return (int) et; + }; + int sym_type(qpol_policy_t *p) { + uint32_t st; + if (qpol_constraint_expr_node_get_sym_type(p, self, &st)) { + SWIG_exception(SWIG_ValueError, "Could not get symbol type for node"); + } + fail: + return (int) st; + }; + int op(qpol_policy_t *p) { + uint32_t op; + if (qpol_constraint_expr_node_get_op(p, self, &op)) { + SWIG_exception(SWIG_ValueError, "Could not get operator for node"); + } + fail: + return (int) op; + }; + %newobject names_iter(qpol_policy_t*); + %pythoncode %{ @QpolGenerator(_qpol.to_str) %} + qpol_iterator_t *names_iter(qpol_policy_t *p) { + qpol_iterator_t *iter; + if (qpol_constraint_expr_node_get_names_iter(p, self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of memory"); + } + 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 { + qpol_role_allow() { + SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_role_allow_t objects"); + fail: + return NULL; + }; + ~qpol_role_allow() { + /* no op */ + return; + }; + %pythoncode %{ + def rule_type(self,policy): + return "allow" + %} + const qpol_role_t *source_role(qpol_policy_t *p) { + const qpol_role_t *r; + if (qpol_role_allow_get_source_role(p, self, &r)) { + SWIG_exception(SWIG_ValueError, "Could not get source for role allow rule"); + } + fail: + return r; + }; + const qpol_role_t *target_role(qpol_policy_t *p) { + const qpol_role_t *r; + if (qpol_role_allow_get_target_role(p, self, &r)) { + SWIG_exception(SWIG_ValueError, "Could not get target for role allow rule"); + } + 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 { + qpol_role_trans() { + SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_role_trans_t objects"); + fail: + return NULL; + }; + ~qpol_role_trans() { + /* no op */ + return; + }; + %pythoncode %{ + def rule_type(self,policy): + return "role_transition" + %} + const qpol_role_t *source_role(qpol_policy_t *p) { + const qpol_role_t *r; + if (qpol_role_trans_get_source_role(p, self, &r)) { + SWIG_exception(SWIG_ValueError, "Could not get source for role_transition rule"); + } + fail: + return r; + }; + const qpol_type_t *target_type(qpol_policy_t *p) { + const qpol_type_t *t; + if (qpol_role_trans_get_target_type(p, self, &t)) { + SWIG_exception(SWIG_ValueError, "Could not get target for role_transition rule"); + } + fail: + return t; + }; + const qpol_class_t *object_class(qpol_policy_t *p) { + const qpol_class_t *c; + if (qpol_role_trans_get_object_class(p, self, &c)) { + SWIG_exception(SWIG_ValueError, "Could not get class for role_transition rule"); + } + fail: + return c; + }; + const qpol_role_t *default_role(qpol_policy_t *p) { + const qpol_role_t *r; + if (qpol_role_trans_get_default_role(p, self, &r)) { + SWIG_exception(SWIG_ValueError, "Could not get default for role_transition rule"); + } + 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 { + qpol_range_trans() { + SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_range_trans_t objects"); + fail: + return NULL; + }; + ~qpol_range_trans() { + /* no op */ + return; + }; + %pythoncode %{ + def rule_type(self,policy): + return "range_transition" + %} + + const qpol_type_t *source_type (qpol_policy_t *p) { + const qpol_type_t *t; + if (qpol_range_trans_get_source_type(p, self, &t)) { + SWIG_exception(SWIG_ValueError, "Could not get source for range_transition rule"); + } + fail: + return t; + }; + const qpol_type_t *target_type (qpol_policy_t *p) { + const qpol_type_t *t; + if (qpol_range_trans_get_target_type(p, self, &t)) { + SWIG_exception(SWIG_ValueError, "Could not get target for range_transition rule"); } + fail: + return t; + }; + const qpol_class_t *object_class(qpol_policy_t *p) { + const qpol_class_t *cls; + if (qpol_range_trans_get_target_class(p, self, &cls)) { + SWIG_exception(SWIG_ValueError, "Could not get class for range_transition rule"); } + fail: + return cls; + }; + const qpol_mls_range_t *range(qpol_policy_t *p) { + const qpol_mls_range_t *r; + if (qpol_range_trans_get_range(p, self, &r)) { + SWIG_exception(SWIG_ValueError, "Could not get range for range_transition rule"); + } + 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 0x0001 +#define QPOL_RULE_NEVERALLOW 0x0080 +#define QPOL_RULE_AUDITALLOW 0x0002 +#define QPOL_RULE_DONTAUDIT 0x0004 +#define QPOL_RULE_XPERMS_ALLOW 0x0100 +#define QPOL_RULE_XPERMS_AUDITALLOW 0x0200 +#define QPOL_RULE_XPERMS_DONTAUDIT 0x0400 +#define QPOL_RULE_XPERMS_NEVERALLOW 0x0800 +typedef struct qpol_avrule {} qpol_avrule_t; +%extend qpol_avrule { + qpol_avrule() { + SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_avrule_t objects"); + fail: + return NULL; + }; + ~qpol_avrule() { + /* no op */ + return; + }; + const char * rule_type(qpol_policy_t *p) { + uint32_t rt; + if (qpol_avrule_get_rule_type(p, self, &rt)) { + SWIG_exception(SWIG_ValueError, "Could not get rule type for av rule"); + } + switch (rt) { + case QPOL_RULE_ALLOW: return "allow"; break; + case QPOL_RULE_NEVERALLOW: return "neverallow"; break; + case QPOL_RULE_AUDITALLOW: return "auditallow"; break; + case QPOL_RULE_DONTAUDIT: return "dontaudit"; break; + case QPOL_RULE_XPERMS_ALLOW: return "allowxperm"; break; + case QPOL_RULE_XPERMS_NEVERALLOW: return "neverallowxperm"; break; + case QPOL_RULE_XPERMS_AUDITALLOW: return "auditallowxperm"; break; + case QPOL_RULE_XPERMS_DONTAUDIT: return "dontauditxperm"; break; + } + fail: + return NULL; + }; + const qpol_type_t *source_type(qpol_policy_t *p) { + const qpol_type_t *t; + if (qpol_avrule_get_source_type(p, self, &t)) { + SWIG_exception(SWIG_ValueError, "Could not get source for av rule"); + } + fail: + return t; + }; + const qpol_type_t *target_type(qpol_policy_t *p) { + const qpol_type_t *t; + if (qpol_avrule_get_target_type(p, self, &t)) { + SWIG_exception(SWIG_ValueError, "Could not get target for av rule"); + } + fail: + return t; + }; + const qpol_class_t *object_class(qpol_policy_t *p) { + const qpol_class_t *cls; + if (qpol_avrule_get_object_class(p, self, &cls)) { + SWIG_exception(SWIG_ValueError, "Could not get class for av rule"); + } + fail: + return cls; + }; + + %newobject perm_iter(qpol_policy_t *p); + %pythoncode %{ @QpolGenerator(_qpol.to_str) %} + qpol_iterator_t *perm_iter(qpol_policy_t *p) { + qpol_iterator_t *iter; + if (qpol_avrule_get_perm_iter(p, self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of memory"); + } + fail: + return iter; + }; + + /* TODO, do I need an exception (similar to cond) that is thrown if you ask this on a non extended avrule? Likewise for asking for prems an an extended rule */ + %newobject xperm_iter(qpol_policy_t *p); + %pythoncode %{ @QpolGenerator(_qpol.to_int_with_free) %} + qpol_iterator_t *xperm_iter(qpol_policy_t *p) { + qpol_iterator_t *iter; + if (qpol_avrule_get_xperm_iter(p, self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of memory"); + } + fail: + return iter; + }; + int is_extended(qpol_policy_t *p) { + uint32_t e; + if (qpol_avrule_get_is_extended(p, self, &e)) { + SWIG_exception(SWIG_ValueError, "Could not determine if av rule is extended"); + } + fail: + return (int) e; + }; + const char * xperm_type(qpol_policy_t *p) { + char *xt; + if (qpol_avrule_get_xperm_type(p, self, &xt)) { + SWIG_exception(SWIG_ValueError, "Could not get xperm type for av rule"); + } + fail: + return xt; + }; + + %exception cond { + $action + if (!result) { + PyErr_SetString(PyExc_AttributeError, "Rule is not conditional."); + return NULL; + } + } + const qpol_cond_t *cond(qpol_policy_t *p) { + const qpol_cond_t *c; + qpol_avrule_get_cond(p, self, &c); + return c; + }; + int is_enabled(qpol_policy_t *p) { + uint32_t e; + if (qpol_avrule_get_is_enabled(p, self, &e)) { + SWIG_exception(SWIG_ValueError, "Could not determine if av rule is enabled"); + } + fail: + return (int) e; + }; + + %exception which_list { + $action + if (result < 0) { + PyErr_SetString(PyExc_AttributeError, "Rule is not conditional."); + return NULL; + } + } + int which_list(qpol_policy_t *p) { + const qpol_cond_t *c; + uint32_t which = 0; + qpol_avrule_get_cond(p, self, &c); + if (c == NULL) { + return -1; + } else if (qpol_avrule_get_which_list(p, self, &which)) { + return -1; + } + return (int) which; + }; + %newobject syn_avrule_iter(qpol_policy_t*); + qpol_iterator_t *syn_avrule_iter(qpol_policy_t *p) { + qpol_iterator_t *iter; + if (qpol_avrule_get_syn_avrule_iter(p, self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of memory"); + } + 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 { + qpol_terule() { + SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_terule_t objects"); + fail: + return NULL; + }; + ~qpol_terule() { + /* no op */ + return; + }; + const char * rule_type(qpol_policy_t *p) { + uint32_t rt; + if (qpol_terule_get_rule_type(p, self, &rt)) { + SWIG_exception(SWIG_ValueError, "Could not get rule type for te rule"); + } + switch (rt) { + case QPOL_RULE_TYPE_TRANS: return "type_transition"; break; + case QPOL_RULE_TYPE_CHANGE: return "type_change"; break; + case QPOL_RULE_TYPE_MEMBER: return "type_member"; break; + } + fail: + return NULL; + }; + const qpol_type_t *source_type(qpol_policy_t *p) { + const qpol_type_t *t; + if (qpol_terule_get_source_type(p, self, &t)) { + SWIG_exception(SWIG_ValueError, "Could not get source for te rule"); + } + fail: + return t; + }; + const qpol_type_t *target_type(qpol_policy_t *p) { + const qpol_type_t *t; + if (qpol_terule_get_target_type(p, self, &t)) { + SWIG_exception(SWIG_ValueError, "Could not get target for te rule"); + } + fail: + return t; + }; + const qpol_class_t *object_class(qpol_policy_t *p) { + const qpol_class_t *cls; + if (qpol_terule_get_object_class(p, self, &cls)) { + SWIG_exception(SWIG_ValueError, "Could not get class for te rule"); + } + fail: + return cls; + }; + const qpol_type_t *default_type(qpol_policy_t *p) { + const qpol_type_t *t; + if (qpol_terule_get_default_type(p, self, &t)) { + SWIG_exception(SWIG_ValueError, "Could not get default for te rule"); + } + fail: + return t; + }; + + %exception cond { + $action + if (!result) { + PyErr_SetString(PyExc_AttributeError, "Rule is not conditional."); + return NULL; + } + } + const qpol_cond_t *cond(qpol_policy_t *p) { + const qpol_cond_t *c; + qpol_terule_get_cond(p, self, &c); + return c; + }; + int is_enabled(qpol_policy_t *p) { + uint32_t e; + if (qpol_terule_get_is_enabled(p, self, &e)) { + SWIG_exception(SWIG_ValueError, "Could not determine if te rule is enabled"); + } + fail: + return (int) e; + }; + + %exception which_list { + $action + if (result < 0) { + PyErr_SetString(PyExc_AttributeError, "Rule is not conditional."); + return NULL; + } + } + int which_list(qpol_policy_t *p) { + const qpol_cond_t *c; + uint32_t which = 0; + qpol_terule_get_cond(p, self, &c); + if (c == NULL) { + return -1; + } else if (qpol_terule_get_which_list(p, self, &which)) { + return -1; + } + return (int) which; + }; + + %newobject syn_terule_iter(qpol_policy_t*); + qpol_iterator_t *syn_terule_iter(qpol_policy_t *p) { + qpol_iterator_t *iter; + if (qpol_terule_get_syn_terule_iter(p, self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of memory"); + } + 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 { + qpol_cond() { + SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_cond_t objects"); + fail: + return NULL; + }; + ~qpol_cond() { + /* no op */ + return; + }; + + %newobject expr_node_iter(qpol_policy_t*); + %pythoncode %{ @QpolGenerator(_qpol.qpol_cond_expr_node_from_void) %} + qpol_iterator_t *expr_node_iter(qpol_policy_t *p) { + qpol_iterator_t *iter; + if (qpol_cond_get_expr_node_iter(p, self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of memory"); + } + fail: + return iter; + }; + + %newobject av_true_iter(qpol_policy_t*, int); + qpol_iterator_t *av_true_iter(qpol_policy_t *p, int rule_types) { + qpol_iterator_t *iter; + if (qpol_cond_get_av_true_iter(p, self, rule_types, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of memory"); + } + fail: + return iter; + }; + %newobject av_false_iter(qpol_policy_t*, int); + qpol_iterator_t *av_false_iter(qpol_policy_t *p, int rule_types) { + qpol_iterator_t *iter; + if (qpol_cond_get_av_false_iter(p, self, rule_types, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of memory"); + } + fail: + return iter; + }; + %newobject te_true_iter(qpol_policy_t*, int); + qpol_iterator_t *te_true_iter(qpol_policy_t *p, int rule_types) { + qpol_iterator_t *iter; + if (qpol_cond_get_te_true_iter(p, self, rule_types, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of memory"); + } + fail: + return iter; + }; + %newobject te_false_iter(qpol_policy_t*, int); + qpol_iterator_t *te_false_iter(qpol_policy_t *p, int rule_types) { + qpol_iterator_t *iter; + if (qpol_cond_get_te_false_iter(p, self, rule_types, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of memory"); + } + fail: + return iter; + }; + int evaluate(qpol_policy_t *p) { + uint32_t e; + if (qpol_cond_eval(p, self, &e)) { + SWIG_exception(SWIG_RuntimeError, "Could not evaluate conditional"); + } + 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 { + qpol_cond_expr_node() { + SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_cond_expr_node_t objects"); + fail: + return NULL; + }; + ~qpol_cond_expr_node() { + /* no op */ + return; + }; + int expr_type(qpol_policy_t *p) { + uint32_t et; + if (qpol_cond_expr_node_get_expr_type(p, self, &et)) { + SWIG_exception(SWIG_ValueError, "Could not get node expression type"); + } + fail: + return (int) et; + }; + qpol_bool_t *get_boolean(qpol_policy_t *p) { + uint32_t et; + qpol_bool_t *b = NULL; + 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"); + } + 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 filename trans */ +typedef struct qpol_filename_trans {} qpol_filename_trans_t; +%extend qpol_filename_trans { + qpol_filename_trans() { + SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_filename_trans_t objects"); + fail: + return NULL; + }; + ~qpol_filename_trans() { + /* no op */ + return; + }; + %pythoncode %{ + def rule_type(self,policy): + return "type_transition" + %} + + const qpol_type_t *source_type (qpol_policy_t *p) { + const qpol_type_t *t; + if (qpol_filename_trans_get_source_type(p, self, &t)) { + SWIG_exception(SWIG_ValueError, "Could not get source for filename transition rule"); + } + fail: + return t; + }; + const qpol_type_t *target_type (qpol_policy_t *p) { + const qpol_type_t *t; + if (qpol_filename_trans_get_target_type(p, self, &t)) { + SWIG_exception(SWIG_ValueError, "Could not get target for filename transition rule"); } + fail: + return t; + }; + const qpol_class_t *object_class(qpol_policy_t *p) { + const qpol_class_t *cls; + if (qpol_filename_trans_get_object_class(p, self, &cls)) { + SWIG_exception(SWIG_ValueError, "Could not get class for filename transition rule"); } + fail: + return cls; + }; + const qpol_type_t *default_type(qpol_policy_t *p) { + const qpol_type_t *t; + if (qpol_filename_trans_get_default_type(p, self, &t)) { + SWIG_exception(SWIG_ValueError, "Could not get default for filename transition rule"); + } + fail: + return t; + }; + const char *filename(qpol_policy_t *p) { + const char *name; + if (qpol_filename_trans_get_filename(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get file for filename transition rule"); + } + fail: + return name; + }; + +}; +%inline %{ + qpol_filename_trans_t *qpol_filename_trans_from_void(void *x) { + return (qpol_filename_trans_t*)x; + }; +%} + +/* qpol polcap */ +typedef struct qpol_polcap {} qpol_polcap_t; +%extend qpol_polcap { + qpol_polcap() { + SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_polcap_t objects"); + fail: + return NULL; + }; + ~qpol_polcap() { + /* no op */ + return; + }; + const char *name(qpol_policy_t *p) { + const char *name; + if (qpol_polcap_get_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get polcap name rule"); + } + fail: + return name; + }; + +}; +%inline %{ + qpol_polcap_t *qpol_polcap_from_void(void *x) { + return (qpol_polcap_t*)x; + }; +%} + +/* qpol typebounds */ +typedef struct qpol_typebounds {} qpol_typebounds_t; +%extend qpol_typebounds { + qpol_typebounds() { + SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_typebounds_t objects"); + fail: + return NULL; + }; + ~qpol_typebounds() { + /* no op */ + return; + }; + const char *parent_name(qpol_policy_t *p) { + const char *name; + if (qpol_typebounds_get_parent_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get parent name"); + } + fail: + return name; + }; + const char *child_name(qpol_policy_t *p) { + const char *name; + if (qpol_typebounds_get_child_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get child name"); + } + fail: + return name; + }; +}; +%inline %{ + qpol_typebounds_t *qpol_typebounds_from_void(void *x) { + return (qpol_typebounds_t*)x; + }; +%} + +/* qpol rolebounds */ +typedef struct qpol_rolebounds {} qpol_rolebounds_t; +%extend qpol_rolebounds { + qpol_rolebounds() { + SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_rolebounds_t objects"); + fail: + return NULL; + }; + ~qpol_rolebounds() { + /* no op */ + return; + }; + const char *parent_name(qpol_policy_t *p) { + const char *name; + if (qpol_rolebounds_get_parent_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get parent name"); + } + fail: + return name; + }; + const char *child_name(qpol_policy_t *p) { + const char *name; + if (qpol_rolebounds_get_child_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get child name"); + } + fail: + return name; + }; +}; +%inline %{ + qpol_rolebounds_t *qpol_rolebounds_from_void(void *x) { + return (qpol_rolebounds_t*)x; + }; +%} + +/* qpol userbounds */ +typedef struct qpol_userbounds {} qpol_userbounds_t; +%extend qpol_userbounds { + qpol_userbounds() { + SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_userbounds_t objects"); + fail: + return NULL; + }; + ~qpol_userbounds() { + /* no op */ + return; + }; + const char *parent_name(qpol_policy_t *p) { + const char *name; + if (qpol_userbounds_get_parent_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get parent name"); + } + fail: + return name; + }; + const char *child_name(qpol_policy_t *p) { + const char *name; + if (qpol_userbounds_get_child_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get child name"); + } + fail: + return name; + }; +}; +%inline %{ + qpol_userbounds_t *qpol_userbounds_from_void(void *x) { + return (qpol_userbounds_t*)x; + }; +%} + +/* qpol default_object */ +typedef struct qpol_default_object {} qpol_default_object_t; +%extend qpol_default_object { + qpol_default_object() { + SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_default_object_t objects"); + fail: + return NULL; + }; + ~qpol_default_object() { + /* no op */ + return; + }; + + %newobject object_class(); + const qpol_class_t *object_class(qpol_policy_t *p) { + const qpol_class_t *cls; + if (qpol_default_object_get_class(p, self, &cls)) { + SWIG_exception(SWIG_ValueError, "Could not get class"); + } + fail: + return cls; + }; + + const char *user_default(qpol_policy_t *p) { + const char *value; + if (qpol_default_object_get_user_default(p, self, &value)) { + SWIG_exception(SWIG_ValueError, "Could not get user default"); + } + fail: + return value; + }; + const char *role_default(qpol_policy_t *p) { + const char *value; + if (qpol_default_object_get_role_default(p, self, &value)) { + SWIG_exception(SWIG_ValueError, "Could not get role default"); + } + fail: + return value; + }; + const char *type_default(qpol_policy_t *p) { + const char *value; + if (qpol_default_object_get_type_default(p, self, &value)) { + SWIG_exception(SWIG_ValueError, "Could not get type default"); + } + fail: + return value; + }; + const char *range_default(qpol_policy_t *p) { + const char *value; + if (qpol_default_object_get_range_default(p, self, &value)) { + SWIG_exception(SWIG_ValueError, "Could not get range defaults"); + } + fail: + return value; + }; +}; +%inline %{ + qpol_default_object_t *qpol_default_object_from_void(void *x) { + return (qpol_default_object_t*)x; + }; +%} + +/* qpol iomemcon */ +typedef struct qpol_iomemcon {} qpol_iomemcon_t; +%extend qpol_iomemcon { + qpol_iomemcon(qpol_policy_t *p, uint64_t low, uint64_t high) { + const qpol_iomemcon_t *qp; + if (qpol_policy_get_iomemcon_by_addr(p, low, high, &qp)) { + SWIG_exception(SWIG_RuntimeError, "iomemcon statement does not exist"); + } + fail: + return (qpol_iomemcon_t*)qp; + }; + ~qpol_iomemcon() { + /* no op */ + return; + }; + uint64_t low_addr(qpol_policy_t *p) { + uint64_t addr = 0; + if(qpol_iomemcon_get_low_addr(p, self, &addr)) { + SWIG_exception(SWIG_RuntimeError, "Could not get low addr for iomemcon statement"); + } + fail: + return addr; + }; + uint64_t high_addr(qpol_policy_t *p) { + uint64_t addr = 0; + if(qpol_iomemcon_get_high_addr(p, self, &addr)) { + SWIG_exception(SWIG_RuntimeError, "Could not get high addr for iomemcon statement"); + } + fail: + return addr; + }; + const qpol_context_t *context(qpol_policy_t *p) { + const qpol_context_t *ctx; + if (qpol_iomemcon_get_context(p, self, &ctx)) { + SWIG_exception(SWIG_ValueError, "Could not get context for iomemcon statement"); + } + fail: + return ctx; + }; +} +%inline %{ + qpol_iomemcon_t *qpol_iomemcon_from_void(void *x) { + return (qpol_iomemcon_t*)x; + }; +%} + +/* qpol ioportcon */ +typedef struct qpol_ioportcon {} qpol_ioportcon_t; +%extend qpol_ioportcon { + qpol_ioportcon(qpol_policy_t *p, uint32_t low, uint32_t high) { + const qpol_ioportcon_t *qp; + if (qpol_policy_get_ioportcon_by_port(p, low, high, &qp)) { + SWIG_exception(SWIG_RuntimeError, "ioportcon statement does not exist"); + } + fail: + return (qpol_ioportcon_t*)qp; + }; + ~qpol_ioportcon() { + /* no op */ + return; + }; + uint32_t low_port(qpol_policy_t *p) { + uint32_t port = 0; + if(qpol_ioportcon_get_low_port(p, self, &port)) { + SWIG_exception(SWIG_RuntimeError, "Could not get low port for ioportcon statement"); + } + fail: + return port; + }; + uint32_t high_port(qpol_policy_t *p) { + uint32_t port = 0; + if(qpol_ioportcon_get_high_port(p, self, &port)) { + SWIG_exception(SWIG_RuntimeError, "Could not get high port for ioportcon statement"); + } + fail: + return port; + }; + const qpol_context_t *context(qpol_policy_t *p) { + const qpol_context_t *ctx; + if (qpol_ioportcon_get_context(p, self, &ctx)) { + SWIG_exception(SWIG_ValueError, "Could not get context for ioportcon statement"); + } + fail: + return ctx; + }; +} +%inline %{ + qpol_ioportcon_t *qpol_ioportcon_from_void(void *x) { + return (qpol_ioportcon_t*)x; + }; +%} + +/* qpol pcidevicecon */ +typedef struct qpol_pcidevicecon {} qpol_pcidevicecon_t; +%extend qpol_pcidevicecon { + qpol_pcidevicecon() { + SWIG_exception(SWIG_RuntimeError, "pcidevicecon statement does not exist"); + fail: + return NULL; + }; + ~qpol_pcidevicecon() { + return; + }; + uint32_t device(qpol_policy_t *p) { + uint32_t device = 0; + if(qpol_pcidevicecon_get_device(p, self, &device)) { + SWIG_exception(SWIG_RuntimeError, "Could not get device for pcidevicecon statement"); + } + fail: + return device; + }; + const qpol_context_t *context(qpol_policy_t *p) { + const qpol_context_t *ctx; + if (qpol_pcidevicecon_get_context(p, self, &ctx)) { + SWIG_exception(SWIG_ValueError, "Could not get context for pcidevicecon statement"); + } + fail: + return ctx; + }; +} +%inline %{ + qpol_pcidevicecon_t *qpol_pcidevicecon_from_void(void *x) { + return (qpol_pcidevicecon_t*)x; + }; +%} + +/* qpol pirqcon */ +typedef struct qpol_pirqcon {} qpol_pirqcon_t; +%extend qpol_pirqcon { + qpol_pirqcon() { + SWIG_exception(SWIG_RuntimeError, "pirqcon statement does not exist"); + fail: + return NULL; + }; + ~qpol_pirqcon() { + return; + }; + uint32_t irq(qpol_policy_t *p) { + uint16_t irq = 0; + if(qpol_pirqcon_get_irq(p, self, &irq)) { + SWIG_exception(SWIG_RuntimeError, "Could not get irq for pirqcon statement"); + } + fail: + return irq; + }; + const qpol_context_t *context(qpol_policy_t *p) { + const qpol_context_t *ctx; + if (qpol_pirqcon_get_context(p, self, &ctx)) { + SWIG_exception(SWIG_ValueError, "Could not get context for pirqcon statement"); + } + fail: + return ctx; + }; +} +%inline %{ + qpol_pirqcon_t *qpol_pirqcon_from_void(void *x) { + return (qpol_pirqcon_t*)x; + }; +%} + +/* qpol devicetreecon */ +typedef struct qpol_devicetreecon {} qpol_devicetreecon_t; +%extend qpol_devicetreecon { + qpol_devicetreecon() { + + SWIG_exception(SWIG_RuntimeError, "devicetreecon statement does not exist"); + + fail: + return NULL; + }; + char *path(qpol_policy_t *p) { + char *path = NULL; + if(qpol_devicetreecon_get_path(p, self, &path)) { + SWIG_exception(SWIG_RuntimeError, "Could not get path for devicetreecon statement"); + } + fail: + return path; + }; + const qpol_context_t *context(qpol_policy_t *p) { + const qpol_context_t *ctx; + if (qpol_devicetreecon_get_context(p, self, &ctx)) { + SWIG_exception(SWIG_ValueError, "Could not get context for devicetreecon statement"); + } + fail: + return ctx; + }; +} +%inline %{ + qpol_devicetreecon_t *qpol_devicetreecon_from_void(void *x) { + return (qpol_devicetreecon_t*)x; + }; +%} + diff --git a/lib/python2.7/site-packages/setools/policyrep/qpol.py b/lib/python2.7/site-packages/setools/policyrep/qpol.py index 97e602b..d190a41 100644..100755 --- a/lib/python2.7/site-packages/setools/policyrep/qpol.py +++ b/lib/python2.7/site-packages/setools/policyrep/qpol.py @@ -73,6 +73,10 @@ except AttributeError: def to_str(*args): return _qpol.to_str(*args) to_str = _qpol.to_str + +def to_int_with_free(*args): + return _qpol.to_int_with_free(*args) +to_int_with_free = _qpol.to_int_with_free import logging from functools import wraps @@ -105,7 +109,7 @@ def QpolGenerator(cast): def qpol_logger(level, msg): """Log qpol messages via Python logging.""" - logging.getLogger("libqpol").debug(msg) + logging.getLogger(__name__).debug(msg) def qpol_policy_factory(path): """Factory function for qpol policy objects.""" @@ -132,6 +136,7 @@ class qpol_policy_t(_object): __del__ = lambda self : None; def version(self): return _qpol.qpol_policy_t_version(self) def handle_unknown(self): return _qpol.qpol_policy_t_handle_unknown(self) + def target_platform(self): return _qpol.qpol_policy_t_target_platform(self) def capability(self, *args): return _qpol.qpol_policy_t_capability(self, *args) @QpolGenerator(_qpol.qpol_type_from_void) def type_iter(self): return _qpol.qpol_policy_t_type_iter(self) @@ -196,6 +201,12 @@ class qpol_policy_t(_object): def avrule_auditallow_count(self): return _qpol.qpol_policy_t_avrule_auditallow_count(self) def avrule_neverallow_count(self): return _qpol.qpol_policy_t_avrule_neverallow_count(self) def avrule_dontaudit_count(self): return _qpol.qpol_policy_t_avrule_dontaudit_count(self) + @QpolGenerator(_qpol.qpol_avrule_from_void) + def avrulex_iter(self): return _qpol.qpol_policy_t_avrulex_iter(self) + def avrule_allowx_count(self): return _qpol.qpol_policy_t_avrule_allowx_count(self) + def avrule_auditallowx_count(self): return _qpol.qpol_policy_t_avrule_auditallowx_count(self) + def avrule_neverallowx_count(self): return _qpol.qpol_policy_t_avrule_neverallowx_count(self) + def avrule_dontauditx_count(self): return _qpol.qpol_policy_t_avrule_dontauditx_count(self) @QpolGenerator(_qpol.qpol_terule_from_void) def terule_iter(self): return _qpol.qpol_policy_t_terule_iter(self) def terule_trans_count(self): return _qpol.qpol_policy_t_terule_trans_count(self) @@ -209,13 +220,28 @@ class qpol_policy_t(_object): @QpolGenerator(_qpol.qpol_type_from_void) def permissive_iter(self): return _qpol.qpol_policy_t_permissive_iter(self) def permissive_count(self): return _qpol.qpol_policy_t_permissive_count(self) + @QpolGenerator(_qpol.qpol_typebounds_from_void) def typebounds_iter(self): return _qpol.qpol_policy_t_typebounds_iter(self) - def typebounds_count(self): return _qpol.qpol_policy_t_typebounds_count(self) @QpolGenerator(_qpol.qpol_polcap_from_void) def polcap_iter(self): return _qpol.qpol_policy_t_polcap_iter(self) def polcap_count(self): return _qpol.qpol_policy_t_polcap_count(self) @QpolGenerator(_qpol.qpol_default_object_from_void) def default_iter(self): return _qpol.qpol_policy_t_default_iter(self) + @QpolGenerator(_qpol.qpol_iomemcon_from_void) + def iomemcon_iter(self): return _qpol.qpol_policy_t_iomemcon_iter(self) + def iomemcon_count(self): return _qpol.qpol_policy_t_iomemcon_count(self) + @QpolGenerator(_qpol.qpol_ioportcon_from_void) + def ioportcon_iter(self): return _qpol.qpol_policy_t_ioportcon_iter(self) + def ioportcon_count(self): return _qpol.qpol_policy_t_ioportcon_count(self) + @QpolGenerator(_qpol.qpol_pcidevicecon_from_void) + def pcidevicecon_iter(self): return _qpol.qpol_policy_t_pcidevicecon_iter(self) + def pcidevicecon_count(self): return _qpol.qpol_policy_t_pcidevicecon_count(self) + @QpolGenerator(_qpol.qpol_pirqcon_from_void) + def pirqcon_iter(self): return _qpol.qpol_policy_t_pirqcon_iter(self) + def pirqcon_count(self): return _qpol.qpol_policy_t_pirqcon_count(self) + @QpolGenerator(_qpol.qpol_devicetreecon_from_void) + def devicetreecon_iter(self): return _qpol.qpol_policy_t_devicetreecon_iter(self) + def devicetreecon_count(self): return _qpol.qpol_policy_t_devicetreecon_count(self) qpol_policy_t_swigregister = _qpol.qpol_policy_t_swigregister qpol_policy_t_swigregister(qpol_policy_t) @@ -235,6 +261,7 @@ QPOL_CAP_DEFAULT_TYPE = _qpol.QPOL_CAP_DEFAULT_TYPE QPOL_CAP_PERMISSIVE = _qpol.QPOL_CAP_PERMISSIVE QPOL_CAP_FILENAME_TRANS = _qpol.QPOL_CAP_FILENAME_TRANS QPOL_CAP_ROLETRANS = _qpol.QPOL_CAP_ROLETRANS +QPOL_CAP_XPERM_IOCTL = _qpol.QPOL_CAP_XPERM_IOCTL class qpol_iterator_t(_object): __swig_setmethods__ = {} __setattr__ = lambda self, name, value: _swig_setattr(self, qpol_iterator_t, name, value) @@ -861,6 +888,10 @@ QPOL_RULE_ALLOW = _qpol.QPOL_RULE_ALLOW QPOL_RULE_NEVERALLOW = _qpol.QPOL_RULE_NEVERALLOW QPOL_RULE_AUDITALLOW = _qpol.QPOL_RULE_AUDITALLOW QPOL_RULE_DONTAUDIT = _qpol.QPOL_RULE_DONTAUDIT +QPOL_RULE_XPERMS_ALLOW = _qpol.QPOL_RULE_XPERMS_ALLOW +QPOL_RULE_XPERMS_AUDITALLOW = _qpol.QPOL_RULE_XPERMS_AUDITALLOW +QPOL_RULE_XPERMS_DONTAUDIT = _qpol.QPOL_RULE_XPERMS_DONTAUDIT +QPOL_RULE_XPERMS_NEVERALLOW = _qpol.QPOL_RULE_XPERMS_NEVERALLOW class qpol_avrule_t(_object): __swig_setmethods__ = {} __setattr__ = lambda self, name, value: _swig_setattr(self, qpol_avrule_t, name, value) @@ -879,6 +910,10 @@ class qpol_avrule_t(_object): def object_class(self, *args): return _qpol.qpol_avrule_t_object_class(self, *args) @QpolGenerator(_qpol.to_str) def perm_iter(self, *args): return _qpol.qpol_avrule_t_perm_iter(self, *args) + @QpolGenerator(_qpol.to_int_with_free) + def xperm_iter(self, *args): return _qpol.qpol_avrule_t_xperm_iter(self, *args) + def is_extended(self, *args): return _qpol.qpol_avrule_t_is_extended(self, *args) + def xperm_type(self, *args): return _qpol.qpol_avrule_t_xperm_type(self, *args) def cond(self, *args): return _qpol.qpol_avrule_t_cond(self, *args) def is_enabled(self, *args): return _qpol.qpol_avrule_t_is_enabled(self, *args) def which_list(self, *args): return _qpol.qpol_avrule_t_which_list(self, *args) @@ -1109,6 +1144,113 @@ qpol_default_object_t_swigregister(qpol_default_object_t) def qpol_default_object_from_void(*args): return _qpol.qpol_default_object_from_void(*args) qpol_default_object_from_void = _qpol.qpol_default_object_from_void +class qpol_iomemcon_t(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, qpol_iomemcon_t, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, qpol_iomemcon_t, name) + __repr__ = _swig_repr + def __init__(self, *args): + this = _qpol.new_qpol_iomemcon_t(*args) + try: self.this.append(this) + except: self.this = this + __swig_destroy__ = _qpol.delete_qpol_iomemcon_t + __del__ = lambda self : None; + def low_addr(self, *args): return _qpol.qpol_iomemcon_t_low_addr(self, *args) + def high_addr(self, *args): return _qpol.qpol_iomemcon_t_high_addr(self, *args) + def context(self, *args): return _qpol.qpol_iomemcon_t_context(self, *args) +qpol_iomemcon_t_swigregister = _qpol.qpol_iomemcon_t_swigregister +qpol_iomemcon_t_swigregister(qpol_iomemcon_t) + + +def qpol_iomemcon_from_void(*args): + return _qpol.qpol_iomemcon_from_void(*args) +qpol_iomemcon_from_void = _qpol.qpol_iomemcon_from_void +class qpol_ioportcon_t(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, qpol_ioportcon_t, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, qpol_ioportcon_t, name) + __repr__ = _swig_repr + def __init__(self, *args): + this = _qpol.new_qpol_ioportcon_t(*args) + try: self.this.append(this) + except: self.this = this + __swig_destroy__ = _qpol.delete_qpol_ioportcon_t + __del__ = lambda self : None; + def low_port(self, *args): return _qpol.qpol_ioportcon_t_low_port(self, *args) + def high_port(self, *args): return _qpol.qpol_ioportcon_t_high_port(self, *args) + def context(self, *args): return _qpol.qpol_ioportcon_t_context(self, *args) +qpol_ioportcon_t_swigregister = _qpol.qpol_ioportcon_t_swigregister +qpol_ioportcon_t_swigregister(qpol_ioportcon_t) + + +def qpol_ioportcon_from_void(*args): + return _qpol.qpol_ioportcon_from_void(*args) +qpol_ioportcon_from_void = _qpol.qpol_ioportcon_from_void +class qpol_pcidevicecon_t(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, qpol_pcidevicecon_t, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, qpol_pcidevicecon_t, name) + __repr__ = _swig_repr + def __init__(self): + this = _qpol.new_qpol_pcidevicecon_t() + try: self.this.append(this) + except: self.this = this + __swig_destroy__ = _qpol.delete_qpol_pcidevicecon_t + __del__ = lambda self : None; + def device(self, *args): return _qpol.qpol_pcidevicecon_t_device(self, *args) + def context(self, *args): return _qpol.qpol_pcidevicecon_t_context(self, *args) +qpol_pcidevicecon_t_swigregister = _qpol.qpol_pcidevicecon_t_swigregister +qpol_pcidevicecon_t_swigregister(qpol_pcidevicecon_t) + + +def qpol_pcidevicecon_from_void(*args): + return _qpol.qpol_pcidevicecon_from_void(*args) +qpol_pcidevicecon_from_void = _qpol.qpol_pcidevicecon_from_void +class qpol_pirqcon_t(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, qpol_pirqcon_t, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, qpol_pirqcon_t, name) + __repr__ = _swig_repr + def __init__(self): + this = _qpol.new_qpol_pirqcon_t() + try: self.this.append(this) + except: self.this = this + __swig_destroy__ = _qpol.delete_qpol_pirqcon_t + __del__ = lambda self : None; + def irq(self, *args): return _qpol.qpol_pirqcon_t_irq(self, *args) + def context(self, *args): return _qpol.qpol_pirqcon_t_context(self, *args) +qpol_pirqcon_t_swigregister = _qpol.qpol_pirqcon_t_swigregister +qpol_pirqcon_t_swigregister(qpol_pirqcon_t) + + +def qpol_pirqcon_from_void(*args): + return _qpol.qpol_pirqcon_from_void(*args) +qpol_pirqcon_from_void = _qpol.qpol_pirqcon_from_void +class qpol_devicetreecon_t(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, qpol_devicetreecon_t, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, qpol_devicetreecon_t, name) + __repr__ = _swig_repr + def __init__(self): + this = _qpol.new_qpol_devicetreecon_t() + try: self.this.append(this) + except: self.this = this + def path(self, *args): return _qpol.qpol_devicetreecon_t_path(self, *args) + def context(self, *args): return _qpol.qpol_devicetreecon_t_context(self, *args) + __swig_destroy__ = _qpol.delete_qpol_devicetreecon_t + __del__ = lambda self : None; +qpol_devicetreecon_t_swigregister = _qpol.qpol_devicetreecon_t_swigregister +qpol_devicetreecon_t_swigregister(qpol_devicetreecon_t) + + +def qpol_devicetreecon_from_void(*args): + return _qpol.qpol_devicetreecon_from_void(*args) +qpol_devicetreecon_from_void = _qpol.qpol_devicetreecon_from_void # This file is compatible with both classic and new-style classes. diff --git a/lib/python2.7/site-packages/setools/policyrep/qpol_wrap.c b/lib/python2.7/site-packages/setools/policyrep/qpol_wrap.c new file mode 100644 index 0000000..7d239af --- /dev/null +++ b/lib/python2.7/site-packages/setools/policyrep/qpol_wrap.c @@ -0,0 +1,16972 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * This file is not intended to be easily readable and contains a number of + * coding conventions designed to improve portability and efficiency. Do not make + * changes to this file unless you know what you are doing--modify the SWIG + * interface file instead. + * ----------------------------------------------------------------------------- */ + +#define SWIGPYTHON +#define SWIG_PYTHON_DIRECTOR_NO_VTABLE + +/* ----------------------------------------------------------------------------- + * This section contains generic SWIG labels for method/variable + * declarations/attributes, and other compiler dependent labels. + * ----------------------------------------------------------------------------- */ + +/* template workaround for compilers that cannot correctly implement the C++ standard */ +#ifndef SWIGTEMPLATEDISAMBIGUATOR +# if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560) +# define SWIGTEMPLATEDISAMBIGUATOR template +# elif defined(__HP_aCC) +/* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */ +/* If we find a maximum version that requires this, the test would be __HP_aCC <= 35500 for A.03.55 */ +# define SWIGTEMPLATEDISAMBIGUATOR template +# else +# define SWIGTEMPLATEDISAMBIGUATOR +# endif +#endif + +/* inline attribute */ +#ifndef SWIGINLINE +# if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__)) +# define SWIGINLINE inline +# else +# define SWIGINLINE +# endif +#endif + +/* attribute recognised by some compilers to avoid 'unused' warnings */ +#ifndef SWIGUNUSED +# if defined(__GNUC__) +# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) +# define SWIGUNUSED __attribute__ ((__unused__)) +# else +# define SWIGUNUSED +# endif +# elif defined(__ICC) +# define SWIGUNUSED __attribute__ ((__unused__)) +# else +# define SWIGUNUSED +# endif +#endif + +#ifndef SWIG_MSC_UNSUPPRESS_4505 +# if defined(_MSC_VER) +# pragma warning(disable : 4505) /* unreferenced local function has been removed */ +# endif +#endif + +#ifndef SWIGUNUSEDPARM +# ifdef __cplusplus +# define SWIGUNUSEDPARM(p) +# else +# define SWIGUNUSEDPARM(p) p SWIGUNUSED +# endif +#endif + +/* internal SWIG method */ +#ifndef SWIGINTERN +# define SWIGINTERN static SWIGUNUSED +#endif + +/* internal inline SWIG method */ +#ifndef SWIGINTERNINLINE +# define SWIGINTERNINLINE SWIGINTERN SWIGINLINE +#endif + +/* exporting methods */ +#if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) +# ifndef GCC_HASCLASSVISIBILITY +# define GCC_HASCLASSVISIBILITY +# endif +#endif + +#ifndef SWIGEXPORT +# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) +# if defined(STATIC_LINKED) +# define SWIGEXPORT +# else +# define SWIGEXPORT __declspec(dllexport) +# endif +# else +# if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) +# define SWIGEXPORT __attribute__ ((visibility("default"))) +# else +# define SWIGEXPORT +# endif +# endif +#endif + +/* calling conventions for Windows */ +#ifndef SWIGSTDCALL +# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) +# define SWIGSTDCALL __stdcall +# else +# define SWIGSTDCALL +# endif +#endif + +/* Deal with Microsoft's attempt at deprecating C standard runtime functions */ +#if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE) +# define _CRT_SECURE_NO_DEPRECATE +#endif + +/* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */ +#if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_SCL_SECURE_NO_DEPRECATE) +# define _SCL_SECURE_NO_DEPRECATE +#endif + + + +#if defined(_DEBUG) && defined(SWIG_PYTHON_INTERPRETER_NO_DEBUG) +/* Use debug wrappers with the Python release dll */ +# undef _DEBUG +# include <Python.h> +# define _DEBUG +#else +# include <Python.h> +#endif + +/* ----------------------------------------------------------------------------- + * swigrun.swg + * + * This file contains generic C API SWIG runtime support for pointer + * type checking. + * ----------------------------------------------------------------------------- */ + +/* This should only be incremented when either the layout of swig_type_info changes, + or for whatever reason, the runtime changes incompatibly */ +#define SWIG_RUNTIME_VERSION "4" + +/* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */ +#ifdef SWIG_TYPE_TABLE +# define SWIG_QUOTE_STRING(x) #x +# define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x) +# define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE) +#else +# define SWIG_TYPE_TABLE_NAME +#endif + +/* + You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for + creating a static or dynamic library from the SWIG runtime code. + In 99.9% of the cases, SWIG just needs to declare them as 'static'. + + But only do this if strictly necessary, ie, if you have problems + with your compiler or suchlike. +*/ + +#ifndef SWIGRUNTIME +# define SWIGRUNTIME SWIGINTERN +#endif + +#ifndef SWIGRUNTIMEINLINE +# define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE +#endif + +/* Generic buffer size */ +#ifndef SWIG_BUFFER_SIZE +# define SWIG_BUFFER_SIZE 1024 +#endif + +/* Flags for pointer conversions */ +#define SWIG_POINTER_DISOWN 0x1 +#define SWIG_CAST_NEW_MEMORY 0x2 + +/* Flags for new pointer objects */ +#define SWIG_POINTER_OWN 0x1 + + +/* + Flags/methods for returning states. + + The SWIG conversion methods, as ConvertPtr, return an integer + that tells if the conversion was successful or not. And if not, + an error code can be returned (see swigerrors.swg for the codes). + + Use the following macros/flags to set or process the returning + states. + + In old versions of SWIG, code such as the following was usually written: + + if (SWIG_ConvertPtr(obj,vptr,ty.flags) != -1) { + // success code + } else { + //fail code + } + + Now you can be more explicit: + + int res = SWIG_ConvertPtr(obj,vptr,ty.flags); + if (SWIG_IsOK(res)) { + // success code + } else { + // fail code + } + + which is the same really, but now you can also do + + Type *ptr; + int res = SWIG_ConvertPtr(obj,(void **)(&ptr),ty.flags); + if (SWIG_IsOK(res)) { + // success code + if (SWIG_IsNewObj(res) { + ... + delete *ptr; + } else { + ... + } + } else { + // fail code + } + + I.e., now SWIG_ConvertPtr can return new objects and you can + identify the case and take care of the deallocation. Of course that + also requires SWIG_ConvertPtr to return new result values, such as + + int SWIG_ConvertPtr(obj, ptr,...) { + if (<obj is ok>) { + if (<need new object>) { + *ptr = <ptr to new allocated object>; + return SWIG_NEWOBJ; + } else { + *ptr = <ptr to old object>; + return SWIG_OLDOBJ; + } + } else { + return SWIG_BADOBJ; + } + } + + Of course, returning the plain '0(success)/-1(fail)' still works, but you can be + more explicit by returning SWIG_BADOBJ, SWIG_ERROR or any of the + SWIG errors code. + + Finally, if the SWIG_CASTRANK_MODE is enabled, the result code + allows to return the 'cast rank', for example, if you have this + + int food(double) + int fooi(int); + + and you call + + food(1) // cast rank '1' (1 -> 1.0) + fooi(1) // cast rank '0' + + just use the SWIG_AddCast()/SWIG_CheckState() +*/ + +#define SWIG_OK (0) +#define SWIG_ERROR (-1) +#define SWIG_IsOK(r) (r >= 0) +#define SWIG_ArgError(r) ((r != SWIG_ERROR) ? r : SWIG_TypeError) + +/* The CastRankLimit says how many bits are used for the cast rank */ +#define SWIG_CASTRANKLIMIT (1 << 8) +/* The NewMask denotes the object was created (using new/malloc) */ +#define SWIG_NEWOBJMASK (SWIG_CASTRANKLIMIT << 1) +/* The TmpMask is for in/out typemaps that use temporal objects */ +#define SWIG_TMPOBJMASK (SWIG_NEWOBJMASK << 1) +/* Simple returning values */ +#define SWIG_BADOBJ (SWIG_ERROR) +#define SWIG_OLDOBJ (SWIG_OK) +#define SWIG_NEWOBJ (SWIG_OK | SWIG_NEWOBJMASK) +#define SWIG_TMPOBJ (SWIG_OK | SWIG_TMPOBJMASK) +/* Check, add and del mask methods */ +#define SWIG_AddNewMask(r) (SWIG_IsOK(r) ? (r | SWIG_NEWOBJMASK) : r) +#define SWIG_DelNewMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_NEWOBJMASK) : r) +#define SWIG_IsNewObj(r) (SWIG_IsOK(r) && (r & SWIG_NEWOBJMASK)) +#define SWIG_AddTmpMask(r) (SWIG_IsOK(r) ? (r | SWIG_TMPOBJMASK) : r) +#define SWIG_DelTmpMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_TMPOBJMASK) : r) +#define SWIG_IsTmpObj(r) (SWIG_IsOK(r) && (r & SWIG_TMPOBJMASK)) + +/* Cast-Rank Mode */ +#if defined(SWIG_CASTRANK_MODE) +# ifndef SWIG_TypeRank +# define SWIG_TypeRank unsigned long +# endif +# ifndef SWIG_MAXCASTRANK /* Default cast allowed */ +# define SWIG_MAXCASTRANK (2) +# endif +# define SWIG_CASTRANKMASK ((SWIG_CASTRANKLIMIT) -1) +# define SWIG_CastRank(r) (r & SWIG_CASTRANKMASK) +SWIGINTERNINLINE int SWIG_AddCast(int r) { + return SWIG_IsOK(r) ? ((SWIG_CastRank(r) < SWIG_MAXCASTRANK) ? (r + 1) : SWIG_ERROR) : r; +} +SWIGINTERNINLINE int SWIG_CheckState(int r) { + return SWIG_IsOK(r) ? SWIG_CastRank(r) + 1 : 0; +} +#else /* no cast-rank mode */ +# define SWIG_AddCast(r) (r) +# define SWIG_CheckState(r) (SWIG_IsOK(r) ? 1 : 0) +#endif + + +#include <string.h> + +#ifdef __cplusplus +extern "C" { +#endif + +typedef void *(*swig_converter_func)(void *, int *); +typedef struct swig_type_info *(*swig_dycast_func)(void **); + +/* Structure to store information on one type */ +typedef struct swig_type_info { + const char *name; /* mangled name of this type */ + const char *str; /* human readable name of this type */ + swig_dycast_func dcast; /* dynamic cast function down a hierarchy */ + struct swig_cast_info *cast; /* linked list of types that can cast into this type */ + void *clientdata; /* language specific type data */ + int owndata; /* flag if the structure owns the clientdata */ +} swig_type_info; + +/* Structure to store a type and conversion function used for casting */ +typedef struct swig_cast_info { + swig_type_info *type; /* pointer to type that is equivalent to this type */ + swig_converter_func converter; /* function to cast the void pointers */ + struct swig_cast_info *next; /* pointer to next cast in linked list */ + struct swig_cast_info *prev; /* pointer to the previous cast */ +} swig_cast_info; + +/* Structure used to store module information + * Each module generates one structure like this, and the runtime collects + * all of these structures and stores them in a circularly linked list.*/ +typedef struct swig_module_info { + swig_type_info **types; /* Array of pointers to swig_type_info structures that are in this module */ + size_t size; /* Number of types in this module */ + struct swig_module_info *next; /* Pointer to next element in circularly linked list */ + swig_type_info **type_initial; /* Array of initially generated type structures */ + swig_cast_info **cast_initial; /* Array of initially generated casting structures */ + void *clientdata; /* Language specific module data */ +} swig_module_info; + +/* + Compare two type names skipping the space characters, therefore + "char*" == "char *" and "Class<int>" == "Class<int >", etc. + + Return 0 when the two name types are equivalent, as in + strncmp, but skipping ' '. +*/ +SWIGRUNTIME int +SWIG_TypeNameComp(const char *f1, const char *l1, + const char *f2, const char *l2) { + for (;(f1 != l1) && (f2 != l2); ++f1, ++f2) { + while ((*f1 == ' ') && (f1 != l1)) ++f1; + while ((*f2 == ' ') && (f2 != l2)) ++f2; + if (*f1 != *f2) return (*f1 > *f2) ? 1 : -1; + } + return (int)((l1 - f1) - (l2 - f2)); +} + +/* + Check type equivalence in a name list like <name1>|<name2>|... + Return 0 if equal, -1 if nb < tb, 1 if nb > tb +*/ +SWIGRUNTIME int +SWIG_TypeCmp(const char *nb, const char *tb) { + int equiv = 1; + const char* te = tb + strlen(tb); + const char* ne = nb; + while (equiv != 0 && *ne) { + for (nb = ne; *ne; ++ne) { + if (*ne == '|') break; + } + equiv = SWIG_TypeNameComp(nb, ne, tb, te); + if (*ne) ++ne; + } + return equiv; +} + +/* + Check type equivalence in a name list like <name1>|<name2>|... + Return 0 if not equal, 1 if equal +*/ +SWIGRUNTIME int +SWIG_TypeEquiv(const char *nb, const char *tb) { + return SWIG_TypeCmp(nb, tb) == 0 ? 1 : 0; +} + +/* + Check the typename +*/ +SWIGRUNTIME swig_cast_info * +SWIG_TypeCheck(const char *c, swig_type_info *ty) { + if (ty) { + swig_cast_info *iter = ty->cast; + while (iter) { + if (strcmp(iter->type->name, c) == 0) { + if (iter == ty->cast) + return iter; + /* Move iter to the top of the linked list */ + iter->prev->next = iter->next; + if (iter->next) + iter->next->prev = iter->prev; + iter->next = ty->cast; + iter->prev = 0; + if (ty->cast) ty->cast->prev = iter; + ty->cast = iter; + return iter; + } + iter = iter->next; + } + } + return 0; +} + +/* + Identical to SWIG_TypeCheck, except strcmp is replaced with a pointer comparison +*/ +SWIGRUNTIME swig_cast_info * +SWIG_TypeCheckStruct(swig_type_info *from, swig_type_info *ty) { + if (ty) { + swig_cast_info *iter = ty->cast; + while (iter) { + if (iter->type == from) { + if (iter == ty->cast) + return iter; + /* Move iter to the top of the linked list */ + iter->prev->next = iter->next; + if (iter->next) + iter->next->prev = iter->prev; + iter->next = ty->cast; + iter->prev = 0; + if (ty->cast) ty->cast->prev = iter; + ty->cast = iter; + return iter; + } + iter = iter->next; + } + } + return 0; +} + +/* + Cast a pointer up an inheritance hierarchy +*/ +SWIGRUNTIMEINLINE void * +SWIG_TypeCast(swig_cast_info *ty, void *ptr, int *newmemory) { + return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr, newmemory); +} + +/* + Dynamic pointer casting. Down an inheritance hierarchy +*/ +SWIGRUNTIME swig_type_info * +SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr) { + swig_type_info *lastty = ty; + if (!ty || !ty->dcast) return ty; + while (ty && (ty->dcast)) { + ty = (*ty->dcast)(ptr); + if (ty) lastty = ty; + } + return lastty; +} + +/* + Return the name associated with this type +*/ +SWIGRUNTIMEINLINE const char * +SWIG_TypeName(const swig_type_info *ty) { + return ty->name; +} + +/* + Return the pretty name associated with this type, + that is an unmangled type name in a form presentable to the user. +*/ +SWIGRUNTIME const char * +SWIG_TypePrettyName(const swig_type_info *type) { + /* The "str" field contains the equivalent pretty names of the + type, separated by vertical-bar characters. We choose + to print the last name, as it is often (?) the most + specific. */ + if (!type) return NULL; + if (type->str != NULL) { + const char *last_name = type->str; + const char *s; + for (s = type->str; *s; s++) + if (*s == '|') last_name = s+1; + return last_name; + } + else + return type->name; +} + +/* + Set the clientdata field for a type +*/ +SWIGRUNTIME void +SWIG_TypeClientData(swig_type_info *ti, void *clientdata) { + swig_cast_info *cast = ti->cast; + /* if (ti->clientdata == clientdata) return; */ + ti->clientdata = clientdata; + + while (cast) { + if (!cast->converter) { + swig_type_info *tc = cast->type; + if (!tc->clientdata) { + SWIG_TypeClientData(tc, clientdata); + } + } + cast = cast->next; + } +} +SWIGRUNTIME void +SWIG_TypeNewClientData(swig_type_info *ti, void *clientdata) { + SWIG_TypeClientData(ti, clientdata); + ti->owndata = 1; +} + +/* + Search for a swig_type_info structure only by mangled name + Search is a O(log #types) + + We start searching at module start, and finish searching when start == end. + Note: if start == end at the beginning of the function, we go all the way around + the circular list. +*/ +SWIGRUNTIME swig_type_info * +SWIG_MangledTypeQueryModule(swig_module_info *start, + swig_module_info *end, + const char *name) { + swig_module_info *iter = start; + do { + if (iter->size) { + register size_t l = 0; + register size_t r = iter->size - 1; + do { + /* since l+r >= 0, we can (>> 1) instead (/ 2) */ + register size_t i = (l + r) >> 1; + const char *iname = iter->types[i]->name; + if (iname) { + register int compare = strcmp(name, iname); + if (compare == 0) { + return iter->types[i]; + } else if (compare < 0) { + if (i) { + r = i - 1; + } else { + break; + } + } else if (compare > 0) { + l = i + 1; + } + } else { + break; /* should never happen */ + } + } while (l <= r); + } + iter = iter->next; + } while (iter != end); + return 0; +} + +/* + Search for a swig_type_info structure for either a mangled name or a human readable name. + It first searches the mangled names of the types, which is a O(log #types) + If a type is not found it then searches the human readable names, which is O(#types). + + We start searching at module start, and finish searching when start == end. + Note: if start == end at the beginning of the function, we go all the way around + the circular list. +*/ +SWIGRUNTIME swig_type_info * +SWIG_TypeQueryModule(swig_module_info *start, + swig_module_info *end, + const char *name) { + /* STEP 1: Search the name field using binary search */ + swig_type_info *ret = SWIG_MangledTypeQueryModule(start, end, name); + if (ret) { + return ret; + } else { + /* STEP 2: If the type hasn't been found, do a complete search + of the str field (the human readable name) */ + swig_module_info *iter = start; + do { + register size_t i = 0; + for (; i < iter->size; ++i) { + if (iter->types[i]->str && (SWIG_TypeEquiv(iter->types[i]->str, name))) + return iter->types[i]; + } + iter = iter->next; + } while (iter != end); + } + + /* neither found a match */ + return 0; +} + +/* + Pack binary data into a string +*/ +SWIGRUNTIME char * +SWIG_PackData(char *c, void *ptr, size_t sz) { + static const char hex[17] = "0123456789abcdef"; + register const unsigned char *u = (unsigned char *) ptr; + register const unsigned char *eu = u + sz; + for (; u != eu; ++u) { + register unsigned char uu = *u; + *(c++) = hex[(uu & 0xf0) >> 4]; + *(c++) = hex[uu & 0xf]; + } + return c; +} + +/* + Unpack binary data from a string +*/ +SWIGRUNTIME const char * +SWIG_UnpackData(const char *c, void *ptr, size_t sz) { + register unsigned char *u = (unsigned char *) ptr; + register const unsigned char *eu = u + sz; + for (; u != eu; ++u) { + register char d = *(c++); + register unsigned char uu; + if ((d >= '0') && (d <= '9')) + uu = ((d - '0') << 4); + else if ((d >= 'a') && (d <= 'f')) + uu = ((d - ('a'-10)) << 4); + else + return (char *) 0; + d = *(c++); + if ((d >= '0') && (d <= '9')) + uu |= (d - '0'); + else if ((d >= 'a') && (d <= 'f')) + uu |= (d - ('a'-10)); + else + return (char *) 0; + *u = uu; + } + return c; +} + +/* + Pack 'void *' into a string buffer. +*/ +SWIGRUNTIME char * +SWIG_PackVoidPtr(char *buff, void *ptr, const char *name, size_t bsz) { + char *r = buff; + if ((2*sizeof(void *) + 2) > bsz) return 0; + *(r++) = '_'; + r = SWIG_PackData(r,&ptr,sizeof(void *)); + if (strlen(name) + 1 > (bsz - (r - buff))) return 0; + strcpy(r,name); + return buff; +} + +SWIGRUNTIME const char * +SWIG_UnpackVoidPtr(const char *c, void **ptr, const char *name) { + if (*c != '_') { + if (strcmp(c,"NULL") == 0) { + *ptr = (void *) 0; + return name; + } else { + return 0; + } + } + return SWIG_UnpackData(++c,ptr,sizeof(void *)); +} + +SWIGRUNTIME char * +SWIG_PackDataName(char *buff, void *ptr, size_t sz, const char *name, size_t bsz) { + char *r = buff; + size_t lname = (name ? strlen(name) : 0); + if ((2*sz + 2 + lname) > bsz) return 0; + *(r++) = '_'; + r = SWIG_PackData(r,ptr,sz); + if (lname) { + strncpy(r,name,lname+1); + } else { + *r = 0; + } + return buff; +} + +SWIGRUNTIME const char * +SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) { + if (*c != '_') { + if (strcmp(c,"NULL") == 0) { + memset(ptr,0,sz); + return name; + } else { + return 0; + } + } + return SWIG_UnpackData(++c,ptr,sz); +} + +#ifdef __cplusplus +} +#endif + +/* Errors in SWIG */ +#define SWIG_UnknownError -1 +#define SWIG_IOError -2 +#define SWIG_RuntimeError -3 +#define SWIG_IndexError -4 +#define SWIG_TypeError -5 +#define SWIG_DivisionByZero -6 +#define SWIG_OverflowError -7 +#define SWIG_SyntaxError -8 +#define SWIG_ValueError -9 +#define SWIG_SystemError -10 +#define SWIG_AttributeError -11 +#define SWIG_MemoryError -12 +#define SWIG_NullReferenceError -13 + + + +/* Compatibility macros for Python 3 */ +#if PY_VERSION_HEX >= 0x03000000 + +#define PyClass_Check(obj) PyObject_IsInstance(obj, (PyObject *)&PyType_Type) +#define PyInt_Check(x) PyLong_Check(x) +#define PyInt_AsLong(x) PyLong_AsLong(x) +#define PyInt_FromLong(x) PyLong_FromLong(x) +#define PyInt_FromSize_t(x) PyLong_FromSize_t(x) +#define PyString_Check(name) PyBytes_Check(name) +#define PyString_FromString(x) PyUnicode_FromString(x) +#define PyString_Format(fmt, args) PyUnicode_Format(fmt, args) +#define PyString_AsString(str) PyBytes_AsString(str) +#define PyString_Size(str) PyBytes_Size(str) +#define PyString_InternFromString(key) PyUnicode_InternFromString(key) +#define Py_TPFLAGS_HAVE_CLASS Py_TPFLAGS_BASETYPE +#define PyString_AS_STRING(x) PyUnicode_AS_STRING(x) +#define _PyLong_FromSsize_t(x) PyLong_FromSsize_t(x) + +#endif + +#ifndef Py_TYPE +# define Py_TYPE(op) ((op)->ob_type) +#endif + +/* SWIG APIs for compatibility of both Python 2 & 3 */ + +#if PY_VERSION_HEX >= 0x03000000 +# define SWIG_Python_str_FromFormat PyUnicode_FromFormat +#else +# define SWIG_Python_str_FromFormat PyString_FromFormat +#endif + + +/* Warning: This function will allocate a new string in Python 3, + * so please call SWIG_Python_str_DelForPy3(x) to free the space. + */ +SWIGINTERN char* +SWIG_Python_str_AsChar(PyObject *str) +{ +#if PY_VERSION_HEX >= 0x03000000 + char *cstr; + char *newstr; + Py_ssize_t len; + str = PyUnicode_AsUTF8String(str); + PyBytes_AsStringAndSize(str, &cstr, &len); + newstr = (char *) malloc(len+1); + memcpy(newstr, cstr, len+1); + Py_XDECREF(str); + return newstr; +#else + return PyString_AsString(str); +#endif +} + +#if PY_VERSION_HEX >= 0x03000000 +# define SWIG_Python_str_DelForPy3(x) free( (void*) (x) ) +#else +# define SWIG_Python_str_DelForPy3(x) +#endif + + +SWIGINTERN PyObject* +SWIG_Python_str_FromChar(const char *c) +{ +#if PY_VERSION_HEX >= 0x03000000 + return PyUnicode_FromString(c); +#else + return PyString_FromString(c); +#endif +} + +/* Add PyOS_snprintf for old Pythons */ +#if PY_VERSION_HEX < 0x02020000 +# if defined(_MSC_VER) || defined(__BORLANDC__) || defined(_WATCOM) +# define PyOS_snprintf _snprintf +# else +# define PyOS_snprintf snprintf +# endif +#endif + +/* A crude PyString_FromFormat implementation for old Pythons */ +#if PY_VERSION_HEX < 0x02020000 + +#ifndef SWIG_PYBUFFER_SIZE +# define SWIG_PYBUFFER_SIZE 1024 +#endif + +static PyObject * +PyString_FromFormat(const char *fmt, ...) { + va_list ap; + char buf[SWIG_PYBUFFER_SIZE * 2]; + int res; + va_start(ap, fmt); + res = vsnprintf(buf, sizeof(buf), fmt, ap); + va_end(ap); + return (res < 0 || res >= (int)sizeof(buf)) ? 0 : PyString_FromString(buf); +} +#endif + +/* Add PyObject_Del for old Pythons */ +#if PY_VERSION_HEX < 0x01060000 +# define PyObject_Del(op) PyMem_DEL((op)) +#endif +#ifndef PyObject_DEL +# define PyObject_DEL PyObject_Del +#endif + +/* A crude PyExc_StopIteration exception for old Pythons */ +#if PY_VERSION_HEX < 0x02020000 +# ifndef PyExc_StopIteration +# define PyExc_StopIteration PyExc_RuntimeError +# endif +# ifndef PyObject_GenericGetAttr +# define PyObject_GenericGetAttr 0 +# endif +#endif + +/* Py_NotImplemented is defined in 2.1 and up. */ +#if PY_VERSION_HEX < 0x02010000 +# ifndef Py_NotImplemented +# define Py_NotImplemented PyExc_RuntimeError +# endif +#endif + +/* A crude PyString_AsStringAndSize implementation for old Pythons */ +#if PY_VERSION_HEX < 0x02010000 +# ifndef PyString_AsStringAndSize +# define PyString_AsStringAndSize(obj, s, len) {*s = PyString_AsString(obj); *len = *s ? strlen(*s) : 0;} +# endif +#endif + +/* PySequence_Size for old Pythons */ +#if PY_VERSION_HEX < 0x02000000 +# ifndef PySequence_Size +# define PySequence_Size PySequence_Length +# endif +#endif + +/* PyBool_FromLong for old Pythons */ +#if PY_VERSION_HEX < 0x02030000 +static +PyObject *PyBool_FromLong(long ok) +{ + PyObject *result = ok ? Py_True : Py_False; + Py_INCREF(result); + return result; +} +#endif + +/* Py_ssize_t for old Pythons */ +/* This code is as recommended by: */ +/* http://www.python.org/dev/peps/pep-0353/#conversion-guidelines */ +#if PY_VERSION_HEX < 0x02050000 && !defined(PY_SSIZE_T_MIN) +typedef int Py_ssize_t; +# define PY_SSIZE_T_MAX INT_MAX +# define PY_SSIZE_T_MIN INT_MIN +typedef inquiry lenfunc; +typedef intargfunc ssizeargfunc; +typedef intintargfunc ssizessizeargfunc; +typedef intobjargproc ssizeobjargproc; +typedef intintobjargproc ssizessizeobjargproc; +typedef getreadbufferproc readbufferproc; +typedef getwritebufferproc writebufferproc; +typedef getsegcountproc segcountproc; +typedef getcharbufferproc charbufferproc; +static long PyNumber_AsSsize_t (PyObject *x, void *SWIGUNUSEDPARM(exc)) +{ + long result = 0; + PyObject *i = PyNumber_Int(x); + if (i) { + result = PyInt_AsLong(i); + Py_DECREF(i); + } + return result; +} +#endif + +#if PY_VERSION_HEX < 0x02050000 +#define PyInt_FromSize_t(x) PyInt_FromLong((long)x) +#endif + +#if PY_VERSION_HEX < 0x02040000 +#define Py_VISIT(op) \ + do { \ + if (op) { \ + int vret = visit((op), arg); \ + if (vret) \ + return vret; \ + } \ + } while (0) +#endif + +#if PY_VERSION_HEX < 0x02030000 +typedef struct { + PyTypeObject type; + PyNumberMethods as_number; + PyMappingMethods as_mapping; + PySequenceMethods as_sequence; + PyBufferProcs as_buffer; + PyObject *name, *slots; +} PyHeapTypeObject; +#endif + +#if PY_VERSION_HEX < 0x02030000 +typedef destructor freefunc; +#endif + +#if ((PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION > 6) || \ + (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION > 0) || \ + (PY_MAJOR_VERSION > 3)) +# define SWIGPY_USE_CAPSULE +# define SWIGPY_CAPSULE_NAME ((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION ".type_pointer_capsule" SWIG_TYPE_TABLE_NAME) +#endif + +#if PY_VERSION_HEX < 0x03020000 +#define PyDescr_TYPE(x) (((PyDescrObject *)(x))->d_type) +#define PyDescr_NAME(x) (((PyDescrObject *)(x))->d_name) +#endif + +/* ----------------------------------------------------------------------------- + * error manipulation + * ----------------------------------------------------------------------------- */ + +SWIGRUNTIME PyObject* +SWIG_Python_ErrorType(int code) { + PyObject* type = 0; + switch(code) { + case SWIG_MemoryError: + type = PyExc_MemoryError; + break; + case SWIG_IOError: + type = PyExc_IOError; + break; + case SWIG_RuntimeError: + type = PyExc_RuntimeError; + break; + case SWIG_IndexError: + type = PyExc_IndexError; + break; + case SWIG_TypeError: + type = PyExc_TypeError; + break; + case SWIG_DivisionByZero: + type = PyExc_ZeroDivisionError; + break; + case SWIG_OverflowError: + type = PyExc_OverflowError; + break; + case SWIG_SyntaxError: + type = PyExc_SyntaxError; + break; + case SWIG_ValueError: + type = PyExc_ValueError; + break; + case SWIG_SystemError: + type = PyExc_SystemError; + break; + case SWIG_AttributeError: + type = PyExc_AttributeError; + break; + default: + type = PyExc_RuntimeError; + } + return type; +} + + +SWIGRUNTIME void +SWIG_Python_AddErrorMsg(const char* mesg) +{ + PyObject *type = 0; + PyObject *value = 0; + PyObject *traceback = 0; + + if (PyErr_Occurred()) PyErr_Fetch(&type, &value, &traceback); + if (value) { + char *tmp; + PyObject *old_str = PyObject_Str(value); + PyErr_Clear(); + Py_XINCREF(type); + + PyErr_Format(type, "%s %s", tmp = SWIG_Python_str_AsChar(old_str), mesg); + SWIG_Python_str_DelForPy3(tmp); + Py_DECREF(old_str); + Py_DECREF(value); + } else { + PyErr_SetString(PyExc_RuntimeError, mesg); + } +} + +#if defined(SWIG_PYTHON_NO_THREADS) +# if defined(SWIG_PYTHON_THREADS) +# undef SWIG_PYTHON_THREADS +# endif +#endif +#if defined(SWIG_PYTHON_THREADS) /* Threading support is enabled */ +# if !defined(SWIG_PYTHON_USE_GIL) && !defined(SWIG_PYTHON_NO_USE_GIL) +# if (PY_VERSION_HEX >= 0x02030000) /* For 2.3 or later, use the PyGILState calls */ +# define SWIG_PYTHON_USE_GIL +# endif +# endif +# if defined(SWIG_PYTHON_USE_GIL) /* Use PyGILState threads calls */ +# ifndef SWIG_PYTHON_INITIALIZE_THREADS +# define SWIG_PYTHON_INITIALIZE_THREADS PyEval_InitThreads() +# endif +# ifdef __cplusplus /* C++ code */ + class SWIG_Python_Thread_Block { + bool status; + PyGILState_STATE state; + public: + void end() { if (status) { PyGILState_Release(state); status = false;} } + SWIG_Python_Thread_Block() : status(true), state(PyGILState_Ensure()) {} + ~SWIG_Python_Thread_Block() { end(); } + }; + class SWIG_Python_Thread_Allow { + bool status; + PyThreadState *save; + public: + void end() { if (status) { PyEval_RestoreThread(save); status = false; }} + SWIG_Python_Thread_Allow() : status(true), save(PyEval_SaveThread()) {} + ~SWIG_Python_Thread_Allow() { end(); } + }; +# define SWIG_PYTHON_THREAD_BEGIN_BLOCK SWIG_Python_Thread_Block _swig_thread_block +# define SWIG_PYTHON_THREAD_END_BLOCK _swig_thread_block.end() +# define SWIG_PYTHON_THREAD_BEGIN_ALLOW SWIG_Python_Thread_Allow _swig_thread_allow +# define SWIG_PYTHON_THREAD_END_ALLOW _swig_thread_allow.end() +# else /* C code */ +# define SWIG_PYTHON_THREAD_BEGIN_BLOCK PyGILState_STATE _swig_thread_block = PyGILState_Ensure() +# define SWIG_PYTHON_THREAD_END_BLOCK PyGILState_Release(_swig_thread_block) +# define SWIG_PYTHON_THREAD_BEGIN_ALLOW PyThreadState *_swig_thread_allow = PyEval_SaveThread() +# define SWIG_PYTHON_THREAD_END_ALLOW PyEval_RestoreThread(_swig_thread_allow) +# endif +# else /* Old thread way, not implemented, user must provide it */ +# if !defined(SWIG_PYTHON_INITIALIZE_THREADS) +# define SWIG_PYTHON_INITIALIZE_THREADS +# endif +# if !defined(SWIG_PYTHON_THREAD_BEGIN_BLOCK) +# define SWIG_PYTHON_THREAD_BEGIN_BLOCK +# endif +# if !defined(SWIG_PYTHON_THREAD_END_BLOCK) +# define SWIG_PYTHON_THREAD_END_BLOCK +# endif +# if !defined(SWIG_PYTHON_THREAD_BEGIN_ALLOW) +# define SWIG_PYTHON_THREAD_BEGIN_ALLOW +# endif +# if !defined(SWIG_PYTHON_THREAD_END_ALLOW) +# define SWIG_PYTHON_THREAD_END_ALLOW +# endif +# endif +#else /* No thread support */ +# define SWIG_PYTHON_INITIALIZE_THREADS +# define SWIG_PYTHON_THREAD_BEGIN_BLOCK +# define SWIG_PYTHON_THREAD_END_BLOCK +# define SWIG_PYTHON_THREAD_BEGIN_ALLOW +# define SWIG_PYTHON_THREAD_END_ALLOW +#endif + +/* ----------------------------------------------------------------------------- + * Python API portion that goes into the runtime + * ----------------------------------------------------------------------------- */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* ----------------------------------------------------------------------------- + * Constant declarations + * ----------------------------------------------------------------------------- */ + +/* Constant Types */ +#define SWIG_PY_POINTER 4 +#define SWIG_PY_BINARY 5 + +/* Constant information structure */ +typedef struct swig_const_info { + int type; + char *name; + long lvalue; + double dvalue; + void *pvalue; + swig_type_info **ptype; +} swig_const_info; + + +/* ----------------------------------------------------------------------------- + * Wrapper of PyInstanceMethod_New() used in Python 3 + * It is exported to the generated module, used for -fastproxy + * ----------------------------------------------------------------------------- */ +#if PY_VERSION_HEX >= 0x03000000 +SWIGRUNTIME PyObject* SWIG_PyInstanceMethod_New(PyObject *SWIGUNUSEDPARM(self), PyObject *func) +{ + return PyInstanceMethod_New(func); +} +#else +SWIGRUNTIME PyObject* SWIG_PyInstanceMethod_New(PyObject *SWIGUNUSEDPARM(self), PyObject *SWIGUNUSEDPARM(func)) +{ + return NULL; +} +#endif + +#ifdef __cplusplus +} +#endif + + +/* ----------------------------------------------------------------------------- + * pyrun.swg + * + * This file contains the runtime support for Python modules + * and includes code for managing global variables and pointer + * type checking. + * + * ----------------------------------------------------------------------------- */ + +/* Common SWIG API */ + +/* for raw pointers */ +#define SWIG_Python_ConvertPtr(obj, pptr, type, flags) SWIG_Python_ConvertPtrAndOwn(obj, pptr, type, flags, 0) +#define SWIG_ConvertPtr(obj, pptr, type, flags) SWIG_Python_ConvertPtr(obj, pptr, type, flags) +#define SWIG_ConvertPtrAndOwn(obj,pptr,type,flags,own) SWIG_Python_ConvertPtrAndOwn(obj, pptr, type, flags, own) + +#ifdef SWIGPYTHON_BUILTIN +#define SWIG_NewPointerObj(ptr, type, flags) SWIG_Python_NewPointerObj(self, ptr, type, flags) +#else +#define SWIG_NewPointerObj(ptr, type, flags) SWIG_Python_NewPointerObj(NULL, ptr, type, flags) +#endif + +#define SWIG_InternalNewPointerObj(ptr, type, flags) SWIG_Python_NewPointerObj(NULL, ptr, type, flags) + +#define SWIG_CheckImplicit(ty) SWIG_Python_CheckImplicit(ty) +#define SWIG_AcquirePtr(ptr, src) SWIG_Python_AcquirePtr(ptr, src) +#define swig_owntype int + +/* for raw packed data */ +#define SWIG_ConvertPacked(obj, ptr, sz, ty) SWIG_Python_ConvertPacked(obj, ptr, sz, ty) +#define SWIG_NewPackedObj(ptr, sz, type) SWIG_Python_NewPackedObj(ptr, sz, type) + +/* for class or struct pointers */ +#define SWIG_ConvertInstance(obj, pptr, type, flags) SWIG_ConvertPtr(obj, pptr, type, flags) +#define SWIG_NewInstanceObj(ptr, type, flags) SWIG_NewPointerObj(ptr, type, flags) + +/* for C or C++ function pointers */ +#define SWIG_ConvertFunctionPtr(obj, pptr, type) SWIG_Python_ConvertFunctionPtr(obj, pptr, type) +#define SWIG_NewFunctionPtrObj(ptr, type) SWIG_Python_NewPointerObj(NULL, ptr, type, 0) + +/* for C++ member pointers, ie, member methods */ +#define SWIG_ConvertMember(obj, ptr, sz, ty) SWIG_Python_ConvertPacked(obj, ptr, sz, ty) +#define SWIG_NewMemberObj(ptr, sz, type) SWIG_Python_NewPackedObj(ptr, sz, type) + + +/* Runtime API */ + +#define SWIG_GetModule(clientdata) SWIG_Python_GetModule(clientdata) +#define SWIG_SetModule(clientdata, pointer) SWIG_Python_SetModule(pointer) +#define SWIG_NewClientData(obj) SwigPyClientData_New(obj) + +#define SWIG_SetErrorObj SWIG_Python_SetErrorObj +#define SWIG_SetErrorMsg SWIG_Python_SetErrorMsg +#define SWIG_ErrorType(code) SWIG_Python_ErrorType(code) +#define SWIG_Error(code, msg) SWIG_Python_SetErrorMsg(SWIG_ErrorType(code), msg) +#define SWIG_fail goto fail + + +/* Runtime API implementation */ + +/* Error manipulation */ + +SWIGINTERN void +SWIG_Python_SetErrorObj(PyObject *errtype, PyObject *obj) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + PyErr_SetObject(errtype, obj); + Py_DECREF(obj); + SWIG_PYTHON_THREAD_END_BLOCK; +} + +SWIGINTERN void +SWIG_Python_SetErrorMsg(PyObject *errtype, const char *msg) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + PyErr_SetString(errtype, msg); + SWIG_PYTHON_THREAD_END_BLOCK; +} + +#define SWIG_Python_Raise(obj, type, desc) SWIG_Python_SetErrorObj(SWIG_Python_ExceptionType(desc), obj) + +/* Set a constant value */ + +#if defined(SWIGPYTHON_BUILTIN) + +SWIGINTERN void +SwigPyBuiltin_AddPublicSymbol(PyObject *seq, const char *key) { + PyObject *s = PyString_InternFromString(key); + PyList_Append(seq, s); + Py_DECREF(s); +} + +SWIGINTERN void +SWIG_Python_SetConstant(PyObject *d, PyObject *public_interface, const char *name, PyObject *obj) { +#if PY_VERSION_HEX < 0x02030000 + PyDict_SetItemString(d, (char *)name, obj); +#else + PyDict_SetItemString(d, name, obj); +#endif + Py_DECREF(obj); + if (public_interface) + SwigPyBuiltin_AddPublicSymbol(public_interface, name); +} + +#else + +SWIGINTERN void +SWIG_Python_SetConstant(PyObject *d, const char *name, PyObject *obj) { +#if PY_VERSION_HEX < 0x02030000 + PyDict_SetItemString(d, (char *)name, obj); +#else + PyDict_SetItemString(d, name, obj); +#endif + Py_DECREF(obj); +} + +#endif + +/* Append a value to the result obj */ + +SWIGINTERN PyObject* +SWIG_Python_AppendOutput(PyObject* result, PyObject* obj) { +#if !defined(SWIG_PYTHON_OUTPUT_TUPLE) + if (!result) { + result = obj; + } else if (result == Py_None) { + Py_DECREF(result); + result = obj; + } else { + if (!PyList_Check(result)) { + PyObject *o2 = result; + result = PyList_New(1); + PyList_SetItem(result, 0, o2); + } + PyList_Append(result,obj); + Py_DECREF(obj); + } + return result; +#else + PyObject* o2; + PyObject* o3; + if (!result) { + result = obj; + } else if (result == Py_None) { + Py_DECREF(result); + result = obj; + } else { + if (!PyTuple_Check(result)) { + o2 = result; + result = PyTuple_New(1); + PyTuple_SET_ITEM(result, 0, o2); + } + o3 = PyTuple_New(1); + PyTuple_SET_ITEM(o3, 0, obj); + o2 = result; + result = PySequence_Concat(o2, o3); + Py_DECREF(o2); + Py_DECREF(o3); + } + return result; +#endif +} + +/* Unpack the argument tuple */ + +SWIGINTERN int +SWIG_Python_UnpackTuple(PyObject *args, const char *name, Py_ssize_t min, Py_ssize_t max, PyObject **objs) +{ + if (!args) { + if (!min && !max) { + return 1; + } else { + PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got none", + name, (min == max ? "" : "at least "), (int)min); + return 0; + } + } + if (!PyTuple_Check(args)) { + if (min <= 1 && max >= 1) { + register int i; + objs[0] = args; + for (i = 1; i < max; ++i) { + objs[i] = 0; + } + return 2; + } + PyErr_SetString(PyExc_SystemError, "UnpackTuple() argument list is not a tuple"); + return 0; + } else { + register Py_ssize_t l = PyTuple_GET_SIZE(args); + if (l < min) { + PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got %d", + name, (min == max ? "" : "at least "), (int)min, (int)l); + return 0; + } else if (l > max) { + PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got %d", + name, (min == max ? "" : "at most "), (int)max, (int)l); + return 0; + } else { + register int i; + for (i = 0; i < l; ++i) { + objs[i] = PyTuple_GET_ITEM(args, i); + } + for (; l < max; ++l) { + objs[l] = 0; + } + return i + 1; + } + } +} + +/* A functor is a function object with one single object argument */ +#if PY_VERSION_HEX >= 0x02020000 +#define SWIG_Python_CallFunctor(functor, obj) PyObject_CallFunctionObjArgs(functor, obj, NULL); +#else +#define SWIG_Python_CallFunctor(functor, obj) PyObject_CallFunction(functor, "O", obj); +#endif + +/* + Helper for static pointer initialization for both C and C++ code, for example + static PyObject *SWIG_STATIC_POINTER(MyVar) = NewSomething(...); +*/ +#ifdef __cplusplus +#define SWIG_STATIC_POINTER(var) var +#else +#define SWIG_STATIC_POINTER(var) var = 0; if (!var) var +#endif + +/* ----------------------------------------------------------------------------- + * Pointer declarations + * ----------------------------------------------------------------------------- */ + +/* Flags for new pointer objects */ +#define SWIG_POINTER_NOSHADOW (SWIG_POINTER_OWN << 1) +#define SWIG_POINTER_NEW (SWIG_POINTER_NOSHADOW | SWIG_POINTER_OWN) + +#define SWIG_POINTER_IMPLICIT_CONV (SWIG_POINTER_DISOWN << 1) + +#define SWIG_BUILTIN_TP_INIT (SWIG_POINTER_OWN << 2) +#define SWIG_BUILTIN_INIT (SWIG_BUILTIN_TP_INIT | SWIG_POINTER_OWN) + +#ifdef __cplusplus +extern "C" { +#endif + +/* How to access Py_None */ +#if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) +# ifndef SWIG_PYTHON_NO_BUILD_NONE +# ifndef SWIG_PYTHON_BUILD_NONE +# define SWIG_PYTHON_BUILD_NONE +# endif +# endif +#endif + +#ifdef SWIG_PYTHON_BUILD_NONE +# ifdef Py_None +# undef Py_None +# define Py_None SWIG_Py_None() +# endif +SWIGRUNTIMEINLINE PyObject * +_SWIG_Py_None(void) +{ + PyObject *none = Py_BuildValue((char*)""); + Py_DECREF(none); + return none; +} +SWIGRUNTIME PyObject * +SWIG_Py_None(void) +{ + static PyObject *SWIG_STATIC_POINTER(none) = _SWIG_Py_None(); + return none; +} +#endif + +/* The python void return value */ + +SWIGRUNTIMEINLINE PyObject * +SWIG_Py_Void(void) +{ + PyObject *none = Py_None; + Py_INCREF(none); + return none; +} + +/* SwigPyClientData */ + +typedef struct { + PyObject *klass; + PyObject *newraw; + PyObject *newargs; + PyObject *destroy; + int delargs; + int implicitconv; + PyTypeObject *pytype; +} SwigPyClientData; + +SWIGRUNTIMEINLINE int +SWIG_Python_CheckImplicit(swig_type_info *ty) +{ + SwigPyClientData *data = (SwigPyClientData *)ty->clientdata; + return data ? data->implicitconv : 0; +} + +SWIGRUNTIMEINLINE PyObject * +SWIG_Python_ExceptionType(swig_type_info *desc) { + SwigPyClientData *data = desc ? (SwigPyClientData *) desc->clientdata : 0; + PyObject *klass = data ? data->klass : 0; + return (klass ? klass : PyExc_RuntimeError); +} + + +SWIGRUNTIME SwigPyClientData * +SwigPyClientData_New(PyObject* obj) +{ + if (!obj) { + return 0; + } else { + SwigPyClientData *data = (SwigPyClientData *)malloc(sizeof(SwigPyClientData)); + /* the klass element */ + data->klass = obj; + Py_INCREF(data->klass); + /* the newraw method and newargs arguments used to create a new raw instance */ + if (PyClass_Check(obj)) { + data->newraw = 0; + data->newargs = obj; + Py_INCREF(obj); + } else { +#if (PY_VERSION_HEX < 0x02020000) + data->newraw = 0; +#else + data->newraw = PyObject_GetAttrString(data->klass, (char *)"__new__"); +#endif + if (data->newraw) { + Py_INCREF(data->newraw); + data->newargs = PyTuple_New(1); + PyTuple_SetItem(data->newargs, 0, obj); + } else { + data->newargs = obj; + } + Py_INCREF(data->newargs); + } + /* the destroy method, aka as the C++ delete method */ + data->destroy = PyObject_GetAttrString(data->klass, (char *)"__swig_destroy__"); + if (PyErr_Occurred()) { + PyErr_Clear(); + data->destroy = 0; + } + if (data->destroy) { + int flags; + Py_INCREF(data->destroy); + flags = PyCFunction_GET_FLAGS(data->destroy); +#ifdef METH_O + data->delargs = !(flags & (METH_O)); +#else + data->delargs = 0; +#endif + } else { + data->delargs = 0; + } + data->implicitconv = 0; + data->pytype = 0; + return data; + } +} + +SWIGRUNTIME void +SwigPyClientData_Del(SwigPyClientData *data) { + Py_XDECREF(data->newraw); + Py_XDECREF(data->newargs); + Py_XDECREF(data->destroy); +} + +/* =============== SwigPyObject =====================*/ + +typedef struct { + PyObject_HEAD + void *ptr; + swig_type_info *ty; + int own; + PyObject *next; +#ifdef SWIGPYTHON_BUILTIN + PyObject *dict; +#endif +} SwigPyObject; + +SWIGRUNTIME PyObject * +SwigPyObject_long(SwigPyObject *v) +{ + return PyLong_FromVoidPtr(v->ptr); +} + +SWIGRUNTIME PyObject * +SwigPyObject_format(const char* fmt, SwigPyObject *v) +{ + PyObject *res = NULL; + PyObject *args = PyTuple_New(1); + if (args) { + if (PyTuple_SetItem(args, 0, SwigPyObject_long(v)) == 0) { + PyObject *ofmt = SWIG_Python_str_FromChar(fmt); + if (ofmt) { +#if PY_VERSION_HEX >= 0x03000000 + res = PyUnicode_Format(ofmt,args); +#else + res = PyString_Format(ofmt,args); +#endif + Py_DECREF(ofmt); + } + Py_DECREF(args); + } + } + return res; +} + +SWIGRUNTIME PyObject * +SwigPyObject_oct(SwigPyObject *v) +{ + return SwigPyObject_format("%o",v); +} + +SWIGRUNTIME PyObject * +SwigPyObject_hex(SwigPyObject *v) +{ + return SwigPyObject_format("%x",v); +} + +SWIGRUNTIME PyObject * +#ifdef METH_NOARGS +SwigPyObject_repr(SwigPyObject *v) +#else +SwigPyObject_repr(SwigPyObject *v, PyObject *args) +#endif +{ + const char *name = SWIG_TypePrettyName(v->ty); + PyObject *repr = SWIG_Python_str_FromFormat("<Swig Object of type '%s' at %p>", (name ? name : "unknown"), (void *)v); + if (v->next) { +# ifdef METH_NOARGS + PyObject *nrep = SwigPyObject_repr((SwigPyObject *)v->next); +# else + PyObject *nrep = SwigPyObject_repr((SwigPyObject *)v->next, args); +# endif +# if PY_VERSION_HEX >= 0x03000000 + PyObject *joined = PyUnicode_Concat(repr, nrep); + Py_DecRef(repr); + Py_DecRef(nrep); + repr = joined; +# else + PyString_ConcatAndDel(&repr,nrep); +# endif + } + return repr; +} + +SWIGRUNTIME int +SwigPyObject_compare(SwigPyObject *v, SwigPyObject *w) +{ + void *i = v->ptr; + void *j = w->ptr; + return (i < j) ? -1 : ((i > j) ? 1 : 0); +} + +/* Added for Python 3.x, would it also be useful for Python 2.x? */ +SWIGRUNTIME PyObject* +SwigPyObject_richcompare(SwigPyObject *v, SwigPyObject *w, int op) +{ + PyObject* res; + if( op != Py_EQ && op != Py_NE ) { + Py_INCREF(Py_NotImplemented); + return Py_NotImplemented; + } + res = PyBool_FromLong( (SwigPyObject_compare(v, w)==0) == (op == Py_EQ) ? 1 : 0); + return res; +} + + +SWIGRUNTIME PyTypeObject* SwigPyObject_TypeOnce(void); + +#ifdef SWIGPYTHON_BUILTIN +static swig_type_info *SwigPyObject_stype = 0; +SWIGRUNTIME PyTypeObject* +SwigPyObject_type(void) { + SwigPyClientData *cd; + assert(SwigPyObject_stype); + cd = (SwigPyClientData*) SwigPyObject_stype->clientdata; + assert(cd); + assert(cd->pytype); + return cd->pytype; +} +#else +SWIGRUNTIME PyTypeObject* +SwigPyObject_type(void) { + static PyTypeObject *SWIG_STATIC_POINTER(type) = SwigPyObject_TypeOnce(); + return type; +} +#endif + +SWIGRUNTIMEINLINE int +SwigPyObject_Check(PyObject *op) { +#ifdef SWIGPYTHON_BUILTIN + PyTypeObject *target_tp = SwigPyObject_type(); + if (PyType_IsSubtype(op->ob_type, target_tp)) + return 1; + return (strcmp(op->ob_type->tp_name, "SwigPyObject") == 0); +#else + return (Py_TYPE(op) == SwigPyObject_type()) + || (strcmp(Py_TYPE(op)->tp_name,"SwigPyObject") == 0); +#endif +} + +SWIGRUNTIME PyObject * +SwigPyObject_New(void *ptr, swig_type_info *ty, int own); + +SWIGRUNTIME void +SwigPyObject_dealloc(PyObject *v) +{ + SwigPyObject *sobj = (SwigPyObject *) v; + PyObject *next = sobj->next; + if (sobj->own == SWIG_POINTER_OWN) { + swig_type_info *ty = sobj->ty; + SwigPyClientData *data = ty ? (SwigPyClientData *) ty->clientdata : 0; + PyObject *destroy = data ? data->destroy : 0; + if (destroy) { + /* destroy is always a VARARGS method */ + PyObject *res; + if (data->delargs) { + /* we need to create a temporary object to carry the destroy operation */ + PyObject *tmp = SwigPyObject_New(sobj->ptr, ty, 0); + res = SWIG_Python_CallFunctor(destroy, tmp); + Py_DECREF(tmp); + } else { + PyCFunction meth = PyCFunction_GET_FUNCTION(destroy); + PyObject *mself = PyCFunction_GET_SELF(destroy); + res = ((*meth)(mself, v)); + } + Py_XDECREF(res); + } +#if !defined(SWIG_PYTHON_SILENT_MEMLEAK) + else { + const char *name = SWIG_TypePrettyName(ty); + printf("swig/python detected a memory leak of type '%s', no destructor found.\n", (name ? name : "unknown")); + } +#endif + } + Py_XDECREF(next); + PyObject_DEL(v); +} + +SWIGRUNTIME PyObject* +SwigPyObject_append(PyObject* v, PyObject* next) +{ + SwigPyObject *sobj = (SwigPyObject *) v; +#ifndef METH_O + PyObject *tmp = 0; + if (!PyArg_ParseTuple(next,(char *)"O:append", &tmp)) return NULL; + next = tmp; +#endif + if (!SwigPyObject_Check(next)) { + return NULL; + } + sobj->next = next; + Py_INCREF(next); + return SWIG_Py_Void(); +} + +SWIGRUNTIME PyObject* +#ifdef METH_NOARGS +SwigPyObject_next(PyObject* v) +#else +SwigPyObject_next(PyObject* v, PyObject *SWIGUNUSEDPARM(args)) +#endif +{ + SwigPyObject *sobj = (SwigPyObject *) v; + if (sobj->next) { + Py_INCREF(sobj->next); + return sobj->next; + } else { + return SWIG_Py_Void(); + } +} + +SWIGINTERN PyObject* +#ifdef METH_NOARGS +SwigPyObject_disown(PyObject *v) +#else +SwigPyObject_disown(PyObject* v, PyObject *SWIGUNUSEDPARM(args)) +#endif +{ + SwigPyObject *sobj = (SwigPyObject *)v; + sobj->own = 0; + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject* +#ifdef METH_NOARGS +SwigPyObject_acquire(PyObject *v) +#else +SwigPyObject_acquire(PyObject* v, PyObject *SWIGUNUSEDPARM(args)) +#endif +{ + SwigPyObject *sobj = (SwigPyObject *)v; + sobj->own = SWIG_POINTER_OWN; + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject* +SwigPyObject_own(PyObject *v, PyObject *args) +{ + PyObject *val = 0; +#if (PY_VERSION_HEX < 0x02020000) + if (!PyArg_ParseTuple(args,(char *)"|O:own",&val)) +#elif (PY_VERSION_HEX < 0x02050000) + if (!PyArg_UnpackTuple(args, (char *)"own", 0, 1, &val)) +#else + if (!PyArg_UnpackTuple(args, "own", 0, 1, &val)) +#endif + { + return NULL; + } + else + { + SwigPyObject *sobj = (SwigPyObject *)v; + PyObject *obj = PyBool_FromLong(sobj->own); + if (val) { +#ifdef METH_NOARGS + if (PyObject_IsTrue(val)) { + SwigPyObject_acquire(v); + } else { + SwigPyObject_disown(v); + } +#else + if (PyObject_IsTrue(val)) { + SwigPyObject_acquire(v,args); + } else { + SwigPyObject_disown(v,args); + } +#endif + } + return obj; + } +} + +#ifdef METH_O +static PyMethodDef +swigobject_methods[] = { + {(char *)"disown", (PyCFunction)SwigPyObject_disown, METH_NOARGS, (char *)"releases ownership of the pointer"}, + {(char *)"acquire", (PyCFunction)SwigPyObject_acquire, METH_NOARGS, (char *)"acquires ownership of the pointer"}, + {(char *)"own", (PyCFunction)SwigPyObject_own, METH_VARARGS, (char *)"returns/sets ownership of the pointer"}, + {(char *)"append", (PyCFunction)SwigPyObject_append, METH_O, (char *)"appends another 'this' object"}, + {(char *)"next", (PyCFunction)SwigPyObject_next, METH_NOARGS, (char *)"returns the next 'this' object"}, + {(char *)"__repr__",(PyCFunction)SwigPyObject_repr, METH_NOARGS, (char *)"returns object representation"}, + {0, 0, 0, 0} +}; +#else +static PyMethodDef +swigobject_methods[] = { + {(char *)"disown", (PyCFunction)SwigPyObject_disown, METH_VARARGS, (char *)"releases ownership of the pointer"}, + {(char *)"acquire", (PyCFunction)SwigPyObject_acquire, METH_VARARGS, (char *)"aquires ownership of the pointer"}, + {(char *)"own", (PyCFunction)SwigPyObject_own, METH_VARARGS, (char *)"returns/sets ownership of the pointer"}, + {(char *)"append", (PyCFunction)SwigPyObject_append, METH_VARARGS, (char *)"appends another 'this' object"}, + {(char *)"next", (PyCFunction)SwigPyObject_next, METH_VARARGS, (char *)"returns the next 'this' object"}, + {(char *)"__repr__",(PyCFunction)SwigPyObject_repr, METH_VARARGS, (char *)"returns object representation"}, + {0, 0, 0, 0} +}; +#endif + +#if PY_VERSION_HEX < 0x02020000 +SWIGINTERN PyObject * +SwigPyObject_getattr(SwigPyObject *sobj,char *name) +{ + return Py_FindMethod(swigobject_methods, (PyObject *)sobj, name); +} +#endif + +SWIGRUNTIME PyTypeObject* +SwigPyObject_TypeOnce(void) { + static char swigobject_doc[] = "Swig object carries a C/C++ instance pointer"; + + static PyNumberMethods SwigPyObject_as_number = { + (binaryfunc)0, /*nb_add*/ + (binaryfunc)0, /*nb_subtract*/ + (binaryfunc)0, /*nb_multiply*/ + /* nb_divide removed in Python 3 */ +#if PY_VERSION_HEX < 0x03000000 + (binaryfunc)0, /*nb_divide*/ +#endif + (binaryfunc)0, /*nb_remainder*/ + (binaryfunc)0, /*nb_divmod*/ + (ternaryfunc)0,/*nb_power*/ + (unaryfunc)0, /*nb_negative*/ + (unaryfunc)0, /*nb_positive*/ + (unaryfunc)0, /*nb_absolute*/ + (inquiry)0, /*nb_nonzero*/ + 0, /*nb_invert*/ + 0, /*nb_lshift*/ + 0, /*nb_rshift*/ + 0, /*nb_and*/ + 0, /*nb_xor*/ + 0, /*nb_or*/ +#if PY_VERSION_HEX < 0x03000000 + 0, /*nb_coerce*/ +#endif + (unaryfunc)SwigPyObject_long, /*nb_int*/ +#if PY_VERSION_HEX < 0x03000000 + (unaryfunc)SwigPyObject_long, /*nb_long*/ +#else + 0, /*nb_reserved*/ +#endif + (unaryfunc)0, /*nb_float*/ +#if PY_VERSION_HEX < 0x03000000 + (unaryfunc)SwigPyObject_oct, /*nb_oct*/ + (unaryfunc)SwigPyObject_hex, /*nb_hex*/ +#endif +#if PY_VERSION_HEX >= 0x03000000 /* 3.0 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_index, nb_inplace_divide removed */ +#elif PY_VERSION_HEX >= 0x02050000 /* 2.5.0 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_index */ +#elif PY_VERSION_HEX >= 0x02020000 /* 2.2.0 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_true_divide */ +#elif PY_VERSION_HEX >= 0x02000000 /* 2.0.0 */ + 0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_or */ +#endif + }; + + static PyTypeObject swigpyobject_type; + static int type_init = 0; + if (!type_init) { + const PyTypeObject tmp = { + /* PyObject header changed in Python 3 */ +#if PY_VERSION_HEX >= 0x03000000 + PyVarObject_HEAD_INIT(NULL, 0) +#else + PyObject_HEAD_INIT(NULL) + 0, /* ob_size */ +#endif + (char *)"SwigPyObject", /* tp_name */ + sizeof(SwigPyObject), /* tp_basicsize */ + 0, /* tp_itemsize */ + (destructor)SwigPyObject_dealloc, /* tp_dealloc */ + 0, /* tp_print */ +#if PY_VERSION_HEX < 0x02020000 + (getattrfunc)SwigPyObject_getattr, /* tp_getattr */ +#else + (getattrfunc)0, /* tp_getattr */ +#endif + (setattrfunc)0, /* tp_setattr */ +#if PY_VERSION_HEX >= 0x03000000 + 0, /* tp_reserved in 3.0.1, tp_compare in 3.0.0 but not used */ +#else + (cmpfunc)SwigPyObject_compare, /* tp_compare */ +#endif + (reprfunc)SwigPyObject_repr, /* tp_repr */ + &SwigPyObject_as_number, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + (hashfunc)0, /* tp_hash */ + (ternaryfunc)0, /* tp_call */ + 0, /* tp_str */ + PyObject_GenericGetAttr, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT, /* tp_flags */ + swigobject_doc, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + (richcmpfunc)SwigPyObject_richcompare,/* tp_richcompare */ + 0, /* tp_weaklistoffset */ +#if PY_VERSION_HEX >= 0x02020000 + 0, /* tp_iter */ + 0, /* tp_iternext */ + swigobject_methods, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + 0, /* tp_bases */ + 0, /* tp_mro */ + 0, /* tp_cache */ + 0, /* tp_subclasses */ + 0, /* tp_weaklist */ +#endif +#if PY_VERSION_HEX >= 0x02030000 + 0, /* tp_del */ +#endif +#if PY_VERSION_HEX >= 0x02060000 + 0, /* tp_version */ +#endif +#ifdef COUNT_ALLOCS + 0,0,0,0 /* tp_alloc -> tp_next */ +#endif + }; + swigpyobject_type = tmp; + type_init = 1; +#if PY_VERSION_HEX < 0x02020000 + swigpyobject_type.ob_type = &PyType_Type; +#else + if (PyType_Ready(&swigpyobject_type) < 0) + return NULL; +#endif + } + return &swigpyobject_type; +} + +SWIGRUNTIME PyObject * +SwigPyObject_New(void *ptr, swig_type_info *ty, int own) +{ + SwigPyObject *sobj = PyObject_NEW(SwigPyObject, SwigPyObject_type()); + if (sobj) { + sobj->ptr = ptr; + sobj->ty = ty; + sobj->own = own; + sobj->next = 0; + } + return (PyObject *)sobj; +} + +/* ----------------------------------------------------------------------------- + * Implements a simple Swig Packed type, and use it instead of string + * ----------------------------------------------------------------------------- */ + +typedef struct { + PyObject_HEAD + void *pack; + swig_type_info *ty; + size_t size; +} SwigPyPacked; + +SWIGRUNTIME int +SwigPyPacked_print(SwigPyPacked *v, FILE *fp, int SWIGUNUSEDPARM(flags)) +{ + char result[SWIG_BUFFER_SIZE]; + fputs("<Swig Packed ", fp); + if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) { + fputs("at ", fp); + fputs(result, fp); + } + fputs(v->ty->name,fp); + fputs(">", fp); + return 0; +} + +SWIGRUNTIME PyObject * +SwigPyPacked_repr(SwigPyPacked *v) +{ + char result[SWIG_BUFFER_SIZE]; + if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) { + return SWIG_Python_str_FromFormat("<Swig Packed at %s%s>", result, v->ty->name); + } else { + return SWIG_Python_str_FromFormat("<Swig Packed %s>", v->ty->name); + } +} + +SWIGRUNTIME PyObject * +SwigPyPacked_str(SwigPyPacked *v) +{ + char result[SWIG_BUFFER_SIZE]; + if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))){ + return SWIG_Python_str_FromFormat("%s%s", result, v->ty->name); + } else { + return SWIG_Python_str_FromChar(v->ty->name); + } +} + +SWIGRUNTIME int +SwigPyPacked_compare(SwigPyPacked *v, SwigPyPacked *w) +{ + size_t i = v->size; + size_t j = w->size; + int s = (i < j) ? -1 : ((i > j) ? 1 : 0); + return s ? s : strncmp((char *)v->pack, (char *)w->pack, 2*v->size); +} + +SWIGRUNTIME PyTypeObject* SwigPyPacked_TypeOnce(void); + +SWIGRUNTIME PyTypeObject* +SwigPyPacked_type(void) { + static PyTypeObject *SWIG_STATIC_POINTER(type) = SwigPyPacked_TypeOnce(); + return type; +} + +SWIGRUNTIMEINLINE int +SwigPyPacked_Check(PyObject *op) { + return ((op)->ob_type == SwigPyPacked_TypeOnce()) + || (strcmp((op)->ob_type->tp_name,"SwigPyPacked") == 0); +} + +SWIGRUNTIME void +SwigPyPacked_dealloc(PyObject *v) +{ + if (SwigPyPacked_Check(v)) { + SwigPyPacked *sobj = (SwigPyPacked *) v; + free(sobj->pack); + } + PyObject_DEL(v); +} + +SWIGRUNTIME PyTypeObject* +SwigPyPacked_TypeOnce(void) { + static char swigpacked_doc[] = "Swig object carries a C/C++ instance pointer"; + static PyTypeObject swigpypacked_type; + static int type_init = 0; + if (!type_init) { + const PyTypeObject tmp = { + /* PyObject header changed in Python 3 */ +#if PY_VERSION_HEX>=0x03000000 + PyVarObject_HEAD_INIT(NULL, 0) +#else + PyObject_HEAD_INIT(NULL) + 0, /* ob_size */ +#endif + (char *)"SwigPyPacked", /* tp_name */ + sizeof(SwigPyPacked), /* tp_basicsize */ + 0, /* tp_itemsize */ + (destructor)SwigPyPacked_dealloc, /* tp_dealloc */ + (printfunc)SwigPyPacked_print, /* tp_print */ + (getattrfunc)0, /* tp_getattr */ + (setattrfunc)0, /* tp_setattr */ +#if PY_VERSION_HEX>=0x03000000 + 0, /* tp_reserved in 3.0.1 */ +#else + (cmpfunc)SwigPyPacked_compare, /* tp_compare */ +#endif + (reprfunc)SwigPyPacked_repr, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + (hashfunc)0, /* tp_hash */ + (ternaryfunc)0, /* tp_call */ + (reprfunc)SwigPyPacked_str, /* tp_str */ + PyObject_GenericGetAttr, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT, /* tp_flags */ + swigpacked_doc, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ +#if PY_VERSION_HEX >= 0x02020000 + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + 0, /* tp_bases */ + 0, /* tp_mro */ + 0, /* tp_cache */ + 0, /* tp_subclasses */ + 0, /* tp_weaklist */ +#endif +#if PY_VERSION_HEX >= 0x02030000 + 0, /* tp_del */ +#endif +#if PY_VERSION_HEX >= 0x02060000 + 0, /* tp_version */ +#endif +#ifdef COUNT_ALLOCS + 0,0,0,0 /* tp_alloc -> tp_next */ +#endif + }; + swigpypacked_type = tmp; + type_init = 1; +#if PY_VERSION_HEX < 0x02020000 + swigpypacked_type.ob_type = &PyType_Type; +#else + if (PyType_Ready(&swigpypacked_type) < 0) + return NULL; +#endif + } + return &swigpypacked_type; +} + +SWIGRUNTIME PyObject * +SwigPyPacked_New(void *ptr, size_t size, swig_type_info *ty) +{ + SwigPyPacked *sobj = PyObject_NEW(SwigPyPacked, SwigPyPacked_type()); + if (sobj) { + void *pack = malloc(size); + if (pack) { + memcpy(pack, ptr, size); + sobj->pack = pack; + sobj->ty = ty; + sobj->size = size; + } else { + PyObject_DEL((PyObject *) sobj); + sobj = 0; + } + } + return (PyObject *) sobj; +} + +SWIGRUNTIME swig_type_info * +SwigPyPacked_UnpackData(PyObject *obj, void *ptr, size_t size) +{ + if (SwigPyPacked_Check(obj)) { + SwigPyPacked *sobj = (SwigPyPacked *)obj; + if (sobj->size != size) return 0; + memcpy(ptr, sobj->pack, size); + return sobj->ty; + } else { + return 0; + } +} + +/* ----------------------------------------------------------------------------- + * pointers/data manipulation + * ----------------------------------------------------------------------------- */ + +SWIGRUNTIMEINLINE PyObject * +_SWIG_This(void) +{ + return SWIG_Python_str_FromChar("this"); +} + +static PyObject *swig_this = NULL; + +SWIGRUNTIME PyObject * +SWIG_This(void) +{ + if (swig_this == NULL) + swig_this = _SWIG_This(); + return swig_this; +} + +/* #define SWIG_PYTHON_SLOW_GETSET_THIS */ + +/* TODO: I don't know how to implement the fast getset in Python 3 right now */ +#if PY_VERSION_HEX>=0x03000000 +#define SWIG_PYTHON_SLOW_GETSET_THIS +#endif + +SWIGRUNTIME SwigPyObject * +SWIG_Python_GetSwigThis(PyObject *pyobj) +{ + PyObject *obj; + + if (SwigPyObject_Check(pyobj)) + return (SwigPyObject *) pyobj; + +#ifdef SWIGPYTHON_BUILTIN + (void)obj; +# ifdef PyWeakref_CheckProxy + if (PyWeakref_CheckProxy(pyobj)) { + pyobj = PyWeakref_GET_OBJECT(pyobj); + if (pyobj && SwigPyObject_Check(pyobj)) + return (SwigPyObject*) pyobj; + } +# endif + return NULL; +#else + + obj = 0; + +#if (!defined(SWIG_PYTHON_SLOW_GETSET_THIS) && (PY_VERSION_HEX >= 0x02030000)) + if (PyInstance_Check(pyobj)) { + obj = _PyInstance_Lookup(pyobj, SWIG_This()); + } else { + PyObject **dictptr = _PyObject_GetDictPtr(pyobj); + if (dictptr != NULL) { + PyObject *dict = *dictptr; + obj = dict ? PyDict_GetItem(dict, SWIG_This()) : 0; + } else { +#ifdef PyWeakref_CheckProxy + if (PyWeakref_CheckProxy(pyobj)) { + PyObject *wobj = PyWeakref_GET_OBJECT(pyobj); + return wobj ? SWIG_Python_GetSwigThis(wobj) : 0; + } +#endif + obj = PyObject_GetAttr(pyobj,SWIG_This()); + if (obj) { + Py_DECREF(obj); + } else { + if (PyErr_Occurred()) PyErr_Clear(); + return 0; + } + } + } +#else + obj = PyObject_GetAttr(pyobj,SWIG_This()); + if (obj) { + Py_DECREF(obj); + } else { + if (PyErr_Occurred()) PyErr_Clear(); + return 0; + } +#endif + if (obj && !SwigPyObject_Check(obj)) { + /* a PyObject is called 'this', try to get the 'real this' + SwigPyObject from it */ + return SWIG_Python_GetSwigThis(obj); + } + return (SwigPyObject *)obj; +#endif +} + +/* Acquire a pointer value */ + +SWIGRUNTIME int +SWIG_Python_AcquirePtr(PyObject *obj, int own) { + if (own == SWIG_POINTER_OWN) { + SwigPyObject *sobj = SWIG_Python_GetSwigThis(obj); + if (sobj) { + int oldown = sobj->own; + sobj->own = own; + return oldown; + } + } + return 0; +} + +/* Convert a pointer value */ + +SWIGRUNTIME int +SWIG_Python_ConvertPtrAndOwn(PyObject *obj, void **ptr, swig_type_info *ty, int flags, int *own) { + int res; + SwigPyObject *sobj; + int implicit_conv = (flags & SWIG_POINTER_IMPLICIT_CONV) != 0; + + if (!obj) + return SWIG_ERROR; + if (obj == Py_None && !implicit_conv) { + if (ptr) + *ptr = 0; + return SWIG_OK; + } + + res = SWIG_ERROR; + + sobj = SWIG_Python_GetSwigThis(obj); + if (own) + *own = 0; + while (sobj) { + void *vptr = sobj->ptr; + if (ty) { + swig_type_info *to = sobj->ty; + if (to == ty) { + /* no type cast needed */ + if (ptr) *ptr = vptr; + break; + } else { + swig_cast_info *tc = SWIG_TypeCheck(to->name,ty); + if (!tc) { + sobj = (SwigPyObject *)sobj->next; + } else { + if (ptr) { + int newmemory = 0; + *ptr = SWIG_TypeCast(tc,vptr,&newmemory); + if (newmemory == SWIG_CAST_NEW_MEMORY) { + assert(own); /* badly formed typemap which will lead to a memory leak - it must set and use own to delete *ptr */ + if (own) + *own = *own | SWIG_CAST_NEW_MEMORY; + } + } + break; + } + } + } else { + if (ptr) *ptr = vptr; + break; + } + } + if (sobj) { + if (own) + *own = *own | sobj->own; + if (flags & SWIG_POINTER_DISOWN) { + sobj->own = 0; + } + res = SWIG_OK; + } else { + if (implicit_conv) { + SwigPyClientData *data = ty ? (SwigPyClientData *) ty->clientdata : 0; + if (data && !data->implicitconv) { + PyObject *klass = data->klass; + if (klass) { + PyObject *impconv; + data->implicitconv = 1; /* avoid recursion and call 'explicit' constructors*/ + impconv = SWIG_Python_CallFunctor(klass, obj); + data->implicitconv = 0; + if (PyErr_Occurred()) { + PyErr_Clear(); + impconv = 0; + } + if (impconv) { + SwigPyObject *iobj = SWIG_Python_GetSwigThis(impconv); + if (iobj) { + void *vptr; + res = SWIG_Python_ConvertPtrAndOwn((PyObject*)iobj, &vptr, ty, 0, 0); + if (SWIG_IsOK(res)) { + if (ptr) { + *ptr = vptr; + /* transfer the ownership to 'ptr' */ + iobj->own = 0; + res = SWIG_AddCast(res); + res = SWIG_AddNewMask(res); + } else { + res = SWIG_AddCast(res); + } + } + } + Py_DECREF(impconv); + } + } + } + } + if (!SWIG_IsOK(res) && obj == Py_None) { + if (ptr) + *ptr = 0; + if (PyErr_Occurred()) + PyErr_Clear(); + res = SWIG_OK; + } + } + return res; +} + +/* Convert a function ptr value */ + +SWIGRUNTIME int +SWIG_Python_ConvertFunctionPtr(PyObject *obj, void **ptr, swig_type_info *ty) { + if (!PyCFunction_Check(obj)) { + return SWIG_ConvertPtr(obj, ptr, ty, 0); + } else { + void *vptr = 0; + + /* here we get the method pointer for callbacks */ + const char *doc = (((PyCFunctionObject *)obj) -> m_ml -> ml_doc); + const char *desc = doc ? strstr(doc, "swig_ptr: ") : 0; + if (desc) + desc = ty ? SWIG_UnpackVoidPtr(desc + 10, &vptr, ty->name) : 0; + if (!desc) + return SWIG_ERROR; + if (ty) { + swig_cast_info *tc = SWIG_TypeCheck(desc,ty); + if (tc) { + int newmemory = 0; + *ptr = SWIG_TypeCast(tc,vptr,&newmemory); + assert(!newmemory); /* newmemory handling not yet implemented */ + } else { + return SWIG_ERROR; + } + } else { + *ptr = vptr; + } + return SWIG_OK; + } +} + +/* Convert a packed value value */ + +SWIGRUNTIME int +SWIG_Python_ConvertPacked(PyObject *obj, void *ptr, size_t sz, swig_type_info *ty) { + swig_type_info *to = SwigPyPacked_UnpackData(obj, ptr, sz); + if (!to) return SWIG_ERROR; + if (ty) { + if (to != ty) { + /* check type cast? */ + swig_cast_info *tc = SWIG_TypeCheck(to->name,ty); + if (!tc) return SWIG_ERROR; + } + } + return SWIG_OK; +} + +/* ----------------------------------------------------------------------------- + * Create a new pointer object + * ----------------------------------------------------------------------------- */ + +/* + Create a new instance object, without calling __init__, and set the + 'this' attribute. +*/ + +SWIGRUNTIME PyObject* +SWIG_Python_NewShadowInstance(SwigPyClientData *data, PyObject *swig_this) +{ +#if (PY_VERSION_HEX >= 0x02020000) + PyObject *inst = 0; + PyObject *newraw = data->newraw; + if (newraw) { + inst = PyObject_Call(newraw, data->newargs, NULL); + if (inst) { +#if !defined(SWIG_PYTHON_SLOW_GETSET_THIS) + PyObject **dictptr = _PyObject_GetDictPtr(inst); + if (dictptr != NULL) { + PyObject *dict = *dictptr; + if (dict == NULL) { + dict = PyDict_New(); + *dictptr = dict; + PyDict_SetItem(dict, SWIG_This(), swig_this); + } + } +#else + PyObject *key = SWIG_This(); + PyObject_SetAttr(inst, key, swig_this); +#endif + } + } else { +#if PY_VERSION_HEX >= 0x03000000 + inst = PyBaseObject_Type.tp_new((PyTypeObject*) data->newargs, Py_None, Py_None); + if (inst) { + PyObject_SetAttr(inst, SWIG_This(), swig_this); + Py_TYPE(inst)->tp_flags &= ~Py_TPFLAGS_VALID_VERSION_TAG; + } +#else + PyObject *dict = PyDict_New(); + if (dict) { + PyDict_SetItem(dict, SWIG_This(), swig_this); + inst = PyInstance_NewRaw(data->newargs, dict); + Py_DECREF(dict); + } +#endif + } + return inst; +#else +#if (PY_VERSION_HEX >= 0x02010000) + PyObject *inst = 0; + PyObject *dict = PyDict_New(); + if (dict) { + PyDict_SetItem(dict, SWIG_This(), swig_this); + inst = PyInstance_NewRaw(data->newargs, dict); + Py_DECREF(dict); + } + return (PyObject *) inst; +#else + PyInstanceObject *inst = PyObject_NEW(PyInstanceObject, &PyInstance_Type); + if (inst == NULL) { + return NULL; + } + inst->in_class = (PyClassObject *)data->newargs; + Py_INCREF(inst->in_class); + inst->in_dict = PyDict_New(); + if (inst->in_dict == NULL) { + Py_DECREF(inst); + return NULL; + } +#ifdef Py_TPFLAGS_HAVE_WEAKREFS + inst->in_weakreflist = NULL; +#endif +#ifdef Py_TPFLAGS_GC + PyObject_GC_Init(inst); +#endif + PyDict_SetItem(inst->in_dict, SWIG_This(), swig_this); + return (PyObject *) inst; +#endif +#endif +} + +SWIGRUNTIME void +SWIG_Python_SetSwigThis(PyObject *inst, PyObject *swig_this) +{ + PyObject *dict; +#if (PY_VERSION_HEX >= 0x02020000) && !defined(SWIG_PYTHON_SLOW_GETSET_THIS) + PyObject **dictptr = _PyObject_GetDictPtr(inst); + if (dictptr != NULL) { + dict = *dictptr; + if (dict == NULL) { + dict = PyDict_New(); + *dictptr = dict; + } + PyDict_SetItem(dict, SWIG_This(), swig_this); + return; + } +#endif + dict = PyObject_GetAttrString(inst, (char*)"__dict__"); + PyDict_SetItem(dict, SWIG_This(), swig_this); + Py_DECREF(dict); +} + + +SWIGINTERN PyObject * +SWIG_Python_InitShadowInstance(PyObject *args) { + PyObject *obj[2]; + if (!SWIG_Python_UnpackTuple(args, "swiginit", 2, 2, obj)) { + return NULL; + } else { + SwigPyObject *sthis = SWIG_Python_GetSwigThis(obj[0]); + if (sthis) { + SwigPyObject_append((PyObject*) sthis, obj[1]); + } else { + SWIG_Python_SetSwigThis(obj[0], obj[1]); + } + return SWIG_Py_Void(); + } +} + +/* Create a new pointer object */ + +SWIGRUNTIME PyObject * +SWIG_Python_NewPointerObj(PyObject *self, void *ptr, swig_type_info *type, int flags) { + SwigPyClientData *clientdata; + PyObject * robj; + int own; + + if (!ptr) + return SWIG_Py_Void(); + + clientdata = type ? (SwigPyClientData *)(type->clientdata) : 0; + own = (flags & SWIG_POINTER_OWN) ? SWIG_POINTER_OWN : 0; + if (clientdata && clientdata->pytype) { + SwigPyObject *newobj; + if (flags & SWIG_BUILTIN_TP_INIT) { + newobj = (SwigPyObject*) self; + if (newobj->ptr) { + PyObject *next_self = clientdata->pytype->tp_alloc(clientdata->pytype, 0); + while (newobj->next) + newobj = (SwigPyObject *) newobj->next; + newobj->next = next_self; + newobj = (SwigPyObject *)next_self; + } + } else { + newobj = PyObject_New(SwigPyObject, clientdata->pytype); + } + if (newobj) { + newobj->ptr = ptr; + newobj->ty = type; + newobj->own = own; + newobj->next = 0; +#ifdef SWIGPYTHON_BUILTIN + newobj->dict = 0; +#endif + return (PyObject*) newobj; + } + return SWIG_Py_Void(); + } + + assert(!(flags & SWIG_BUILTIN_TP_INIT)); + + robj = SwigPyObject_New(ptr, type, own); + if (robj && clientdata && !(flags & SWIG_POINTER_NOSHADOW)) { + PyObject *inst = SWIG_Python_NewShadowInstance(clientdata, robj); + Py_DECREF(robj); + robj = inst; + } + return robj; +} + +/* Create a new packed object */ + +SWIGRUNTIMEINLINE PyObject * +SWIG_Python_NewPackedObj(void *ptr, size_t sz, swig_type_info *type) { + return ptr ? SwigPyPacked_New((void *) ptr, sz, type) : SWIG_Py_Void(); +} + +/* -----------------------------------------------------------------------------* + * Get type list + * -----------------------------------------------------------------------------*/ + +#ifdef SWIG_LINK_RUNTIME +void *SWIG_ReturnGlobalTypeList(void *); +#endif + +SWIGRUNTIME swig_module_info * +SWIG_Python_GetModule(void *SWIGUNUSEDPARM(clientdata)) { + static void *type_pointer = (void *)0; + /* first check if module already created */ + if (!type_pointer) { +#ifdef SWIG_LINK_RUNTIME + type_pointer = SWIG_ReturnGlobalTypeList((void *)0); +#else +# ifdef SWIGPY_USE_CAPSULE + type_pointer = PyCapsule_Import(SWIGPY_CAPSULE_NAME, 0); +# else + type_pointer = PyCObject_Import((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION, + (char*)"type_pointer" SWIG_TYPE_TABLE_NAME); +# endif + if (PyErr_Occurred()) { + PyErr_Clear(); + type_pointer = (void *)0; + } +#endif + } + return (swig_module_info *) type_pointer; +} + +#if PY_MAJOR_VERSION < 2 +/* PyModule_AddObject function was introduced in Python 2.0. The following function + is copied out of Python/modsupport.c in python version 2.3.4 */ +SWIGINTERN int +PyModule_AddObject(PyObject *m, char *name, PyObject *o) +{ + PyObject *dict; + if (!PyModule_Check(m)) { + PyErr_SetString(PyExc_TypeError, + "PyModule_AddObject() needs module as first arg"); + return SWIG_ERROR; + } + if (!o) { + PyErr_SetString(PyExc_TypeError, + "PyModule_AddObject() needs non-NULL value"); + return SWIG_ERROR; + } + + dict = PyModule_GetDict(m); + if (dict == NULL) { + /* Internal error -- modules must have a dict! */ + PyErr_Format(PyExc_SystemError, "module '%s' has no __dict__", + PyModule_GetName(m)); + return SWIG_ERROR; + } + if (PyDict_SetItemString(dict, name, o)) + return SWIG_ERROR; + Py_DECREF(o); + return SWIG_OK; +} +#endif + +SWIGRUNTIME void +#ifdef SWIGPY_USE_CAPSULE +SWIG_Python_DestroyModule(PyObject *obj) +#else +SWIG_Python_DestroyModule(void *vptr) +#endif +{ +#ifdef SWIGPY_USE_CAPSULE + swig_module_info *swig_module = (swig_module_info *) PyCapsule_GetPointer(obj, SWIGPY_CAPSULE_NAME); +#else + swig_module_info *swig_module = (swig_module_info *) vptr; +#endif + swig_type_info **types = swig_module->types; + size_t i; + for (i =0; i < swig_module->size; ++i) { + swig_type_info *ty = types[i]; + if (ty->owndata) { + SwigPyClientData *data = (SwigPyClientData *) ty->clientdata; + if (data) SwigPyClientData_Del(data); + } + } + Py_DECREF(SWIG_This()); + swig_this = NULL; +} + +SWIGRUNTIME void +SWIG_Python_SetModule(swig_module_info *swig_module) { +#if PY_VERSION_HEX >= 0x03000000 + /* Add a dummy module object into sys.modules */ + PyObject *module = PyImport_AddModule((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION); +#else + static PyMethodDef swig_empty_runtime_method_table[] = { {NULL, NULL, 0, NULL} }; /* Sentinel */ + PyObject *module = Py_InitModule((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION, swig_empty_runtime_method_table); +#endif +#ifdef SWIGPY_USE_CAPSULE + PyObject *pointer = PyCapsule_New((void *) swig_module, SWIGPY_CAPSULE_NAME, SWIG_Python_DestroyModule); + if (pointer && module) { + PyModule_AddObject(module, (char*)"type_pointer_capsule" SWIG_TYPE_TABLE_NAME, pointer); + } else { + Py_XDECREF(pointer); + } +#else + PyObject *pointer = PyCObject_FromVoidPtr((void *) swig_module, SWIG_Python_DestroyModule); + if (pointer && module) { + PyModule_AddObject(module, (char*)"type_pointer" SWIG_TYPE_TABLE_NAME, pointer); + } else { + Py_XDECREF(pointer); + } +#endif +} + +/* The python cached type query */ +SWIGRUNTIME PyObject * +SWIG_Python_TypeCache(void) { + static PyObject *SWIG_STATIC_POINTER(cache) = PyDict_New(); + return cache; +} + +SWIGRUNTIME swig_type_info * +SWIG_Python_TypeQuery(const char *type) +{ + PyObject *cache = SWIG_Python_TypeCache(); + PyObject *key = SWIG_Python_str_FromChar(type); + PyObject *obj = PyDict_GetItem(cache, key); + swig_type_info *descriptor; + if (obj) { +#ifdef SWIGPY_USE_CAPSULE + descriptor = (swig_type_info *) PyCapsule_GetPointer(obj, NULL); +#else + descriptor = (swig_type_info *) PyCObject_AsVoidPtr(obj); +#endif + } else { + swig_module_info *swig_module = SWIG_GetModule(0); + descriptor = SWIG_TypeQueryModule(swig_module, swig_module, type); + if (descriptor) { +#ifdef SWIGPY_USE_CAPSULE + obj = PyCapsule_New((void*) descriptor, NULL, NULL); +#else + obj = PyCObject_FromVoidPtr(descriptor, NULL); +#endif + PyDict_SetItem(cache, key, obj); + Py_DECREF(obj); + } + } + Py_DECREF(key); + return descriptor; +} + +/* + For backward compatibility only +*/ +#define SWIG_POINTER_EXCEPTION 0 +#define SWIG_arg_fail(arg) SWIG_Python_ArgFail(arg) +#define SWIG_MustGetPtr(p, type, argnum, flags) SWIG_Python_MustGetPtr(p, type, argnum, flags) + +SWIGRUNTIME int +SWIG_Python_AddErrMesg(const char* mesg, int infront) +{ + if (PyErr_Occurred()) { + PyObject *type = 0; + PyObject *value = 0; + PyObject *traceback = 0; + PyErr_Fetch(&type, &value, &traceback); + if (value) { + char *tmp; + PyObject *old_str = PyObject_Str(value); + Py_XINCREF(type); + PyErr_Clear(); + if (infront) { + PyErr_Format(type, "%s %s", mesg, tmp = SWIG_Python_str_AsChar(old_str)); + } else { + PyErr_Format(type, "%s %s", tmp = SWIG_Python_str_AsChar(old_str), mesg); + } + SWIG_Python_str_DelForPy3(tmp); + Py_DECREF(old_str); + } + return 1; + } else { + return 0; + } +} + +SWIGRUNTIME int +SWIG_Python_ArgFail(int argnum) +{ + if (PyErr_Occurred()) { + /* add information about failing argument */ + char mesg[256]; + PyOS_snprintf(mesg, sizeof(mesg), "argument number %d:", argnum); + return SWIG_Python_AddErrMesg(mesg, 1); + } else { + return 0; + } +} + +SWIGRUNTIMEINLINE const char * +SwigPyObject_GetDesc(PyObject *self) +{ + SwigPyObject *v = (SwigPyObject *)self; + swig_type_info *ty = v ? v->ty : 0; + return ty ? ty->str : ""; +} + +SWIGRUNTIME void +SWIG_Python_TypeError(const char *type, PyObject *obj) +{ + if (type) { +#if defined(SWIG_COBJECT_TYPES) + if (obj && SwigPyObject_Check(obj)) { + const char *otype = (const char *) SwigPyObject_GetDesc(obj); + if (otype) { + PyErr_Format(PyExc_TypeError, "a '%s' is expected, 'SwigPyObject(%s)' is received", + type, otype); + return; + } + } else +#endif + { + const char *otype = (obj ? obj->ob_type->tp_name : 0); + if (otype) { + PyObject *str = PyObject_Str(obj); + const char *cstr = str ? SWIG_Python_str_AsChar(str) : 0; + if (cstr) { + PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s(%s)' is received", + type, otype, cstr); + SWIG_Python_str_DelForPy3(cstr); + } else { + PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s' is received", + type, otype); + } + Py_XDECREF(str); + return; + } + } + PyErr_Format(PyExc_TypeError, "a '%s' is expected", type); + } else { + PyErr_Format(PyExc_TypeError, "unexpected type is received"); + } +} + + +/* Convert a pointer value, signal an exception on a type mismatch */ +SWIGRUNTIME void * +SWIG_Python_MustGetPtr(PyObject *obj, swig_type_info *ty, int SWIGUNUSEDPARM(argnum), int flags) { + void *result; + if (SWIG_Python_ConvertPtr(obj, &result, ty, flags) == -1) { + PyErr_Clear(); +#if SWIG_POINTER_EXCEPTION + if (flags) { + SWIG_Python_TypeError(SWIG_TypePrettyName(ty), obj); + SWIG_Python_ArgFail(argnum); + } +#endif + } + return result; +} + +#ifdef SWIGPYTHON_BUILTIN +SWIGRUNTIME int +SWIG_Python_NonDynamicSetAttr(PyObject *obj, PyObject *name, PyObject *value) { + PyTypeObject *tp = obj->ob_type; + PyObject *descr; + PyObject *encoded_name; + descrsetfunc f; + int res = -1; + +# ifdef Py_USING_UNICODE + if (PyString_Check(name)) { + name = PyUnicode_Decode(PyString_AsString(name), PyString_Size(name), NULL, NULL); + if (!name) + return -1; + } else if (!PyUnicode_Check(name)) +# else + if (!PyString_Check(name)) +# endif + { + PyErr_Format(PyExc_TypeError, "attribute name must be string, not '%.200s'", name->ob_type->tp_name); + return -1; + } else { + Py_INCREF(name); + } + + if (!tp->tp_dict) { + if (PyType_Ready(tp) < 0) + goto done; + } + + descr = _PyType_Lookup(tp, name); + f = NULL; + if (descr != NULL) + f = descr->ob_type->tp_descr_set; + if (!f) { + if (PyString_Check(name)) { + encoded_name = name; + Py_INCREF(name); + } else { + encoded_name = PyUnicode_AsUTF8String(name); + } + PyErr_Format(PyExc_AttributeError, "'%.100s' object has no attribute '%.200s'", tp->tp_name, PyString_AsString(encoded_name)); + Py_DECREF(encoded_name); + } else { + res = f(descr, obj, value); + } + + done: + Py_DECREF(name); + return res; +} +#endif + + +#ifdef __cplusplus +} +#endif + + + +#define SWIG_exception_fail(code, msg) do { SWIG_Error(code, msg); SWIG_fail; } while(0) + +#define SWIG_contract_assert(expr, msg) if (!(expr)) { SWIG_Error(SWIG_RuntimeError, msg); SWIG_fail; } else + + + + #define SWIG_exception(code, msg) do { SWIG_Error(code, msg); SWIG_fail;; } while(0) + + +/* -------- TYPES TABLE (BEGIN) -------- */ + +#define SWIGTYPE_p_char swig_types[0] +#define SWIGTYPE_p_int swig_types[1] +#define SWIGTYPE_p_long_long swig_types[2] +#define SWIGTYPE_p_qpol_avrule swig_types[3] +#define SWIGTYPE_p_qpol_bool swig_types[4] +#define SWIGTYPE_p_qpol_capability swig_types[5] +#define SWIGTYPE_p_qpol_cat swig_types[6] +#define SWIGTYPE_p_qpol_class swig_types[7] +#define SWIGTYPE_p_qpol_common swig_types[8] +#define SWIGTYPE_p_qpol_cond swig_types[9] +#define SWIGTYPE_p_qpol_cond_expr_node swig_types[10] +#define SWIGTYPE_p_qpol_constraint swig_types[11] +#define SWIGTYPE_p_qpol_constraint_expr_node swig_types[12] +#define SWIGTYPE_p_qpol_context swig_types[13] +#define SWIGTYPE_p_qpol_default_object swig_types[14] +#define SWIGTYPE_p_qpol_devicetreecon swig_types[15] +#define SWIGTYPE_p_qpol_filename_trans swig_types[16] +#define SWIGTYPE_p_qpol_fs_use swig_types[17] +#define SWIGTYPE_p_qpol_genfscon swig_types[18] +#define SWIGTYPE_p_qpol_iomemcon swig_types[19] +#define SWIGTYPE_p_qpol_ioportcon swig_types[20] +#define SWIGTYPE_p_qpol_isid swig_types[21] +#define SWIGTYPE_p_qpol_iterator swig_types[22] +#define SWIGTYPE_p_qpol_level swig_types[23] +#define SWIGTYPE_p_qpol_mls_level swig_types[24] +#define SWIGTYPE_p_qpol_mls_range swig_types[25] +#define SWIGTYPE_p_qpol_netifcon swig_types[26] +#define SWIGTYPE_p_qpol_nodecon swig_types[27] +#define SWIGTYPE_p_qpol_pcidevicecon swig_types[28] +#define SWIGTYPE_p_qpol_pirqcon swig_types[29] +#define SWIGTYPE_p_qpol_polcap swig_types[30] +#define SWIGTYPE_p_qpol_policy swig_types[31] +#define SWIGTYPE_p_qpol_portcon swig_types[32] +#define SWIGTYPE_p_qpol_range_trans swig_types[33] +#define SWIGTYPE_p_qpol_role swig_types[34] +#define SWIGTYPE_p_qpol_role_allow swig_types[35] +#define SWIGTYPE_p_qpol_role_trans swig_types[36] +#define SWIGTYPE_p_qpol_rolebounds swig_types[37] +#define SWIGTYPE_p_qpol_semantic_level swig_types[38] +#define SWIGTYPE_p_qpol_terule swig_types[39] +#define SWIGTYPE_p_qpol_type swig_types[40] +#define SWIGTYPE_p_qpol_typebounds swig_types[41] +#define SWIGTYPE_p_qpol_user swig_types[42] +#define SWIGTYPE_p_qpol_userbounds swig_types[43] +#define SWIGTYPE_p_qpol_validatetrans swig_types[44] +#define SWIGTYPE_p_short swig_types[45] +#define SWIGTYPE_p_signed_char swig_types[46] +#define SWIGTYPE_p_unsigned_char swig_types[47] +#define SWIGTYPE_p_unsigned_int swig_types[48] +#define SWIGTYPE_p_unsigned_long_long swig_types[49] +#define SWIGTYPE_p_unsigned_short swig_types[50] +#define SWIGTYPE_p_void swig_types[51] +static swig_type_info *swig_types[53]; +static swig_module_info swig_module = {swig_types, 52, 0, 0, 0, 0}; +#define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name) +#define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name) + +/* -------- TYPES TABLE (END) -------- */ + +#if (PY_VERSION_HEX <= 0x02000000) +# if !defined(SWIG_PYTHON_CLASSIC) +# error "This python version requires swig to be run with the '-classic' option" +# endif +#endif + +/*----------------------------------------------- + @(target):= _qpol.so + ------------------------------------------------*/ +#if PY_VERSION_HEX >= 0x03000000 +# define SWIG_init PyInit__qpol + +#else +# define SWIG_init init_qpol + +#endif +#define SWIG_name "_qpol" + +#define SWIGVERSION 0x020011 +#define SWIG_VERSION SWIGVERSION + + +#define SWIG_as_voidptr(a) (void *)((const void *)(a)) +#define SWIG_as_voidptrptr(a) ((void)SWIG_as_voidptr(*a),(void**)(a)) + + +#include <sys/stat.h> +#include <arpa/inet.h> +#include <sepol/policydb.h> +#include <sepol/policydb/policydb.h> +#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" +#include "include/qpol/xen_query.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; + + + +#include <stdint.h> // Use the C99 official header + + + /* cast void * to char * as it can't have a constructor */ + const char * to_str(void *x) { + return (const char *)x; + } + + /* cast a void * to int, while freeing the pointer */ + int to_int_with_free(void *x) { + int i = *(int *)x; + free(x); + return i; + } + + +SWIGINTERN swig_type_info* +SWIG_pchar_descriptor(void) +{ + static int init = 0; + static swig_type_info* info = 0; + if (!init) { + info = SWIG_TypeQuery("_p_char"); + init = 1; + } + return info; +} + + +SWIGINTERNINLINE PyObject * +SWIG_FromCharPtrAndSize(const char* carray, size_t size) +{ + if (carray) { + if (size > INT_MAX) { + swig_type_info* pchar_descriptor = SWIG_pchar_descriptor(); + return pchar_descriptor ? + SWIG_InternalNewPointerObj((char *)(carray), pchar_descriptor, 0) : SWIG_Py_Void(); + } else { +#if PY_VERSION_HEX >= 0x03000000 + return PyUnicode_FromStringAndSize(carray, (int)(size)); +#else + return PyString_FromStringAndSize(carray, (int)(size)); +#endif + } + } else { + return SWIG_Py_Void(); + } +} + + +SWIGINTERNINLINE PyObject * +SWIG_FromCharPtr(const char *cptr) +{ + return SWIG_FromCharPtrAndSize(cptr, (cptr ? strlen(cptr) : 0)); +} + + +SWIGINTERNINLINE PyObject* + SWIG_From_int (int value) +{ + return PyInt_FromLong((long) value); +} + + +/* C Bridge to Python logging callback */ +__attribute__ ((format(printf, 4, 0))) +static void qpol_log_callback(void *varg, + const qpol_policy_t * p __attribute__ ((unused)), + int level, + const char *fmt, + va_list va_args) +{ + /* Expand to a full string to avoid any C format string + * or variable args handling when passing to Python + */ + + PyObject *py_callback, *rc; + char *str = NULL; + + if(vasprintf(&str, fmt, va_args) < 0) + return; + + py_callback = (PyObject *) varg; + + /* this char* casting doesn't make sense, but this runs afoul of -Werror + * otherwise as the Python library doesn't do const char* */ + rc = PyObject_CallFunction(py_callback, (char*)"(is)", level, str); + Py_XDECREF(rc); + free(str); +} + + +SWIGINTERN int +SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc) +{ +#if PY_VERSION_HEX>=0x03000000 + if (PyUnicode_Check(obj)) +#else + if (PyString_Check(obj)) +#endif + { + char *cstr; Py_ssize_t len; +#if PY_VERSION_HEX>=0x03000000 + if (!alloc && cptr) { + /* We can't allow converting without allocation, since the internal + representation of string in Python 3 is UCS-2/UCS-4 but we require + a UTF-8 representation. + TODO(bhy) More detailed explanation */ + return SWIG_RuntimeError; + } + obj = PyUnicode_AsUTF8String(obj); + PyBytes_AsStringAndSize(obj, &cstr, &len); + if(alloc) *alloc = SWIG_NEWOBJ; +#else + PyString_AsStringAndSize(obj, &cstr, &len); +#endif + if (cptr) { + if (alloc) { + /* + In python the user should not be able to modify the inner + string representation. To warranty that, if you define + SWIG_PYTHON_SAFE_CSTRINGS, a new/copy of the python string + buffer is always returned. + + The default behavior is just to return the pointer value, + so, be careful. + */ +#if defined(SWIG_PYTHON_SAFE_CSTRINGS) + if (*alloc != SWIG_OLDOBJ) +#else + if (*alloc == SWIG_NEWOBJ) +#endif + { + *cptr = (char *)memcpy((char *)malloc((len + 1)*sizeof(char)), cstr, sizeof(char)*(len + 1)); + *alloc = SWIG_NEWOBJ; + } + else { + *cptr = cstr; + *alloc = SWIG_OLDOBJ; + } + } else { + #if PY_VERSION_HEX>=0x03000000 + assert(0); /* Should never reach here in Python 3 */ + #endif + *cptr = SWIG_Python_str_AsChar(obj); + } + } + if (psize) *psize = len + 1; +#if PY_VERSION_HEX>=0x03000000 + Py_XDECREF(obj); +#endif + return SWIG_OK; + } else { + swig_type_info* pchar_descriptor = SWIG_pchar_descriptor(); + if (pchar_descriptor) { + void* vptr = 0; + if (SWIG_ConvertPtr(obj, &vptr, pchar_descriptor, 0) == SWIG_OK) { + if (cptr) *cptr = (char *) vptr; + if (psize) *psize = vptr ? (strlen((char *)vptr) + 1) : 0; + if (alloc) *alloc = SWIG_OLDOBJ; + return SWIG_OK; + } + } + } + return SWIG_TypeError; +} + + + + + +#include <limits.h> +#if !defined(SWIG_NO_LLONG_MAX) +# if !defined(LLONG_MAX) && defined(__GNUC__) && defined (__LONG_LONG_MAX__) +# define LLONG_MAX __LONG_LONG_MAX__ +# define LLONG_MIN (-LLONG_MAX - 1LL) +# define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL) +# endif +#endif + + +SWIGINTERN int +SWIG_AsVal_double (PyObject *obj, double *val) +{ + int res = SWIG_TypeError; + if (PyFloat_Check(obj)) { + if (val) *val = PyFloat_AsDouble(obj); + return SWIG_OK; + } else if (PyInt_Check(obj)) { + if (val) *val = PyInt_AsLong(obj); + return SWIG_OK; + } else if (PyLong_Check(obj)) { + double v = PyLong_AsDouble(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_OK; + } else { + PyErr_Clear(); + } + } +#ifdef SWIG_PYTHON_CAST_MODE + { + int dispatch = 0; + double d = PyFloat_AsDouble(obj); + if (!PyErr_Occurred()) { + if (val) *val = d; + return SWIG_AddCast(SWIG_OK); + } else { + PyErr_Clear(); + } + if (!dispatch) { + long v = PyLong_AsLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_AddCast(SWIG_AddCast(SWIG_OK)); + } else { + PyErr_Clear(); + } + } + } +#endif + return res; +} + + +#include <float.h> + + +#include <math.h> + + +SWIGINTERNINLINE int +SWIG_CanCastAsInteger(double *d, double min, double max) { + double x = *d; + if ((min <= x && x <= max)) { + double fx = floor(x); + double cx = ceil(x); + double rd = ((x - fx) < 0.5) ? fx : cx; /* simple rint */ + if ((errno == EDOM) || (errno == ERANGE)) { + errno = 0; + } else { + double summ, reps, diff; + if (rd < x) { + diff = x - rd; + } else if (rd > x) { + diff = rd - x; + } else { + return 1; + } + summ = rd + x; + reps = diff/summ; + if (reps < 8*DBL_EPSILON) { + *d = rd; + return 1; + } + } + } + return 0; +} + + +SWIGINTERN int +SWIG_AsVal_long (PyObject *obj, long* val) +{ + if (PyInt_Check(obj)) { + if (val) *val = PyInt_AsLong(obj); + return SWIG_OK; + } else if (PyLong_Check(obj)) { + long v = PyLong_AsLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_OK; + } else { + PyErr_Clear(); + } + } +#ifdef SWIG_PYTHON_CAST_MODE + { + int dispatch = 0; + long v = PyInt_AsLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_AddCast(SWIG_OK); + } else { + PyErr_Clear(); + } + if (!dispatch) { + double d; + int res = SWIG_AddCast(SWIG_AsVal_double (obj,&d)); + if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, LONG_MIN, LONG_MAX)) { + if (val) *val = (long)(d); + return res; + } + } + } +#endif + return SWIG_TypeError; +} + + +SWIGINTERN int +SWIG_AsVal_int (PyObject * obj, int *val) +{ + long v; + int res = SWIG_AsVal_long (obj, &v); + if (SWIG_IsOK(res)) { + if ((v < INT_MIN || v > INT_MAX)) { + return SWIG_OverflowError; + } else { + if (val) *val = (int)(v); + } + } + return res; +} + +SWIGINTERN struct qpol_policy *new_qpol_policy(char const *path,int const options,PyObject *py_callback){ + qpol_policy_t *p; + + if (!PyCallable_Check(py_callback)) { + PyErr_SetString(PyExc_TypeError, "Callback parameter must be callable"); + return NULL; + } + + qpol_policy_open_from_file(path, &p, qpol_log_callback, (void*)py_callback, options); + return p; + } +SWIGINTERN void delete_qpol_policy(struct qpol_policy *self){ + qpol_policy_destroy(&self); + } +SWIGINTERN int qpol_policy_version(struct qpol_policy *self){ + unsigned int v; + (void)qpol_policy_get_policy_version(self, &v); /* only error is on null parameters neither can be here */ + return (int) v; + } +SWIGINTERN char const *qpol_policy_handle_unknown(struct qpol_policy *self){ + unsigned int h; + qpol_policy_get_policy_handle_unknown(self, &h); + + switch (h) { + case SEPOL_DENY_UNKNOWN: return "deny"; + case SEPOL_REJECT_UNKNOWN: return "reject"; + case SEPOL_ALLOW_UNKNOWN: return "allow"; + default: return "unknown"; + } + } +SWIGINTERN char const *qpol_policy_target_platform(struct qpol_policy *self){ + int t; + (void)qpol_policy_get_target_platform(self, &t); + switch (t) { + case SEPOL_TARGET_SELINUX: return "selinux"; + case SEPOL_TARGET_XEN: return "xen"; + default: return "unknown"; + } + } +SWIGINTERN int qpol_policy_capability(struct qpol_policy *self,qpol_capability_e cap){ + return qpol_policy_has_capability(self, cap); + } +SWIGINTERN qpol_iterator_t *qpol_policy_type_iter(struct qpol_policy *self){ + qpol_iterator_t *iter; + if (qpol_policy_get_type_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + } +SWIGINTERN size_t qpol_policy_type_count(struct qpol_policy *self){ + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_type_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + } + + #define SWIG_From_long PyLong_FromLong + + +SWIGINTERNINLINE PyObject* +SWIG_From_unsigned_SS_long (unsigned long value) +{ + return (value > LONG_MAX) ? + PyLong_FromUnsignedLong(value) : PyLong_FromLong((long)(value)); +} + + +SWIGINTERNINLINE PyObject * +SWIG_From_size_t (size_t value) +{ + return SWIG_From_unsigned_SS_long ((unsigned long)(value)); +} + +SWIGINTERN qpol_iterator_t *qpol_policy_role_iter(struct qpol_policy *self){ + qpol_iterator_t *iter; + if (qpol_policy_get_role_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + } +SWIGINTERN size_t qpol_policy_role_count(struct qpol_policy *self){ + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_role_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + } +SWIGINTERN qpol_iterator_t *qpol_policy_level_iter(struct qpol_policy *self){ + qpol_iterator_t *iter; + if (qpol_policy_get_level_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + } +SWIGINTERN size_t qpol_policy_level_count(struct qpol_policy *self){ + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_level_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + } +SWIGINTERN qpol_iterator_t *qpol_policy_cat_iter(struct qpol_policy *self){ + qpol_iterator_t *iter; + if (qpol_policy_get_cat_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + } +SWIGINTERN size_t qpol_policy_cat_count(struct qpol_policy *self){ + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_cat_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + } +SWIGINTERN qpol_iterator_t *qpol_policy_user_iter(struct qpol_policy *self){ + qpol_iterator_t *iter; + if (qpol_policy_get_user_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + } +SWIGINTERN size_t qpol_policy_user_count(struct qpol_policy *self){ + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_user_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + } +SWIGINTERN qpol_iterator_t *qpol_policy_bool_iter(struct qpol_policy *self){ + qpol_iterator_t *iter; + if (qpol_policy_get_bool_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + } +SWIGINTERN size_t qpol_policy_bool_count(struct qpol_policy *self){ + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_bool_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + } +SWIGINTERN qpol_iterator_t *qpol_policy_class_iter(struct qpol_policy *self,char *perm){ + 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; + fail: + return NULL; + } +SWIGINTERN size_t qpol_policy_class_count(struct qpol_policy *self){ + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_class_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + } +SWIGINTERN qpol_iterator_t *qpol_policy_common_iter(struct qpol_policy *self,char *perm){ + 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; + fail: + return NULL; + } +SWIGINTERN size_t qpol_policy_common_count(struct qpol_policy *self){ + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_common_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + } +SWIGINTERN qpol_iterator_t *qpol_policy_fs_use_iter(struct qpol_policy *self){ + qpol_iterator_t *iter; + if (qpol_policy_get_fs_use_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + } +SWIGINTERN size_t qpol_policy_fs_use_count(struct qpol_policy *self){ + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_fs_use_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + } +SWIGINTERN qpol_iterator_t *qpol_policy_genfscon_iter(struct qpol_policy *self){ + qpol_iterator_t *iter; + if (qpol_policy_get_genfscon_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + } +SWIGINTERN size_t qpol_policy_genfscon_count(struct qpol_policy *self){ + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_genfscon_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + } +SWIGINTERN qpol_iterator_t *qpol_policy_isid_iter(struct qpol_policy *self){ + qpol_iterator_t *iter; + if (qpol_policy_get_isid_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + } +SWIGINTERN size_t qpol_policy_isid_count(struct qpol_policy *self){ + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_isid_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + } +SWIGINTERN qpol_iterator_t *qpol_policy_netifcon_iter(struct qpol_policy *self){ + qpol_iterator_t *iter; + if (qpol_policy_get_netifcon_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + } +SWIGINTERN size_t qpol_policy_netifcon_count(struct qpol_policy *self){ + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_netifcon_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + } +SWIGINTERN qpol_iterator_t *qpol_policy_nodecon_iter(struct qpol_policy *self){ + qpol_iterator_t *iter; + if (qpol_policy_get_nodecon_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + } +SWIGINTERN size_t qpol_policy_nodecon_count(struct qpol_policy *self){ + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_nodecon_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + } +SWIGINTERN qpol_iterator_t *qpol_policy_portcon_iter(struct qpol_policy *self){ + qpol_iterator_t *iter; + if (qpol_policy_get_portcon_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + } +SWIGINTERN size_t qpol_policy_portcon_count(struct qpol_policy *self){ + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_portcon_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + } +SWIGINTERN qpol_iterator_t *qpol_policy_constraint_iter(struct qpol_policy *self){ + qpol_iterator_t *iter; + if (qpol_policy_get_constraint_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + } +SWIGINTERN size_t qpol_policy_constraint_count(struct qpol_policy *self){ + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_constraint_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + } +SWIGINTERN qpol_iterator_t *qpol_policy_validatetrans_iter(struct qpol_policy *self){ + qpol_iterator_t *iter; + if (qpol_policy_get_validatetrans_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + } +SWIGINTERN size_t qpol_policy_validatetrans_count(struct qpol_policy *self){ + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_validatetrans_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + } +SWIGINTERN qpol_iterator_t *qpol_policy_role_allow_iter(struct qpol_policy *self){ + qpol_iterator_t *iter; + if (qpol_policy_get_role_allow_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + } +SWIGINTERN size_t qpol_policy_role_allow_count(struct qpol_policy *self){ + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_role_allow_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + } +SWIGINTERN qpol_iterator_t *qpol_policy_role_trans_iter(struct qpol_policy *self){ + qpol_iterator_t *iter; + if (qpol_policy_get_role_trans_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + } +SWIGINTERN size_t qpol_policy_role_trans_count(struct qpol_policy *self){ + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_role_trans_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + } +SWIGINTERN qpol_iterator_t *qpol_policy_range_trans_iter(struct qpol_policy *self){ + qpol_iterator_t *iter; + if (qpol_policy_get_range_trans_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + } +SWIGINTERN size_t qpol_policy_range_trans_count(struct qpol_policy *self){ + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_range_trans_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + } +SWIGINTERN qpol_iterator_t *qpol_policy_avrule_iter(struct qpol_policy *self){ + qpol_iterator_t *iter; + uint32_t rule_types = QPOL_RULE_ALLOW | QPOL_RULE_AUDITALLOW | QPOL_RULE_DONTAUDIT; + + if (qpol_policy_has_capability(self, QPOL_CAP_NEVERALLOW)) + rule_types |= QPOL_RULE_NEVERALLOW; + + if (qpol_policy_get_avrule_iter(self, rule_types, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + } +SWIGINTERN size_t qpol_policy_avrule_allow_count(struct qpol_policy *self){ + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_avrule_iter(self, QPOL_RULE_ALLOW, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + } +SWIGINTERN size_t qpol_policy_avrule_auditallow_count(struct qpol_policy *self){ + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_avrule_iter(self, QPOL_RULE_AUDITALLOW, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + } +SWIGINTERN size_t qpol_policy_avrule_neverallow_count(struct qpol_policy *self){ + if (qpol_policy_has_capability(self, QPOL_CAP_NEVERALLOW)) { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_avrule_iter(self, QPOL_RULE_NEVERALLOW, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + } else { + return 0; + } + fail: + return 0; + } +SWIGINTERN size_t qpol_policy_avrule_dontaudit_count(struct qpol_policy *self){ + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_avrule_iter(self, QPOL_RULE_DONTAUDIT, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + } +SWIGINTERN qpol_iterator_t *qpol_policy_avrulex_iter(struct qpol_policy *self){ + qpol_iterator_t *iter; + uint32_t rule_types = QPOL_RULE_XPERMS_ALLOW | QPOL_RULE_XPERMS_AUDITALLOW | QPOL_RULE_XPERMS_DONTAUDIT; + + if (qpol_policy_has_capability(self, QPOL_CAP_NEVERALLOW)) + rule_types |= QPOL_RULE_XPERMS_NEVERALLOW; + + if (qpol_policy_get_avrule_iter(self, rule_types, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + } +SWIGINTERN size_t qpol_policy_avrule_allowx_count(struct qpol_policy *self){ + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_avrule_iter(self, QPOL_RULE_XPERMS_ALLOW, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + } +SWIGINTERN size_t qpol_policy_avrule_auditallowx_count(struct qpol_policy *self){ + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_avrule_iter(self, QPOL_RULE_XPERMS_AUDITALLOW, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + } +SWIGINTERN size_t qpol_policy_avrule_neverallowx_count(struct qpol_policy *self){ + if (qpol_policy_has_capability(self, QPOL_CAP_NEVERALLOW)) { + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_avrule_iter(self, QPOL_RULE_XPERMS_NEVERALLOW, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + } else { + return 0; + } + fail: + return 0; + } +SWIGINTERN size_t qpol_policy_avrule_dontauditx_count(struct qpol_policy *self){ + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_avrule_iter(self, QPOL_RULE_XPERMS_DONTAUDIT, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + } +SWIGINTERN qpol_iterator_t *qpol_policy_terule_iter(struct qpol_policy *self){ + qpol_iterator_t *iter; + uint32_t rule_types = QPOL_RULE_TYPE_TRANS | QPOL_RULE_TYPE_CHANGE | QPOL_RULE_TYPE_MEMBER; + + if (qpol_policy_get_terule_iter(self, rule_types, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + } +SWIGINTERN size_t qpol_policy_terule_trans_count(struct qpol_policy *self){ + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_terule_iter(self, QPOL_RULE_TYPE_TRANS, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + } +SWIGINTERN size_t qpol_policy_terule_change_count(struct qpol_policy *self){ + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_terule_iter(self, QPOL_RULE_TYPE_CHANGE, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + } +SWIGINTERN size_t qpol_policy_terule_member_count(struct qpol_policy *self){ + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_terule_iter(self, QPOL_RULE_TYPE_MEMBER, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + } +SWIGINTERN qpol_iterator_t *qpol_policy_cond_iter(struct qpol_policy *self){ + qpol_iterator_t *iter; + if (qpol_policy_get_cond_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + } +SWIGINTERN size_t qpol_policy_cond_count(struct qpol_policy *self){ + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_cond_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + } +SWIGINTERN qpol_iterator_t *qpol_policy_filename_trans_iter(struct qpol_policy *self){ + qpol_iterator_t *iter; + if (qpol_policy_get_filename_trans_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + } +SWIGINTERN size_t qpol_policy_filename_trans_count(struct qpol_policy *self){ + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_filename_trans_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + } +SWIGINTERN qpol_iterator_t *qpol_policy_permissive_iter(struct qpol_policy *self){ + qpol_iterator_t *iter; + if (qpol_policy_get_permissive_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + } +SWIGINTERN size_t qpol_policy_permissive_count(struct qpol_policy *self){ + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_permissive_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + } +SWIGINTERN qpol_iterator_t *qpol_policy_typebounds_iter(struct qpol_policy *self){ + qpol_iterator_t *iter; + if (qpol_policy_get_typebounds_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + } +SWIGINTERN qpol_iterator_t *qpol_policy_polcap_iter(struct qpol_policy *self){ + qpol_iterator_t *iter; + if (qpol_policy_get_polcap_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + } +SWIGINTERN size_t qpol_policy_polcap_count(struct qpol_policy *self){ + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_polcap_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + } +SWIGINTERN qpol_iterator_t *qpol_policy_default_iter(struct qpol_policy *self){ + qpol_iterator_t *iter; + if (qpol_policy_get_default_object_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + } +SWIGINTERN qpol_iterator_t *qpol_policy_iomemcon_iter(struct qpol_policy *self){ + qpol_iterator_t *iter; + if (qpol_policy_get_iomemcon_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + } +SWIGINTERN size_t qpol_policy_iomemcon_count(struct qpol_policy *self){ + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_iomemcon_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + } +SWIGINTERN qpol_iterator_t *qpol_policy_ioportcon_iter(struct qpol_policy *self){ + qpol_iterator_t *iter; + if (qpol_policy_get_ioportcon_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + } +SWIGINTERN size_t qpol_policy_ioportcon_count(struct qpol_policy *self){ + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_ioportcon_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + } +SWIGINTERN qpol_iterator_t *qpol_policy_pcidevicecon_iter(struct qpol_policy *self){ + qpol_iterator_t *iter; + if (qpol_policy_get_pcidevicecon_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + } +SWIGINTERN size_t qpol_policy_pcidevicecon_count(struct qpol_policy *self){ + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_pcidevicecon_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + } +SWIGINTERN qpol_iterator_t *qpol_policy_pirqcon_iter(struct qpol_policy *self){ + qpol_iterator_t *iter; + if (qpol_policy_get_pirqcon_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + } +SWIGINTERN size_t qpol_policy_pirqcon_count(struct qpol_policy *self){ + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_pirqcon_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + } +SWIGINTERN qpol_iterator_t *qpol_policy_devicetreecon_iter(struct qpol_policy *self){ + qpol_iterator_t *iter; + if (qpol_policy_get_devicetreecon_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + return iter; + fail: + return NULL; + } +SWIGINTERN size_t qpol_policy_devicetreecon_count(struct qpol_policy *self){ + qpol_iterator_t *iter; + size_t count = 0; + if (qpol_policy_get_devicetreecon_iter(self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + qpol_iterator_get_size(iter, &count); + return count; + fail: + return 0; + } +SWIGINTERN struct qpol_iterator *new_qpol_iterator(void){ + SWIG_exception(SWIG_TypeError, "User may not create iterators difectly"); + fail: + return NULL; + } +SWIGINTERN void delete_qpol_iterator(struct qpol_iterator *self){ + qpol_iterator_destroy(&self); + } +SWIGINTERN void *qpol_iterator_item(struct qpol_iterator *self){ + void *i; + if (qpol_iterator_get_item(self, &i)) { + SWIG_exception(SWIG_RuntimeError, "Could not get item"); + } + return i; + fail: + return NULL; + } +SWIGINTERN void qpol_iterator_next_(struct qpol_iterator *self){ + if (qpol_iterator_next(self)) { + SWIG_exception(SWIG_RuntimeError, "Error advancing iterator"); + } + fail: + return; + } +SWIGINTERN int qpol_iterator_isend(struct qpol_iterator *self){ + return qpol_iterator_end(self); + } +SWIGINTERN size_t qpol_iterator_size(struct qpol_iterator *self){ + size_t s; + if (qpol_iterator_get_size(self, &s)) { + SWIG_exception(SWIG_ValueError, "Could not get iterator size"); + } + return s; + fail: + return 0; + } +SWIGINTERN struct qpol_type *new_qpol_type(qpol_policy_t *p,char const *name){ + const qpol_type_t *t; + qpol_policy_get_type_by_name(p, name, &t); + return (qpol_type_t*)t; + } +SWIGINTERN void delete_qpol_type(struct qpol_type *self){ + /* no op */ + return; + } +SWIGINTERN char const *qpol_type_name(struct qpol_type *self,qpol_policy_t *p){ + const char *name; + if (qpol_type_get_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get type name"); + } + return name; + fail: + return NULL; + } +SWIGINTERN int qpol_type_value(struct qpol_type *self,qpol_policy_t *p){ + uint32_t v; + if (qpol_type_get_value(p, self, &v)) { + SWIG_exception(SWIG_ValueError, "Could not get type value"); + } + fail: + return (int) v; + } +SWIGINTERN int qpol_type_isalias(struct qpol_type *self,qpol_policy_t *p){ + unsigned char i; + if (qpol_type_get_isalias(p, self, &i)) { + SWIG_exception(SWIG_ValueError, "Could not determine whether type is an alias"); + } + fail: + return (int)i; + } +SWIGINTERN int qpol_type_isattr(struct qpol_type *self,qpol_policy_t *p){ + unsigned char i; + if (qpol_type_get_isattr(p, self, &i)) { + SWIG_exception(SWIG_ValueError, "Could not determine whether type is an attribute"); + } + fail: + return (int)i; + } +SWIGINTERN int qpol_type_ispermissive(struct qpol_type *self,qpol_policy_t *p){ + unsigned char i; + if (qpol_type_get_ispermissive(p, self, &i)) { + SWIG_exception(SWIG_ValueError, "Could not determine whether type is permissive"); + } + fail: + return (int)i; + } +SWIGINTERN qpol_iterator_t *qpol_type_type_iter(struct qpol_type *self,qpol_policy_t *p){ + qpol_iterator_t *iter; + 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"); + } + fail: + return iter; + } +SWIGINTERN qpol_iterator_t *qpol_type_attr_iter(struct qpol_type *self,qpol_policy_t *p){ + qpol_iterator_t *iter; + 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"); + } + fail: + return iter; + } +SWIGINTERN qpol_iterator_t *qpol_type_alias_iter(struct qpol_type *self,qpol_policy_t *p){ + qpol_iterator_t *iter; + if (qpol_type_get_alias_iter(p, self, &iter)) { + SWIG_exception(SWIG_RuntimeError, "Could not get type aliases"); + } + fail: + return iter; + } + + qpol_type_t *qpol_type_from_void(void *x) { + return (qpol_type_t*)x; + }; + +SWIGINTERN struct qpol_role *new_qpol_role(qpol_policy_t *p,char const *name){ + const qpol_role_t *r; + qpol_policy_get_role_by_name(p, name, &r); + return (qpol_role_t*)r; + } +SWIGINTERN void delete_qpol_role(struct qpol_role *self){ + /* no op */ + return; + } +SWIGINTERN int qpol_role_value(struct qpol_role *self,qpol_policy_t *p){ + uint32_t v; + if (qpol_role_get_value(p, self, &v)) { + SWIG_exception(SWIG_ValueError, "Could not get role value"); + } + fail: + return (int) v; + } +SWIGINTERN char const *qpol_role_name(struct qpol_role *self,qpol_policy_t *p){ + const char *name; + if (qpol_role_get_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get role name"); + } + return name; + fail: + return NULL; + } +SWIGINTERN qpol_iterator_t *qpol_role_type_iter(struct qpol_role *self,qpol_policy_t *p){ + qpol_iterator_t *iter; + if (qpol_role_get_type_iter(p, self, &iter)) { + SWIG_exception(SWIG_RuntimeError, "Could not get role types"); + } + fail: + return iter; + } +SWIGINTERN qpol_iterator_t *qpol_role_dominate_iter(struct qpol_role *self,qpol_policy_t *p){ + qpol_iterator_t *iter; + if (qpol_role_get_dominate_iter(p, self, &iter)) { + SWIG_exception(SWIG_RuntimeError, "Could not get dominated roles"); + } + fail: + return iter; + } + + qpol_role_t *qpol_role_from_void(void *x) { + return (qpol_role_t*)x; + }; + +SWIGINTERN struct qpol_level *new_qpol_level(qpol_policy_t *p,char const *name){ + const qpol_level_t *l; + qpol_policy_get_level_by_name(p, name, &l); + return (qpol_level_t*)l; + } +SWIGINTERN void delete_qpol_level(struct qpol_level *self){ + /* no op */ + return; + } +SWIGINTERN int qpol_level_isalias(struct qpol_level *self,qpol_policy_t *p){ + unsigned char i; + if (qpol_level_get_isalias(p, self, &i)) { + SWIG_exception(SWIG_ValueError, "Could not determine whether level is an alias"); + } + fail: + return (int)i; + } +SWIGINTERN int qpol_level_value(struct qpol_level *self,qpol_policy_t *p){ + uint32_t v; + if (qpol_level_get_value(p, self, &v)) { + SWIG_exception(SWIG_ValueError, "Could not get level sensitivity value"); + } + fail: + return (int) v; + } +SWIGINTERN char const *qpol_level_name(struct qpol_level *self,qpol_policy_t *p){ + const char *name; + if (qpol_level_get_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get level sensitivity name"); + } + return name; + fail: + return NULL; + } +SWIGINTERN qpol_iterator_t *qpol_level_cat_iter(struct qpol_level *self,qpol_policy_t *p){ + qpol_iterator_t *iter; + if (qpol_level_get_cat_iter(p, self, &iter)) { + SWIG_exception(SWIG_RuntimeError, "Could not get level categories"); + } + fail: + return iter; + } +SWIGINTERN qpol_iterator_t *qpol_level_alias_iter(struct qpol_level *self,qpol_policy_t *p){ + qpol_iterator_t *iter; + if (qpol_level_get_alias_iter(p, self, &iter)) { + SWIG_exception(SWIG_RuntimeError, "Could not get level aliases"); + } + fail: + return iter; + } + + qpol_level_t *qpol_level_from_void(void *x) { + return (qpol_level_t*)x; + }; + +SWIGINTERN struct qpol_cat *new_qpol_cat(qpol_policy_t *p,char const *name){ + const qpol_cat_t *c; + qpol_policy_get_cat_by_name(p, name, &c); + return (qpol_cat_t*)c; + } +SWIGINTERN void delete_qpol_cat(struct qpol_cat *self){ + /* no op */ + return; + } +SWIGINTERN int qpol_cat_isalias(struct qpol_cat *self,qpol_policy_t *p){ + unsigned char i; + if (qpol_cat_get_isalias(p, self, &i)) { + SWIG_exception(SWIG_ValueError, "Could not determine whether category is an alias"); + } + fail: + return (int)i; + } +SWIGINTERN int qpol_cat_value(struct qpol_cat *self,qpol_policy_t *p){ + uint32_t v; + if (qpol_cat_get_value(p, self, &v)) { + SWIG_exception(SWIG_ValueError, "Could not get category value"); + } + fail: + return (int) v; + } +SWIGINTERN char const *qpol_cat_name(struct qpol_cat *self,qpol_policy_t *p){ + const char *name; + if (qpol_cat_get_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get category name"); + } + return name; + fail: + return NULL; + } +SWIGINTERN qpol_iterator_t *qpol_cat_alias_iter(struct qpol_cat *self,qpol_policy_t *p){ + qpol_iterator_t *iter; + if (qpol_cat_get_alias_iter(p, self, &iter)) { + SWIG_exception(SWIG_RuntimeError, "Could not get category aliases"); + } + fail: + return iter; + } + + qpol_cat_t *qpol_cat_from_void(void *x) { + return (qpol_cat_t*)x; + }; + +SWIGINTERN struct qpol_mls_range *new_qpol_mls_range(qpol_policy_t *p,qpol_mls_level_t *l,qpol_mls_level_t *h){ + qpol_mls_range_t *range; + qpol_policy_get_mls_range_from_mls_levels(p, l, h, &range); + return range; + } +SWIGINTERN void delete_qpol_mls_range(struct qpol_mls_range *self){ + /* no op */ + return; + } +SWIGINTERN qpol_mls_level_t const *qpol_mls_range_high_level(struct qpol_mls_range *self,qpol_policy_t *p){ + const qpol_mls_level_t *l; + if (qpol_mls_range_get_high_level(p, self, &l)) { + SWIG_exception(SWIG_ValueError, "Could not get range high levl"); + } + fail: + return l; + } +SWIGINTERN qpol_mls_level_t const *qpol_mls_range_low_level(struct qpol_mls_range *self,qpol_policy_t *p){ + const qpol_mls_level_t *l; + if (qpol_mls_range_get_low_level(p, self, &l)) { + SWIG_exception(SWIG_ValueError, "Could not get range low levl"); + } + fail: + return l; + } + + qpol_mls_range_t *qpol_mls_range_from_void(void *x) { + return (qpol_mls_range_t*)x; + }; + +SWIGINTERN struct qpol_semantic_level *new_qpol_semantic_level(qpol_policy_t *p,char const *name){ + const qpol_semantic_level_t *l; + qpol_policy_get_semantic_level_by_name(p, name, &l); + return (qpol_semantic_level_t*)l; + } +SWIGINTERN void delete_qpol_semantic_level(struct qpol_semantic_level *self){ + qpol_semantic_level_destroy(self); + return; + } +SWIGINTERN int qpol_semantic_level_add_cats(struct qpol_semantic_level *self,qpol_policy_t *p,char const *low,char const *high){ + return qpol_semantic_level_add_cats_by_name(p, self, low, high); + } +SWIGINTERN struct qpol_mls_level *new_qpol_mls_level(qpol_policy_t *p,qpol_semantic_level_t *l){ + qpol_mls_level_t *level; + qpol_mls_level_from_semantic_level(p, l, &level); + return level; + } +SWIGINTERN void delete_qpol_mls_level(struct qpol_mls_level *self){ + /* no op */ + return; + } +SWIGINTERN char const *qpol_mls_level_sens_name(struct qpol_mls_level *self,qpol_policy_t *p){ + const char *name; + if (qpol_mls_level_get_sens_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get level sensitivity name"); + } + fail: + return name; + } +SWIGINTERN qpol_iterator_t *qpol_mls_level_cat_iter(struct qpol_mls_level *self,qpol_policy_t *p){ + qpol_iterator_t *iter; + if (qpol_mls_level_get_cat_iter(p, self, &iter)) { + SWIG_exception(SWIG_RuntimeError, "Could not get level categories"); + } + fail: + return iter; + } + + qpol_mls_level_t *qpol_mls_level_from_void(void *x) { + return (qpol_mls_level_t*)x; + }; + +SWIGINTERN struct qpol_user *new_qpol_user(qpol_policy_t *p,char const *name){ + const qpol_user_t *u; + qpol_policy_get_user_by_name(p, name, &u); + return (qpol_user_t*)u; + } +SWIGINTERN void delete_qpol_user(struct qpol_user *self){ + /* no op */ + return; + } +SWIGINTERN int qpol_user_value(struct qpol_user *self,qpol_policy_t *p){ + uint32_t v; + if (qpol_user_get_value(p, self, &v)) { + SWIG_exception(SWIG_ValueError, "Could not get user value"); + } + fail: + return (int) v; + } +SWIGINTERN qpol_iterator_t *qpol_user_role_iter(struct qpol_user *self,qpol_policy_t *p){ + qpol_iterator_t *iter; + if (qpol_user_get_role_iter(p, self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of Memory"); + } + fail: + return iter; + } +SWIGINTERN qpol_mls_range_t const *qpol_user_range(struct qpol_user *self,qpol_policy_t *p){ + const qpol_mls_range_t *r; + if (qpol_user_get_range(p, self, &r)) { + SWIG_exception(SWIG_ValueError, "Could not get user range"); + } + fail: + return r; + } +SWIGINTERN char const *qpol_user_name(struct qpol_user *self,qpol_policy_t *p){ + const char *name; + if (qpol_user_get_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get user name"); + } + fail: + return name; + } +SWIGINTERN qpol_mls_level_t const *qpol_user_dfltlevel(struct qpol_user *self,qpol_policy_t *p){ + const qpol_mls_level_t *l; + if (qpol_user_get_dfltlevel(p, self, &l)) { + SWIG_exception(SWIG_ValueError, "Could not get user default level"); + } + fail: + return l; + } + + qpol_user_t *qpol_user_from_void(void *x) { + return (qpol_user_t*)x; + }; + +SWIGINTERN struct qpol_bool *new_qpol_bool(qpol_policy_t *p,char const *name){ + qpol_bool_t *b; + if (qpol_policy_get_bool_by_name(p, name, &b)) { + SWIG_exception(SWIG_RuntimeError, "Boolean does not exist"); + } + fail: + return b; + } +SWIGINTERN void delete_qpol_bool(struct qpol_bool *self){ + /* no op */ + return; + } +SWIGINTERN int qpol_bool_value(struct qpol_bool *self,qpol_policy_t *p){ + uint32_t v; + if (qpol_bool_get_value(p, self, &v)) { + SWIG_exception(SWIG_ValueError, "Could not get boolean value"); + } + fail: + return (int) v; + } +SWIGINTERN int qpol_bool_state(struct qpol_bool *self,qpol_policy_t *p){ + int s; + if (qpol_bool_get_state(p, self, &s)) { + SWIG_exception(SWIG_ValueError, "Could not get boolean state"); + } + fail: + return s; + } +SWIGINTERN char const *qpol_bool_name(struct qpol_bool *self,qpol_policy_t *p){ + const char *name; + if (qpol_bool_get_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get boolean name"); + } + fail: + return name; + } + + qpol_bool_t *qpol_bool_from_void(void *x) { + return (qpol_bool_t*)x; + }; + +SWIGINTERN struct qpol_context *new_qpol_context(void){ + SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_context_t objects"); + fail: + return NULL; + } +SWIGINTERN void delete_qpol_context(struct qpol_context *self){ + /* no op */ + return; + } +SWIGINTERN qpol_user_t const *qpol_context_user(struct qpol_context *self,qpol_policy_t *p){ + const qpol_user_t *u; + if (qpol_context_get_user(p, self, &u)) { + SWIG_exception(SWIG_ValueError, "Could not get user from context"); + } + fail: + return u; + } +SWIGINTERN qpol_role_t const *qpol_context_role(struct qpol_context *self,qpol_policy_t *p){ + const qpol_role_t *r; + if (qpol_context_get_role(p, self, &r)) { + SWIG_exception(SWIG_ValueError, "Could not get role from context"); + } + fail: + return r; + } +SWIGINTERN qpol_type_t const *qpol_context_type_(struct qpol_context *self,qpol_policy_t *p){ + const qpol_type_t *t; + if (qpol_context_get_type(p, self, &t)) { + SWIG_exception(SWIG_ValueError, "Could not get type from context"); + } + fail: + return t; + } +SWIGINTERN qpol_mls_range_t const *qpol_context_range(struct qpol_context *self,qpol_policy_t *p){ + const qpol_mls_range_t *r; + if (qpol_context_get_range(p, self, &r)) { + SWIG_exception(SWIG_ValueError, "Could not get range from context"); + } + fail: + return r; + } + + qpol_context_t *qpol_context_from_void(void *x) { + return (qpol_context_t*)x; + }; + +SWIGINTERN struct qpol_class *new_qpol_class(qpol_policy_t *p,char const *name){ + const qpol_class_t *c; + qpol_policy_get_class_by_name(p, name, &c); + return (qpol_class_t*)c; + } +SWIGINTERN void delete_qpol_class(struct qpol_class *self){ + /* no op */ + return; + } +SWIGINTERN int qpol_class_value(struct qpol_class *self,qpol_policy_t *p){ + uint32_t v; + if (qpol_class_get_value(p, self, &v)) { + SWIG_exception(SWIG_ValueError, "Could not get value for class"); + } + fail: + return (int) v; + } +SWIGINTERN qpol_common_t const *qpol_class_common(struct qpol_class *self,qpol_policy_t *p){ + const qpol_common_t *c; + if(qpol_class_get_common(p, self, &c)) { + SWIG_exception(SWIG_ValueError, "Could not get common for class"); + } + fail: + return c; + } +SWIGINTERN qpol_iterator_t *qpol_class_perm_iter(struct qpol_class *self,qpol_policy_t *p){ + qpol_iterator_t *iter; + if(qpol_class_get_perm_iter(p, self, &iter)) { + SWIG_exception(SWIG_RuntimeError, "Could not get class permissions"); + } + fail: + return iter; + } +SWIGINTERN qpol_iterator_t *qpol_class_constraint_iter(struct qpol_class *self,qpol_policy_t *p){ + qpol_iterator_t *iter; + if(qpol_class_get_constraint_iter(p, self, &iter)) { + SWIG_exception(SWIG_RuntimeError, "Could not get class constraints"); + } + fail: + return iter; + } +SWIGINTERN qpol_iterator_t *qpol_class_validatetrans_iter(struct qpol_class *self,qpol_policy_t *p){ + qpol_iterator_t *iter; + if(qpol_class_get_validatetrans_iter(p, self, &iter)) { + SWIG_exception(SWIG_RuntimeError, "Could not get class validatetrans statements"); + } + fail: + return iter; + } +SWIGINTERN char const *qpol_class_name(struct qpol_class *self,qpol_policy_t *p){ + const char *name; + if (qpol_class_get_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get class name"); + } + fail: + return name; + } + + qpol_class_t *qpol_class_from_void(void *x) { + return (qpol_class_t*)x; + }; + +SWIGINTERN struct qpol_common *new_qpol_common(qpol_policy_t *p,char const *name){ + const qpol_common_t *c; + qpol_policy_get_common_by_name(p, name, &c); + return (qpol_common_t*)c; + } +SWIGINTERN void delete_qpol_common(struct qpol_common *self){ + /* no op */ + return; + } +SWIGINTERN int qpol_common_value(struct qpol_common *self,qpol_policy_t *p){ + uint32_t v; + if (qpol_common_get_value(p, self, &v)) { + SWIG_exception(SWIG_ValueError, "Could not get value for common"); + } + fail: + return (int) v; + } +SWIGINTERN qpol_iterator_t *qpol_common_perm_iter(struct qpol_common *self,qpol_policy_t *p){ + qpol_iterator_t *iter; + if(qpol_common_get_perm_iter(p, self, &iter)) { + SWIG_exception(SWIG_RuntimeError, "Could not get common permissions"); + } + fail: + return iter; + } +SWIGINTERN char const *qpol_common_name(struct qpol_common *self,qpol_policy_t *p){ + const char *name; + if (qpol_common_get_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get common name"); + } + fail: + return name; + } + + qpol_common_t *qpol_common_from_void(void *x) { + return (qpol_common_t*)x; + }; + + +SWIGINTERNINLINE PyObject* + SWIG_From_unsigned_SS_int (unsigned int value) +{ + return PyInt_FromSize_t((size_t) value); +} + +SWIGINTERN struct qpol_fs_use *new_qpol_fs_use(qpol_policy_t *p,char const *name){ + const qpol_fs_use_t *f; + if (qpol_policy_get_fs_use_by_name(p, name, &f)) { + SWIG_exception(SWIG_RuntimeError, "FS Use Statement does not exist"); + } + fail: + return (qpol_fs_use_t*)f; + } +SWIGINTERN void delete_qpol_fs_use(struct qpol_fs_use *self){ + /* no op */ + return; + } +SWIGINTERN char const *qpol_fs_use_name(struct qpol_fs_use *self,qpol_policy_t *p){ + const char *name; + if (qpol_fs_use_get_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get file system name"); + } + fail: + return name; + } +SWIGINTERN int qpol_fs_use_behavior(struct qpol_fs_use *self,qpol_policy_t *p){ + uint32_t behav; + if (qpol_fs_use_get_behavior(p, self, &behav)) { + SWIG_exception(SWIG_ValueError, "Could not get file system labeling behavior"); + } + fail: + return (int) behav; + } +SWIGINTERN qpol_context_t const *qpol_fs_use_context(struct qpol_fs_use *self,qpol_policy_t *p){ + uint32_t behav; + const qpol_context_t *ctx = NULL; + qpol_fs_use_get_behavior(p, self, &behav); + if (behav == 6U) { + 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"); + } + fail: + return ctx; + } + + qpol_fs_use_t *qpol_fs_use_from_void(void *x) { + return (qpol_fs_use_t*)x; + }; + +SWIGINTERN struct qpol_genfscon *new_qpol_genfscon(qpol_policy_t *p,char const *name,char const *path){ + qpol_genfscon_t *g; + if (qpol_policy_get_genfscon_by_name(p, name, path, &g)) { + SWIG_exception(SWIG_RuntimeError, "Genfscon statement does not exist"); + } + fail: + return g; + } +SWIGINTERN void delete_qpol_genfscon(struct qpol_genfscon *self){ + free(self); + } +SWIGINTERN char const *qpol_genfscon_name(struct qpol_genfscon *self,qpol_policy_t *p){ + const char *name; + if (qpol_genfscon_get_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get file system name"); + } + fail: + return name; + } +SWIGINTERN char const *qpol_genfscon_path(struct qpol_genfscon *self,qpol_policy_t *p){ + const char *path; + if (qpol_genfscon_get_path(p, self, &path)) { + SWIG_exception(SWIG_ValueError, "Could not get file system path"); + } + fail: + return path; + } +SWIGINTERN unsigned int qpol_genfscon_object_class(struct qpol_genfscon *self,qpol_policy_t *p){ + uint32_t cls; + if (qpol_genfscon_get_class(p, self, &cls)) { + SWIG_exception(SWIG_ValueError, "Could not get genfscon statement class"); + } + switch (cls) { + case 11U: return S_IFBLK; + case 10U: return S_IFCHR; + case 7U: return S_IFDIR; + case 13U: return S_IFIFO; + case 6U: return S_IFREG; + case 9U: return S_IFLNK; + case 12U: return S_IFSOCK; + default: return 0; /* all file types */ + } + fail: + return 0; + } +SWIGINTERN qpol_context_t const *qpol_genfscon_context(struct qpol_genfscon *self,qpol_policy_t *p){ + const qpol_context_t *ctx; + if (qpol_genfscon_get_context(p, self, &ctx)) { + SWIG_exception(SWIG_ValueError, "Could not get context for genfscon statement"); + } + fail: + return ctx; + } + + qpol_genfscon_t *qpol_genfscon_from_void(void *x) { + return (qpol_genfscon_t*)x; + }; + +SWIGINTERN struct qpol_isid *new_qpol_isid(qpol_policy_t *p,char const *name){ + const qpol_isid_t *i; + qpol_policy_get_isid_by_name(p, name, &i); + return (qpol_isid_t*)i; + } +SWIGINTERN void delete_qpol_isid(struct qpol_isid *self){ + /* no op */ + return; + } +SWIGINTERN char const *qpol_isid_name(struct qpol_isid *self,qpol_policy_t *p){ + const char *name; + if (qpol_isid_get_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get name for initial sid"); + } + fail: + return name; + } +SWIGINTERN qpol_context_t const *qpol_isid_context(struct qpol_isid *self,qpol_policy_t *p){ + const qpol_context_t *ctx; + if (qpol_isid_get_context(p, self, &ctx)) { + SWIG_exception(SWIG_ValueError, "Could not get context for initial sid"); + } + fail: + return ctx; + } + + qpol_isid_t *qpol_isid_from_void(void *x) { + return (qpol_isid_t*)x; + }; + +SWIGINTERN struct qpol_netifcon *new_qpol_netifcon(qpol_policy_t *p,char const *name){ + const qpol_netifcon_t *n; + if (qpol_policy_get_netifcon_by_name(p, name, &n)) { + SWIG_exception(SWIG_RuntimeError, "Netifcon statement does not exist"); + } + fail: + return (qpol_netifcon_t*)n; + } +SWIGINTERN void delete_qpol_netifcon(struct qpol_netifcon *self){ + /* no op */ + return; + } +SWIGINTERN char const *qpol_netifcon_name(struct qpol_netifcon *self,qpol_policy_t *p){ + const char *name; + if (qpol_netifcon_get_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get name for netifcon statement"); + } + fail: + return name; + } +SWIGINTERN qpol_context_t const *qpol_netifcon_msg_con(struct qpol_netifcon *self,qpol_policy_t *p){ + const qpol_context_t *ctx; + if (qpol_netifcon_get_msg_con(p, self, &ctx)) { + SWIG_exception(SWIG_ValueError, "Could not get message context for netifcon statement"); + } + fail: + return ctx; + } +SWIGINTERN qpol_context_t const *qpol_netifcon_if_con(struct qpol_netifcon *self,qpol_policy_t *p){ + const qpol_context_t *ctx; + if (qpol_netifcon_get_if_con(p, self, &ctx)) { + SWIG_exception(SWIG_ValueError, "Could not get interface context for netifcon statement"); + } + fail: + return ctx; + } + + qpol_netifcon_t *qpol_netifcon_from_void(void *x) { + return (qpol_netifcon_t*)x; + }; + +SWIGINTERN struct qpol_nodecon *new_qpol_nodecon(qpol_policy_t *p,int addr[4],int mask[4],int protocol){ + uint32_t a[4], m[4]; + qpol_nodecon_t *n; + 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"); + } + fail: + return n; + } +SWIGINTERN void delete_qpol_nodecon(struct qpol_nodecon *self){ + free(self); + } +SWIGINTERN char *qpol_nodecon_addr(struct qpol_nodecon *self,qpol_policy_t *p){ + uint32_t *a; + unsigned char proto; + char *addr = NULL; + + addr = malloc(INET6_ADDRSTRLEN * sizeof(char)); + if(!addr) + SWIG_exception(SWIG_MemoryError, "Out of memory"); + + if (qpol_nodecon_get_addr(p, self, &a, &proto)) { + SWIG_exception(SWIG_ValueError, "Could not get address of nodecon statement"); + } + + if(proto == 0) { + inet_ntop(AF_INET, a, addr, INET6_ADDRSTRLEN); + } else { + inet_ntop(AF_INET6, a, addr, INET6_ADDRSTRLEN); + } + + fail: + return addr; + } +SWIGINTERN char *qpol_nodecon_mask(struct qpol_nodecon *self,qpol_policy_t *p){ + uint32_t *m; + unsigned char proto; + char *mask; + mask = malloc(INET6_ADDRSTRLEN * sizeof(char)); + if (!mask) + SWIG_exception(SWIG_MemoryError, "Out of memory"); + + if (qpol_nodecon_get_mask(p, self, &m, &proto)) { + SWIG_exception(SWIG_ValueError, "Could not get mask of nodecon statement"); + } + + if(proto == 0) { + inet_ntop(AF_INET, m, mask, INET6_ADDRSTRLEN); + } else { + inet_ntop(AF_INET6, m, mask, INET6_ADDRSTRLEN); + } + fail: + return mask; + } +SWIGINTERN int qpol_nodecon_protocol(struct qpol_nodecon *self,qpol_policy_t *p){ + unsigned char proto; + if (qpol_nodecon_get_protocol(p, self, &proto)) { + SWIG_exception(SWIG_ValueError, "Could not get protocol for nodecon statement"); + } + fail: + if(proto == 0) { + return AF_INET; + } else { + return AF_INET6; + } + } +SWIGINTERN qpol_context_t const *qpol_nodecon_context(struct qpol_nodecon *self,qpol_policy_t *p){ + const qpol_context_t *ctx; + if (qpol_nodecon_get_context(p, self, &ctx)) { + SWIG_exception(SWIG_ValueError, "Could not get context for nodecon statement"); + } + fail: + return ctx; + } + + qpol_nodecon_t *qpol_nodecon_from_void(void *x) { + return (qpol_nodecon_t*)x; + }; + + +SWIGINTERN int +SWIG_AsVal_unsigned_SS_long (PyObject *obj, unsigned long *val) +{ +#if PY_VERSION_HEX < 0x03000000 + if (PyInt_Check(obj)) { + long v = PyInt_AsLong(obj); + if (v >= 0) { + if (val) *val = v; + return SWIG_OK; + } else { + return SWIG_OverflowError; + } + } else +#endif + if (PyLong_Check(obj)) { + unsigned long v = PyLong_AsUnsignedLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_OK; + } else { + PyErr_Clear(); +#if PY_VERSION_HEX >= 0x03000000 + { + long v = PyLong_AsLong(obj); + if (!PyErr_Occurred()) { + if (v < 0) { + return SWIG_OverflowError; + } + } else { + PyErr_Clear(); + } + } +#endif + } + } +#ifdef SWIG_PYTHON_CAST_MODE + { + int dispatch = 0; + unsigned long v = PyLong_AsUnsignedLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_AddCast(SWIG_OK); + } else { + PyErr_Clear(); + } + if (!dispatch) { + double d; + int res = SWIG_AddCast(SWIG_AsVal_double (obj,&d)); + if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, 0, ULONG_MAX)) { + if (val) *val = (unsigned long)(d); + return res; + } + } + } +#endif + return SWIG_TypeError; +} + + +SWIGINTERN int +SWIG_AsVal_unsigned_SS_short (PyObject * obj, unsigned short *val) +{ + unsigned long v; + int res = SWIG_AsVal_unsigned_SS_long (obj, &v); + if (SWIG_IsOK(res)) { + if ((v > USHRT_MAX)) { + return SWIG_OverflowError; + } else { + if (val) *val = (unsigned short)(v); + } + } + return res; +} + + +SWIGINTERN int +SWIG_AsVal_unsigned_SS_char (PyObject * obj, unsigned char *val) +{ + unsigned long v; + int res = SWIG_AsVal_unsigned_SS_long (obj, &v); + if (SWIG_IsOK(res)) { + if ((v > UCHAR_MAX)) { + return SWIG_OverflowError; + } else { + if (val) *val = (unsigned char)(v); + } + } + return res; +} + +SWIGINTERN struct qpol_portcon *new_qpol_portcon(qpol_policy_t *p,uint16_t low,uint16_t high,uint8_t protocol){ + const qpol_portcon_t *qp; + if (qpol_policy_get_portcon_by_port(p, low, high, protocol, &qp)) { + SWIG_exception(SWIG_RuntimeError, "Portcon statement does not exist"); + } + fail: + return (qpol_portcon_t*)qp; + } +SWIGINTERN void delete_qpol_portcon(struct qpol_portcon *self){ + /* no op */ + return; + } +SWIGINTERN uint16_t qpol_portcon_low_port(struct qpol_portcon *self,qpol_policy_t *p){ + uint16_t port = 0; + if(qpol_portcon_get_low_port(p, self, &port)) { + SWIG_exception(SWIG_RuntimeError, "Could not get low port for portcon statement"); + } + fail: + return port; + } + +SWIGINTERNINLINE PyObject * +SWIG_From_unsigned_SS_short (unsigned short value) +{ + return SWIG_From_unsigned_SS_long (value); +} + +SWIGINTERN uint16_t qpol_portcon_high_port(struct qpol_portcon *self,qpol_policy_t *p){ + uint16_t port = 0; + if(qpol_portcon_get_high_port(p, self, &port)) { + SWIG_exception(SWIG_RuntimeError, "Could not get high port for portcon statement"); + } + fail: + return port; + } +SWIGINTERN uint8_t qpol_portcon_protocol(struct qpol_portcon *self,qpol_policy_t *p){ + uint8_t proto = 0; + if (qpol_portcon_get_protocol(p, self, &proto)) { + SWIG_exception(SWIG_RuntimeError, "Could not get protocol for portcon statement"); + } + fail: + return proto; + } + +SWIGINTERNINLINE PyObject * +SWIG_From_unsigned_SS_char (unsigned char value) +{ + return SWIG_From_unsigned_SS_long (value); +} + +SWIGINTERN qpol_context_t const *qpol_portcon_context(struct qpol_portcon *self,qpol_policy_t *p){ + const qpol_context_t *ctx; + if (qpol_portcon_get_context(p, self, &ctx)) { + SWIG_exception(SWIG_ValueError, "Could not get context for portcon statement"); + } + fail: + return ctx; + } + + qpol_portcon_t *qpol_portcon_from_void(void *x) { + return (qpol_portcon_t*)x; + }; + +SWIGINTERN struct qpol_constraint *new_qpol_constraint(void){ + SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_constraint_t objects"); + fail: + return NULL; + } +SWIGINTERN void delete_qpol_constraint(struct qpol_constraint *self){ + free(self); + } +SWIGINTERN qpol_class_t const *qpol_constraint_object_class(struct qpol_constraint *self,qpol_policy_t *p){ + const qpol_class_t *cls; + if (qpol_constraint_get_class(p, self, &cls)) { + SWIG_exception(SWIG_ValueError, "Could not get class for constraint"); + } + fail: + return cls; + } +SWIGINTERN qpol_iterator_t *qpol_constraint_perm_iter(struct qpol_constraint *self,qpol_policy_t *p){ + qpol_iterator_t *iter; + if (qpol_constraint_get_perm_iter(p, self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of memory"); + } + fail: + return iter; + } +SWIGINTERN qpol_iterator_t *qpol_constraint_expr_iter(struct qpol_constraint *self,qpol_policy_t *p){ + qpol_iterator_t *iter; + if (qpol_constraint_get_expr_iter(p, self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of memory"); + } + fail: + return iter; + } + + qpol_constraint_t *qpol_constraint_from_void(void *x) { + return (qpol_constraint_t*)x; + }; + +SWIGINTERN struct qpol_validatetrans *new_qpol_validatetrans(void){ + SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_validatetrans_t objects"); + fail: + return NULL; + } +SWIGINTERN void delete_qpol_validatetrans(struct qpol_validatetrans *self){ + free(self); + } +SWIGINTERN qpol_class_t const *qpol_validatetrans_object_class(struct qpol_validatetrans *self,qpol_policy_t *p){ + const qpol_class_t *cls; + if (qpol_validatetrans_get_class(p, self, &cls)) { + SWIG_exception(SWIG_ValueError, "Could not get class for validatetrans"); + } + fail: + return cls; + } +SWIGINTERN qpol_iterator_t *qpol_validatetrans_expr_iter(struct qpol_validatetrans *self,qpol_policy_t *p){ + qpol_iterator_t *iter; + if (qpol_validatetrans_get_expr_iter(p, self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of memory"); + } + fail: + return iter; + } + + qpol_validatetrans_t *qpol_validatetrans_from_void(void *x) { + return (qpol_validatetrans_t*)x; + }; + +SWIGINTERN struct qpol_constraint_expr_node *new_qpol_constraint_expr_node(void){ + SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_constraint_expr_node_t objects"); + fail: + return NULL; + } +SWIGINTERN void delete_qpol_constraint_expr_node(struct qpol_constraint_expr_node *self){ + /* no op */ + return; + } +SWIGINTERN int qpol_constraint_expr_node_expr_type(struct qpol_constraint_expr_node *self,qpol_policy_t *p){ + uint32_t et; + if (qpol_constraint_expr_node_get_expr_type(p, self, &et)) { + SWIG_exception(SWIG_ValueError, "Could not get expression type for node"); + } + fail: + return (int) et; + } +SWIGINTERN int qpol_constraint_expr_node_sym_type(struct qpol_constraint_expr_node *self,qpol_policy_t *p){ + uint32_t st; + if (qpol_constraint_expr_node_get_sym_type(p, self, &st)) { + SWIG_exception(SWIG_ValueError, "Could not get symbol type for node"); + } + fail: + return (int) st; + } +SWIGINTERN int qpol_constraint_expr_node_op(struct qpol_constraint_expr_node *self,qpol_policy_t *p){ + uint32_t op; + if (qpol_constraint_expr_node_get_op(p, self, &op)) { + SWIG_exception(SWIG_ValueError, "Could not get operator for node"); + } + fail: + return (int) op; + } +SWIGINTERN qpol_iterator_t *qpol_constraint_expr_node_names_iter(struct qpol_constraint_expr_node *self,qpol_policy_t *p){ + qpol_iterator_t *iter; + if (qpol_constraint_expr_node_get_names_iter(p, self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of memory"); + } + fail: + return iter; + } + + qpol_constraint_expr_node_t *qpol_constraint_expr_node_from_void(void *x) { + return (qpol_constraint_expr_node_t*)x; + }; + +SWIGINTERN struct qpol_role_allow *new_qpol_role_allow(void){ + SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_role_allow_t objects"); + fail: + return NULL; + } +SWIGINTERN void delete_qpol_role_allow(struct qpol_role_allow *self){ + /* no op */ + return; + } +SWIGINTERN qpol_role_t const *qpol_role_allow_source_role(struct qpol_role_allow *self,qpol_policy_t *p){ + const qpol_role_t *r; + if (qpol_role_allow_get_source_role(p, self, &r)) { + SWIG_exception(SWIG_ValueError, "Could not get source for role allow rule"); + } + fail: + return r; + } +SWIGINTERN qpol_role_t const *qpol_role_allow_target_role(struct qpol_role_allow *self,qpol_policy_t *p){ + const qpol_role_t *r; + if (qpol_role_allow_get_target_role(p, self, &r)) { + SWIG_exception(SWIG_ValueError, "Could not get target for role allow rule"); + } + fail: + return r; + } + + qpol_role_allow_t *qpol_role_allow_from_void(void *x) { + return (qpol_role_allow_t*)x; + }; + +SWIGINTERN struct qpol_role_trans *new_qpol_role_trans(void){ + SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_role_trans_t objects"); + fail: + return NULL; + } +SWIGINTERN void delete_qpol_role_trans(struct qpol_role_trans *self){ + /* no op */ + return; + } +SWIGINTERN qpol_role_t const *qpol_role_trans_source_role(struct qpol_role_trans *self,qpol_policy_t *p){ + const qpol_role_t *r; + if (qpol_role_trans_get_source_role(p, self, &r)) { + SWIG_exception(SWIG_ValueError, "Could not get source for role_transition rule"); + } + fail: + return r; + } +SWIGINTERN qpol_type_t const *qpol_role_trans_target_type(struct qpol_role_trans *self,qpol_policy_t *p){ + const qpol_type_t *t; + if (qpol_role_trans_get_target_type(p, self, &t)) { + SWIG_exception(SWIG_ValueError, "Could not get target for role_transition rule"); + } + fail: + return t; + } +SWIGINTERN qpol_class_t const *qpol_role_trans_object_class(struct qpol_role_trans *self,qpol_policy_t *p){ + const qpol_class_t *c; + if (qpol_role_trans_get_object_class(p, self, &c)) { + SWIG_exception(SWIG_ValueError, "Could not get class for role_transition rule"); + } + fail: + return c; + } +SWIGINTERN qpol_role_t const *qpol_role_trans_default_role(struct qpol_role_trans *self,qpol_policy_t *p){ + const qpol_role_t *r; + if (qpol_role_trans_get_default_role(p, self, &r)) { + SWIG_exception(SWIG_ValueError, "Could not get default for role_transition rule"); + } + fail: + return r; + } + + qpol_role_trans_t *qpol_role_trans_from_void(void *x) { + return (qpol_role_trans_t*)x; + }; + +SWIGINTERN struct qpol_range_trans *new_qpol_range_trans(void){ + SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_range_trans_t objects"); + fail: + return NULL; + } +SWIGINTERN void delete_qpol_range_trans(struct qpol_range_trans *self){ + /* no op */ + return; + } +SWIGINTERN qpol_type_t const *qpol_range_trans_source_type(struct qpol_range_trans *self,qpol_policy_t *p){ + const qpol_type_t *t; + if (qpol_range_trans_get_source_type(p, self, &t)) { + SWIG_exception(SWIG_ValueError, "Could not get source for range_transition rule"); + } + fail: + return t; + } +SWIGINTERN qpol_type_t const *qpol_range_trans_target_type(struct qpol_range_trans *self,qpol_policy_t *p){ + const qpol_type_t *t; + if (qpol_range_trans_get_target_type(p, self, &t)) { + SWIG_exception(SWIG_ValueError, "Could not get target for range_transition rule"); } + fail: + return t; + } +SWIGINTERN qpol_class_t const *qpol_range_trans_object_class(struct qpol_range_trans *self,qpol_policy_t *p){ + const qpol_class_t *cls; + if (qpol_range_trans_get_target_class(p, self, &cls)) { + SWIG_exception(SWIG_ValueError, "Could not get class for range_transition rule"); } + fail: + return cls; + } +SWIGINTERN qpol_mls_range_t const *qpol_range_trans_range(struct qpol_range_trans *self,qpol_policy_t *p){ + const qpol_mls_range_t *r; + if (qpol_range_trans_get_range(p, self, &r)) { + SWIG_exception(SWIG_ValueError, "Could not get range for range_transition rule"); + } + fail: + return r; + } + + qpol_range_trans_t *qpol_range_trans_from_void(void *x) { + return (qpol_range_trans_t*)x; + }; + +SWIGINTERN struct qpol_avrule *new_qpol_avrule(void){ + SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_avrule_t objects"); + fail: + return NULL; + } +SWIGINTERN void delete_qpol_avrule(struct qpol_avrule *self){ + /* no op */ + return; + } +SWIGINTERN char const *qpol_avrule_rule_type(struct qpol_avrule *self,qpol_policy_t *p){ + uint32_t rt; + if (qpol_avrule_get_rule_type(p, self, &rt)) { + SWIG_exception(SWIG_ValueError, "Could not get rule type for av rule"); + } + switch (rt) { + case 0x0001: return "allow"; break; + case 0x0080: return "neverallow"; break; + case 0x0002: return "auditallow"; break; + case 0x0004: return "dontaudit"; break; + case 0x0100: return "allowxperm"; break; + case 0x0800: return "neverallowxperm"; break; + case 0x0200: return "auditallowxperm"; break; + case 0x0400: return "dontauditxperm"; break; + } + fail: + return NULL; + } +SWIGINTERN qpol_type_t const *qpol_avrule_source_type(struct qpol_avrule *self,qpol_policy_t *p){ + const qpol_type_t *t; + if (qpol_avrule_get_source_type(p, self, &t)) { + SWIG_exception(SWIG_ValueError, "Could not get source for av rule"); + } + fail: + return t; + } +SWIGINTERN qpol_type_t const *qpol_avrule_target_type(struct qpol_avrule *self,qpol_policy_t *p){ + const qpol_type_t *t; + if (qpol_avrule_get_target_type(p, self, &t)) { + SWIG_exception(SWIG_ValueError, "Could not get target for av rule"); + } + fail: + return t; + } +SWIGINTERN qpol_class_t const *qpol_avrule_object_class(struct qpol_avrule *self,qpol_policy_t *p){ + const qpol_class_t *cls; + if (qpol_avrule_get_object_class(p, self, &cls)) { + SWIG_exception(SWIG_ValueError, "Could not get class for av rule"); + } + fail: + return cls; + } +SWIGINTERN qpol_iterator_t *qpol_avrule_perm_iter(struct qpol_avrule *self,qpol_policy_t *p){ + qpol_iterator_t *iter; + if (qpol_avrule_get_perm_iter(p, self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of memory"); + } + fail: + return iter; + } +SWIGINTERN qpol_iterator_t *qpol_avrule_xperm_iter(struct qpol_avrule *self,qpol_policy_t *p){ + qpol_iterator_t *iter; + if (qpol_avrule_get_xperm_iter(p, self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of memory"); + } + fail: + return iter; + } +SWIGINTERN int qpol_avrule_is_extended(struct qpol_avrule *self,qpol_policy_t *p){ + uint32_t e; + if (qpol_avrule_get_is_extended(p, self, &e)) { + SWIG_exception(SWIG_ValueError, "Could not determine if av rule is extended"); + } + fail: + return (int) e; + } +SWIGINTERN char const *qpol_avrule_xperm_type(struct qpol_avrule *self,qpol_policy_t *p){ + char *xt; + if (qpol_avrule_get_xperm_type(p, self, &xt)) { + SWIG_exception(SWIG_ValueError, "Could not get xperm type for av rule"); + } + fail: + return xt; + } +SWIGINTERN qpol_cond_t const *qpol_avrule_cond(struct qpol_avrule *self,qpol_policy_t *p){ + const qpol_cond_t *c; + qpol_avrule_get_cond(p, self, &c); + return c; + } +SWIGINTERN int qpol_avrule_is_enabled(struct qpol_avrule *self,qpol_policy_t *p){ + uint32_t e; + if (qpol_avrule_get_is_enabled(p, self, &e)) { + SWIG_exception(SWIG_ValueError, "Could not determine if av rule is enabled"); + } + fail: + return (int) e; + } +SWIGINTERN int qpol_avrule_which_list(struct qpol_avrule *self,qpol_policy_t *p){ + const qpol_cond_t *c; + uint32_t which = 0; + qpol_avrule_get_cond(p, self, &c); + if (c == NULL) { + return -1; + } else if (qpol_avrule_get_which_list(p, self, &which)) { + return -1; + } + return (int) which; + } +SWIGINTERN qpol_iterator_t *qpol_avrule_syn_avrule_iter(struct qpol_avrule *self,qpol_policy_t *p){ + qpol_iterator_t *iter; + if (qpol_avrule_get_syn_avrule_iter(p, self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of memory"); + } + fail: + return iter; + } + + qpol_avrule_t *qpol_avrule_from_void(void *x) { + return (qpol_avrule_t*)x; + }; + +SWIGINTERN struct qpol_terule *new_qpol_terule(void){ + SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_terule_t objects"); + fail: + return NULL; + } +SWIGINTERN void delete_qpol_terule(struct qpol_terule *self){ + /* no op */ + return; + } +SWIGINTERN char const *qpol_terule_rule_type(struct qpol_terule *self,qpol_policy_t *p){ + uint32_t rt; + if (qpol_terule_get_rule_type(p, self, &rt)) { + SWIG_exception(SWIG_ValueError, "Could not get rule type for te rule"); + } + switch (rt) { + case 16: return "type_transition"; break; + case 64: return "type_change"; break; + case 32: return "type_member"; break; + } + fail: + return NULL; + } +SWIGINTERN qpol_type_t const *qpol_terule_source_type(struct qpol_terule *self,qpol_policy_t *p){ + const qpol_type_t *t; + if (qpol_terule_get_source_type(p, self, &t)) { + SWIG_exception(SWIG_ValueError, "Could not get source for te rule"); + } + fail: + return t; + } +SWIGINTERN qpol_type_t const *qpol_terule_target_type(struct qpol_terule *self,qpol_policy_t *p){ + const qpol_type_t *t; + if (qpol_terule_get_target_type(p, self, &t)) { + SWIG_exception(SWIG_ValueError, "Could not get target for te rule"); + } + fail: + return t; + } +SWIGINTERN qpol_class_t const *qpol_terule_object_class(struct qpol_terule *self,qpol_policy_t *p){ + const qpol_class_t *cls; + if (qpol_terule_get_object_class(p, self, &cls)) { + SWIG_exception(SWIG_ValueError, "Could not get class for te rule"); + } + fail: + return cls; + } +SWIGINTERN qpol_type_t const *qpol_terule_default_type(struct qpol_terule *self,qpol_policy_t *p){ + const qpol_type_t *t; + if (qpol_terule_get_default_type(p, self, &t)) { + SWIG_exception(SWIG_ValueError, "Could not get default for te rule"); + } + fail: + return t; + } +SWIGINTERN qpol_cond_t const *qpol_terule_cond(struct qpol_terule *self,qpol_policy_t *p){ + const qpol_cond_t *c; + qpol_terule_get_cond(p, self, &c); + return c; + } +SWIGINTERN int qpol_terule_is_enabled(struct qpol_terule *self,qpol_policy_t *p){ + uint32_t e; + if (qpol_terule_get_is_enabled(p, self, &e)) { + SWIG_exception(SWIG_ValueError, "Could not determine if te rule is enabled"); + } + fail: + return (int) e; + } +SWIGINTERN int qpol_terule_which_list(struct qpol_terule *self,qpol_policy_t *p){ + const qpol_cond_t *c; + uint32_t which = 0; + qpol_terule_get_cond(p, self, &c); + if (c == NULL) { + return -1; + } else if (qpol_terule_get_which_list(p, self, &which)) { + return -1; + } + return (int) which; + } +SWIGINTERN qpol_iterator_t *qpol_terule_syn_terule_iter(struct qpol_terule *self,qpol_policy_t *p){ + qpol_iterator_t *iter; + if (qpol_terule_get_syn_terule_iter(p, self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of memory"); + } + fail: + return iter; + } + + qpol_terule_t *qpol_terule_from_void(void *x) { + return (qpol_terule_t*)x; + }; + +SWIGINTERN struct qpol_cond *new_qpol_cond(void){ + SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_cond_t objects"); + fail: + return NULL; + } +SWIGINTERN void delete_qpol_cond(struct qpol_cond *self){ + /* no op */ + return; + } +SWIGINTERN qpol_iterator_t *qpol_cond_expr_node_iter(struct qpol_cond *self,qpol_policy_t *p){ + qpol_iterator_t *iter; + if (qpol_cond_get_expr_node_iter(p, self, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of memory"); + } + fail: + return iter; + } +SWIGINTERN qpol_iterator_t *qpol_cond_av_true_iter(struct qpol_cond *self,qpol_policy_t *p,int rule_types){ + qpol_iterator_t *iter; + if (qpol_cond_get_av_true_iter(p, self, rule_types, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of memory"); + } + fail: + return iter; + } +SWIGINTERN qpol_iterator_t *qpol_cond_av_false_iter(struct qpol_cond *self,qpol_policy_t *p,int rule_types){ + qpol_iterator_t *iter; + if (qpol_cond_get_av_false_iter(p, self, rule_types, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of memory"); + } + fail: + return iter; + } +SWIGINTERN qpol_iterator_t *qpol_cond_te_true_iter(struct qpol_cond *self,qpol_policy_t *p,int rule_types){ + qpol_iterator_t *iter; + if (qpol_cond_get_te_true_iter(p, self, rule_types, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of memory"); + } + fail: + return iter; + } +SWIGINTERN qpol_iterator_t *qpol_cond_te_false_iter(struct qpol_cond *self,qpol_policy_t *p,int rule_types){ + qpol_iterator_t *iter; + if (qpol_cond_get_te_false_iter(p, self, rule_types, &iter)) { + SWIG_exception(SWIG_MemoryError, "Out of memory"); + } + fail: + return iter; + } +SWIGINTERN int qpol_cond_evaluate(struct qpol_cond *self,qpol_policy_t *p){ + uint32_t e; + if (qpol_cond_eval(p, self, &e)) { + SWIG_exception(SWIG_RuntimeError, "Could not evaluate conditional"); + } + fail: + return (int) e; + } + + qpol_cond_t *qpol_cond_from_void(void *x) { + return (qpol_cond_t*)x; + }; + +SWIGINTERN struct qpol_cond_expr_node *new_qpol_cond_expr_node(void){ + SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_cond_expr_node_t objects"); + fail: + return NULL; + } +SWIGINTERN void delete_qpol_cond_expr_node(struct qpol_cond_expr_node *self){ + /* no op */ + return; + } +SWIGINTERN int qpol_cond_expr_node_expr_type(struct qpol_cond_expr_node *self,qpol_policy_t *p){ + uint32_t et; + if (qpol_cond_expr_node_get_expr_type(p, self, &et)) { + SWIG_exception(SWIG_ValueError, "Could not get node expression type"); + } + fail: + return (int) et; + } +SWIGINTERN qpol_bool_t *qpol_cond_expr_node_get_boolean(struct qpol_cond_expr_node *self,qpol_policy_t *p){ + uint32_t et; + qpol_bool_t *b = NULL; + qpol_cond_expr_node_get_expr_type(p, self, &et); + if (et != 1) { + 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"); + } + fail: + return b; + } + + qpol_cond_expr_node_t *qpol_cond_expr_node_from_void(void *x) { + return (qpol_cond_expr_node_t*)x; + }; + +SWIGINTERN struct qpol_filename_trans *new_qpol_filename_trans(void){ + SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_filename_trans_t objects"); + fail: + return NULL; + } +SWIGINTERN void delete_qpol_filename_trans(struct qpol_filename_trans *self){ + /* no op */ + return; + } +SWIGINTERN qpol_type_t const *qpol_filename_trans_source_type(struct qpol_filename_trans *self,qpol_policy_t *p){ + const qpol_type_t *t; + if (qpol_filename_trans_get_source_type(p, self, &t)) { + SWIG_exception(SWIG_ValueError, "Could not get source for filename transition rule"); + } + fail: + return t; + } +SWIGINTERN qpol_type_t const *qpol_filename_trans_target_type(struct qpol_filename_trans *self,qpol_policy_t *p){ + const qpol_type_t *t; + if (qpol_filename_trans_get_target_type(p, self, &t)) { + SWIG_exception(SWIG_ValueError, "Could not get target for filename transition rule"); } + fail: + return t; + } +SWIGINTERN qpol_class_t const *qpol_filename_trans_object_class(struct qpol_filename_trans *self,qpol_policy_t *p){ + const qpol_class_t *cls; + if (qpol_filename_trans_get_object_class(p, self, &cls)) { + SWIG_exception(SWIG_ValueError, "Could not get class for filename transition rule"); } + fail: + return cls; + } +SWIGINTERN qpol_type_t const *qpol_filename_trans_default_type(struct qpol_filename_trans *self,qpol_policy_t *p){ + const qpol_type_t *t; + if (qpol_filename_trans_get_default_type(p, self, &t)) { + SWIG_exception(SWIG_ValueError, "Could not get default for filename transition rule"); + } + fail: + return t; + } +SWIGINTERN char const *qpol_filename_trans_filename(struct qpol_filename_trans *self,qpol_policy_t *p){ + const char *name; + if (qpol_filename_trans_get_filename(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get file for filename transition rule"); + } + fail: + return name; + } + + qpol_filename_trans_t *qpol_filename_trans_from_void(void *x) { + return (qpol_filename_trans_t*)x; + }; + +SWIGINTERN struct qpol_polcap *new_qpol_polcap(void){ + SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_polcap_t objects"); + fail: + return NULL; + } +SWIGINTERN void delete_qpol_polcap(struct qpol_polcap *self){ + /* no op */ + return; + } +SWIGINTERN char const *qpol_polcap_name(struct qpol_polcap *self,qpol_policy_t *p){ + const char *name; + if (qpol_polcap_get_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get polcap name rule"); + } + fail: + return name; + } + + qpol_polcap_t *qpol_polcap_from_void(void *x) { + return (qpol_polcap_t*)x; + }; + +SWIGINTERN struct qpol_typebounds *new_qpol_typebounds(void){ + SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_typebounds_t objects"); + fail: + return NULL; + } +SWIGINTERN void delete_qpol_typebounds(struct qpol_typebounds *self){ + /* no op */ + return; + } +SWIGINTERN char const *qpol_typebounds_parent_name(struct qpol_typebounds *self,qpol_policy_t *p){ + const char *name; + if (qpol_typebounds_get_parent_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get parent name"); + } + fail: + return name; + } +SWIGINTERN char const *qpol_typebounds_child_name(struct qpol_typebounds *self,qpol_policy_t *p){ + const char *name; + if (qpol_typebounds_get_child_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get child name"); + } + fail: + return name; + } + + qpol_typebounds_t *qpol_typebounds_from_void(void *x) { + return (qpol_typebounds_t*)x; + }; + +SWIGINTERN struct qpol_rolebounds *new_qpol_rolebounds(void){ + SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_rolebounds_t objects"); + fail: + return NULL; + } +SWIGINTERN void delete_qpol_rolebounds(struct qpol_rolebounds *self){ + /* no op */ + return; + } +SWIGINTERN char const *qpol_rolebounds_parent_name(struct qpol_rolebounds *self,qpol_policy_t *p){ + const char *name; + if (qpol_rolebounds_get_parent_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get parent name"); + } + fail: + return name; + } +SWIGINTERN char const *qpol_rolebounds_child_name(struct qpol_rolebounds *self,qpol_policy_t *p){ + const char *name; + if (qpol_rolebounds_get_child_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get child name"); + } + fail: + return name; + } + + qpol_rolebounds_t *qpol_rolebounds_from_void(void *x) { + return (qpol_rolebounds_t*)x; + }; + +SWIGINTERN struct qpol_userbounds *new_qpol_userbounds(void){ + SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_userbounds_t objects"); + fail: + return NULL; + } +SWIGINTERN void delete_qpol_userbounds(struct qpol_userbounds *self){ + /* no op */ + return; + } +SWIGINTERN char const *qpol_userbounds_parent_name(struct qpol_userbounds *self,qpol_policy_t *p){ + const char *name; + if (qpol_userbounds_get_parent_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get parent name"); + } + fail: + return name; + } +SWIGINTERN char const *qpol_userbounds_child_name(struct qpol_userbounds *self,qpol_policy_t *p){ + const char *name; + if (qpol_userbounds_get_child_name(p, self, &name)) { + SWIG_exception(SWIG_ValueError, "Could not get child name"); + } + fail: + return name; + } + + qpol_userbounds_t *qpol_userbounds_from_void(void *x) { + return (qpol_userbounds_t*)x; + }; + +SWIGINTERN struct qpol_default_object *new_qpol_default_object(void){ + SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_default_object_t objects"); + fail: + return NULL; + } +SWIGINTERN void delete_qpol_default_object(struct qpol_default_object *self){ + /* no op */ + return; + } +SWIGINTERN qpol_class_t const *qpol_default_object_object_class(struct qpol_default_object *self,qpol_policy_t *p){ + const qpol_class_t *cls; + if (qpol_default_object_get_class(p, self, &cls)) { + SWIG_exception(SWIG_ValueError, "Could not get class"); + } + fail: + return cls; + } +SWIGINTERN char const *qpol_default_object_user_default(struct qpol_default_object *self,qpol_policy_t *p){ + const char *value; + if (qpol_default_object_get_user_default(p, self, &value)) { + SWIG_exception(SWIG_ValueError, "Could not get user default"); + } + fail: + return value; + } +SWIGINTERN char const *qpol_default_object_role_default(struct qpol_default_object *self,qpol_policy_t *p){ + const char *value; + if (qpol_default_object_get_role_default(p, self, &value)) { + SWIG_exception(SWIG_ValueError, "Could not get role default"); + } + fail: + return value; + } +SWIGINTERN char const *qpol_default_object_type_default(struct qpol_default_object *self,qpol_policy_t *p){ + const char *value; + if (qpol_default_object_get_type_default(p, self, &value)) { + SWIG_exception(SWIG_ValueError, "Could not get type default"); + } + fail: + return value; + } +SWIGINTERN char const *qpol_default_object_range_default(struct qpol_default_object *self,qpol_policy_t *p){ + const char *value; + if (qpol_default_object_get_range_default(p, self, &value)) { + SWIG_exception(SWIG_ValueError, "Could not get range defaults"); + } + fail: + return value; + } + + qpol_default_object_t *qpol_default_object_from_void(void *x) { + return (qpol_default_object_t*)x; + }; + + +SWIGINTERN int +SWIG_AsVal_unsigned_SS_long_SS_long (PyObject *obj, unsigned long long *val) +{ + int res = SWIG_TypeError; + if (PyLong_Check(obj)) { + unsigned long long v = PyLong_AsUnsignedLongLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_OK; + } else { + PyErr_Clear(); + } + } else { + unsigned long v; + res = SWIG_AsVal_unsigned_SS_long (obj,&v); + if (SWIG_IsOK(res)) { + if (val) *val = v; + return res; + } + } +#ifdef SWIG_PYTHON_CAST_MODE + { + const double mant_max = 1LL << DBL_MANT_DIG; + double d; + res = SWIG_AsVal_double (obj,&d); + if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, 0, mant_max)) { + if (val) *val = (unsigned long long)(d); + return SWIG_AddCast(res); + } + res = SWIG_TypeError; + } +#endif + return res; +} + +SWIGINTERN struct qpol_iomemcon *new_qpol_iomemcon(qpol_policy_t *p,uint64_t low,uint64_t high){ + const qpol_iomemcon_t *qp; + if (qpol_policy_get_iomemcon_by_addr(p, low, high, &qp)) { + SWIG_exception(SWIG_RuntimeError, "iomemcon statement does not exist"); + } + fail: + return (qpol_iomemcon_t*)qp; + } +SWIGINTERN void delete_qpol_iomemcon(struct qpol_iomemcon *self){ + /* no op */ + return; + } +SWIGINTERN uint64_t qpol_iomemcon_low_addr(struct qpol_iomemcon *self,qpol_policy_t *p){ + uint64_t addr = 0; + if(qpol_iomemcon_get_low_addr(p, self, &addr)) { + SWIG_exception(SWIG_RuntimeError, "Could not get low addr for iomemcon statement"); + } + fail: + return addr; + } + +SWIGINTERNINLINE PyObject* +SWIG_From_long_SS_long (long long value) +{ + return ((value < LONG_MIN) || (value > LONG_MAX)) ? + PyLong_FromLongLong(value) : PyLong_FromLong((long)(value)); +} + + +SWIGINTERNINLINE PyObject* +SWIG_From_unsigned_SS_long_SS_long (unsigned long long value) +{ + return (value > LONG_MAX) ? + PyLong_FromUnsignedLongLong(value) : PyLong_FromLong((long)(value)); +} + +SWIGINTERN uint64_t qpol_iomemcon_high_addr(struct qpol_iomemcon *self,qpol_policy_t *p){ + uint64_t addr = 0; + if(qpol_iomemcon_get_high_addr(p, self, &addr)) { + SWIG_exception(SWIG_RuntimeError, "Could not get high addr for iomemcon statement"); + } + fail: + return addr; + } +SWIGINTERN qpol_context_t const *qpol_iomemcon_context(struct qpol_iomemcon *self,qpol_policy_t *p){ + const qpol_context_t *ctx; + if (qpol_iomemcon_get_context(p, self, &ctx)) { + SWIG_exception(SWIG_ValueError, "Could not get context for iomemcon statement"); + } + fail: + return ctx; + } + + qpol_iomemcon_t *qpol_iomemcon_from_void(void *x) { + return (qpol_iomemcon_t*)x; + }; + + +SWIGINTERN int +SWIG_AsVal_unsigned_SS_int (PyObject * obj, unsigned int *val) +{ + unsigned long v; + int res = SWIG_AsVal_unsigned_SS_long (obj, &v); + if (SWIG_IsOK(res)) { + if ((v > UINT_MAX)) { + return SWIG_OverflowError; + } else { + if (val) *val = (unsigned int)(v); + } + } + return res; +} + +SWIGINTERN struct qpol_ioportcon *new_qpol_ioportcon(qpol_policy_t *p,uint32_t low,uint32_t high){ + const qpol_ioportcon_t *qp; + if (qpol_policy_get_ioportcon_by_port(p, low, high, &qp)) { + SWIG_exception(SWIG_RuntimeError, "ioportcon statement does not exist"); + } + fail: + return (qpol_ioportcon_t*)qp; + } +SWIGINTERN void delete_qpol_ioportcon(struct qpol_ioportcon *self){ + /* no op */ + return; + } +SWIGINTERN uint32_t qpol_ioportcon_low_port(struct qpol_ioportcon *self,qpol_policy_t *p){ + uint32_t port = 0; + if(qpol_ioportcon_get_low_port(p, self, &port)) { + SWIG_exception(SWIG_RuntimeError, "Could not get low port for ioportcon statement"); + } + fail: + return port; + } +SWIGINTERN uint32_t qpol_ioportcon_high_port(struct qpol_ioportcon *self,qpol_policy_t *p){ + uint32_t port = 0; + if(qpol_ioportcon_get_high_port(p, self, &port)) { + SWIG_exception(SWIG_RuntimeError, "Could not get high port for ioportcon statement"); + } + fail: + return port; + } +SWIGINTERN qpol_context_t const *qpol_ioportcon_context(struct qpol_ioportcon *self,qpol_policy_t *p){ + const qpol_context_t *ctx; + if (qpol_ioportcon_get_context(p, self, &ctx)) { + SWIG_exception(SWIG_ValueError, "Could not get context for ioportcon statement"); + } + fail: + return ctx; + } + + qpol_ioportcon_t *qpol_ioportcon_from_void(void *x) { + return (qpol_ioportcon_t*)x; + }; + +SWIGINTERN struct qpol_pcidevicecon *new_qpol_pcidevicecon(void){ + SWIG_exception(SWIG_RuntimeError, "pcidevicecon statement does not exist"); + fail: + return NULL; + } +SWIGINTERN void delete_qpol_pcidevicecon(struct qpol_pcidevicecon *self){ + return; + } +SWIGINTERN uint32_t qpol_pcidevicecon_device(struct qpol_pcidevicecon *self,qpol_policy_t *p){ + uint32_t device = 0; + if(qpol_pcidevicecon_get_device(p, self, &device)) { + SWIG_exception(SWIG_RuntimeError, "Could not get device for pcidevicecon statement"); + } + fail: + return device; + } +SWIGINTERN qpol_context_t const *qpol_pcidevicecon_context(struct qpol_pcidevicecon *self,qpol_policy_t *p){ + const qpol_context_t *ctx; + if (qpol_pcidevicecon_get_context(p, self, &ctx)) { + SWIG_exception(SWIG_ValueError, "Could not get context for pcidevicecon statement"); + } + fail: + return ctx; + } + + qpol_pcidevicecon_t *qpol_pcidevicecon_from_void(void *x) { + return (qpol_pcidevicecon_t*)x; + }; + +SWIGINTERN struct qpol_pirqcon *new_qpol_pirqcon(void){ + SWIG_exception(SWIG_RuntimeError, "pirqcon statement does not exist"); + fail: + return NULL; + } +SWIGINTERN void delete_qpol_pirqcon(struct qpol_pirqcon *self){ + return; + } +SWIGINTERN uint32_t qpol_pirqcon_irq(struct qpol_pirqcon *self,qpol_policy_t *p){ + uint16_t irq = 0; + if(qpol_pirqcon_get_irq(p, self, &irq)) { + SWIG_exception(SWIG_RuntimeError, "Could not get irq for pirqcon statement"); + } + fail: + return irq; + } +SWIGINTERN qpol_context_t const *qpol_pirqcon_context(struct qpol_pirqcon *self,qpol_policy_t *p){ + const qpol_context_t *ctx; + if (qpol_pirqcon_get_context(p, self, &ctx)) { + SWIG_exception(SWIG_ValueError, "Could not get context for pirqcon statement"); + } + fail: + return ctx; + } + + qpol_pirqcon_t *qpol_pirqcon_from_void(void *x) { + return (qpol_pirqcon_t*)x; + }; + +SWIGINTERN struct qpol_devicetreecon *new_qpol_devicetreecon(void){ + + SWIG_exception(SWIG_RuntimeError, "devicetreecon statement does not exist"); + + fail: + return NULL; + } +SWIGINTERN char *qpol_devicetreecon_path(struct qpol_devicetreecon *self,qpol_policy_t *p){ + char *path = NULL; + if(qpol_devicetreecon_get_path(p, self, &path)) { + SWIG_exception(SWIG_RuntimeError, "Could not get path for devicetreecon statement"); + } + fail: + return path; + } +SWIGINTERN qpol_context_t const *qpol_devicetreecon_context(struct qpol_devicetreecon *self,qpol_policy_t *p){ + const qpol_context_t *ctx; + if (qpol_devicetreecon_get_context(p, self, &ctx)) { + SWIG_exception(SWIG_ValueError, "Could not get context for devicetreecon statement"); + } + fail: + return ctx; + } + + qpol_devicetreecon_t *qpol_devicetreecon_from_void(void *x) { + return (qpol_devicetreecon_t*)x; + }; + +#ifdef __cplusplus +extern "C" { +#endif +SWIGINTERN PyObject *_wrap_to_str(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:to_str",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "to_str" "', argument " "1"" of type '" "void *""'"); + } + result = (char *)to_str(arg1); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_to_int_with_free(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + int result; + + if (!PyArg_ParseTuple(args,(char *)"O:to_int_with_free",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "to_int_with_free" "', argument " "1"" of type '" "void *""'"); + } + result = (int)to_int_with_free(arg1); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_qpol_policy_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + char *arg1 = (char *) 0 ; + int arg2 ; + PyObject *arg3 = (PyObject *) 0 ; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + struct qpol_policy *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOO:new_qpol_policy_t",&obj0,&obj1,&obj2)) SWIG_fail; + res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_qpol_policy_t" "', argument " "1"" of type '" "char const *""'"); + } + arg1 = (char *)(buf1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_qpol_policy_t" "', argument " "2"" of type '" "int""'"); + } + arg2 = (int)(val2); + arg3 = obj2; + { + result = (struct qpol_policy *)new_qpol_policy((char const *)arg1,arg2,arg3); + if (!result) { + if (errno == EINVAL) { + PyErr_SetString(PyExc_SyntaxError, "Invalid policy."); + } else { + PyErr_SetFromErrnoWithFilename(PyExc_OSError, arg1); + } + return NULL; + } + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_policy, SWIG_POINTER_NEW | 0 ); + if (alloc1 == SWIG_NEWOBJ) free((char*)buf1); + return resultobj; +fail: + if (alloc1 == SWIG_NEWOBJ) free((char*)buf1); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_policy_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_policy_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_policy_t" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + delete_qpol_policy(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_version(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + int result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_version",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_version" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (int)qpol_policy_version(arg1); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_handle_unknown(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_handle_unknown",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_handle_unknown" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (char *)qpol_policy_handle_unknown(arg1); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_target_platform(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_target_platform",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_target_platform" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (char *)qpol_policy_target_platform(arg1); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_capability(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + qpol_capability_e arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_policy_t_capability",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_capability" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "qpol_policy_t_capability" "', argument " "2"" of type '" "qpol_capability_e""'"); + } + arg2 = (qpol_capability_e)(val2); + result = (int)qpol_policy_capability(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_type_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_type_iter",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_type_iter" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (qpol_iterator_t *)qpol_policy_type_iter(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_type_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_type_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_type_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_type_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_role_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_role_iter",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_role_iter" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (qpol_iterator_t *)qpol_policy_role_iter(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_role_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_role_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_role_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_role_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_level_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_level_iter",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_level_iter" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (qpol_iterator_t *)qpol_policy_level_iter(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_level_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_level_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_level_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_level_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_cat_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_cat_iter",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_cat_iter" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (qpol_iterator_t *)qpol_policy_cat_iter(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_cat_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_cat_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_cat_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_cat_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_user_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_user_iter",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_user_iter" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (qpol_iterator_t *)qpol_policy_user_iter(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_user_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_user_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_user_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_user_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_bool_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_bool_iter",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_bool_iter" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (qpol_iterator_t *)qpol_policy_bool_iter(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_bool_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_bool_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_bool_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_bool_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_class_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + char *arg2 = (char *) NULL ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O|O:qpol_policy_t_class_iter",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_class_iter" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + if (obj1) { + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_policy_t_class_iter" "', argument " "2"" of type '" "char *""'"); + } + arg2 = (char *)(buf2); + } + result = (qpol_iterator_t *)qpol_policy_class_iter(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_class_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_class_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_class_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_class_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_common_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + char *arg2 = (char *) NULL ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O|O:qpol_policy_t_common_iter",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_common_iter" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + if (obj1) { + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_policy_t_common_iter" "', argument " "2"" of type '" "char *""'"); + } + arg2 = (char *)(buf2); + } + result = (qpol_iterator_t *)qpol_policy_common_iter(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_common_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_common_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_common_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_common_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_fs_use_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_fs_use_iter",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_fs_use_iter" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (qpol_iterator_t *)qpol_policy_fs_use_iter(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_fs_use_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_fs_use_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_fs_use_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_fs_use_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_genfscon_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_genfscon_iter",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_genfscon_iter" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (qpol_iterator_t *)qpol_policy_genfscon_iter(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_genfscon_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_genfscon_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_genfscon_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_genfscon_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_isid_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_isid_iter",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_isid_iter" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (qpol_iterator_t *)qpol_policy_isid_iter(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_isid_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_isid_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_isid_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_isid_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_netifcon_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_netifcon_iter",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_netifcon_iter" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (qpol_iterator_t *)qpol_policy_netifcon_iter(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_netifcon_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_netifcon_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_netifcon_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_netifcon_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_nodecon_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_nodecon_iter",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_nodecon_iter" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (qpol_iterator_t *)qpol_policy_nodecon_iter(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_nodecon_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_nodecon_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_nodecon_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_nodecon_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_portcon_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_portcon_iter",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_portcon_iter" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (qpol_iterator_t *)qpol_policy_portcon_iter(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_portcon_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_portcon_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_portcon_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_portcon_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_constraint_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_constraint_iter",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_constraint_iter" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (qpol_iterator_t *)qpol_policy_constraint_iter(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_constraint_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_constraint_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_constraint_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_constraint_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_validatetrans_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_validatetrans_iter",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_validatetrans_iter" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (qpol_iterator_t *)qpol_policy_validatetrans_iter(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_validatetrans_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_validatetrans_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_validatetrans_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_validatetrans_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_role_allow_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_role_allow_iter",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_role_allow_iter" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (qpol_iterator_t *)qpol_policy_role_allow_iter(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_role_allow_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_role_allow_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_role_allow_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_role_allow_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_role_trans_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_role_trans_iter",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_role_trans_iter" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (qpol_iterator_t *)qpol_policy_role_trans_iter(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_role_trans_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_role_trans_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_role_trans_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_role_trans_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_range_trans_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_range_trans_iter",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_range_trans_iter" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (qpol_iterator_t *)qpol_policy_range_trans_iter(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_range_trans_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_range_trans_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_range_trans_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_range_trans_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_avrule_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_avrule_iter",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_avrule_iter" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (qpol_iterator_t *)qpol_policy_avrule_iter(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_avrule_allow_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_avrule_allow_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_avrule_allow_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_avrule_allow_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_avrule_auditallow_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_avrule_auditallow_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_avrule_auditallow_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_avrule_auditallow_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_avrule_neverallow_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_avrule_neverallow_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_avrule_neverallow_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_avrule_neverallow_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_avrule_dontaudit_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_avrule_dontaudit_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_avrule_dontaudit_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_avrule_dontaudit_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_avrulex_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_avrulex_iter",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_avrulex_iter" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (qpol_iterator_t *)qpol_policy_avrulex_iter(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_avrule_allowx_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_avrule_allowx_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_avrule_allowx_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_avrule_allowx_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_avrule_auditallowx_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_avrule_auditallowx_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_avrule_auditallowx_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_avrule_auditallowx_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_avrule_neverallowx_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_avrule_neverallowx_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_avrule_neverallowx_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_avrule_neverallowx_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_avrule_dontauditx_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_avrule_dontauditx_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_avrule_dontauditx_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_avrule_dontauditx_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_terule_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_terule_iter",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_terule_iter" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (qpol_iterator_t *)qpol_policy_terule_iter(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_terule_trans_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_terule_trans_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_terule_trans_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_terule_trans_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_terule_change_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_terule_change_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_terule_change_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_terule_change_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_terule_member_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_terule_member_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_terule_member_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_terule_member_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_cond_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_cond_iter",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_cond_iter" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (qpol_iterator_t *)qpol_policy_cond_iter(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_cond_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_cond_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_cond_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_cond_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_filename_trans_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_filename_trans_iter",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_filename_trans_iter" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (qpol_iterator_t *)qpol_policy_filename_trans_iter(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_filename_trans_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_filename_trans_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_filename_trans_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_filename_trans_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_permissive_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_permissive_iter",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_permissive_iter" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (qpol_iterator_t *)qpol_policy_permissive_iter(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_permissive_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_permissive_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_permissive_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_permissive_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_typebounds_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_typebounds_iter",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_typebounds_iter" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (qpol_iterator_t *)qpol_policy_typebounds_iter(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_polcap_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_polcap_iter",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_polcap_iter" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (qpol_iterator_t *)qpol_policy_polcap_iter(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_polcap_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_polcap_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_polcap_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_polcap_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_default_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_default_iter",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_default_iter" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (qpol_iterator_t *)qpol_policy_default_iter(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_iomemcon_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_iomemcon_iter",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_iomemcon_iter" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (qpol_iterator_t *)qpol_policy_iomemcon_iter(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_iomemcon_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_iomemcon_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_iomemcon_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_iomemcon_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_ioportcon_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_ioportcon_iter",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_ioportcon_iter" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (qpol_iterator_t *)qpol_policy_ioportcon_iter(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_ioportcon_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_ioportcon_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_ioportcon_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_ioportcon_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_pcidevicecon_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_pcidevicecon_iter",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_pcidevicecon_iter" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (qpol_iterator_t *)qpol_policy_pcidevicecon_iter(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_pcidevicecon_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_pcidevicecon_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_pcidevicecon_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_pcidevicecon_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_pirqcon_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_pirqcon_iter",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_pirqcon_iter" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (qpol_iterator_t *)qpol_policy_pirqcon_iter(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_pirqcon_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_pirqcon_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_pirqcon_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_pirqcon_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_devicetreecon_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_devicetreecon_iter",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_devicetreecon_iter" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (qpol_iterator_t *)qpol_policy_devicetreecon_iter(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_policy_t_devicetreecon_count(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_policy *arg1 = (struct qpol_policy *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_policy_t_devicetreecon_count",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_policy_t_devicetreecon_count" "', argument " "1"" of type '" "struct qpol_policy *""'"); + } + arg1 = (struct qpol_policy *)(argp1); + result = (size_t)qpol_policy_devicetreecon_count(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_policy_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_policy, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_new_qpol_iterator_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_iterator *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)":new_qpol_iterator_t")) SWIG_fail; + result = (struct qpol_iterator *)new_qpol_iterator(); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_iterator_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_iterator *arg1 = (struct qpol_iterator *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_iterator_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_iterator, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_iterator_t" "', argument " "1"" of type '" "struct qpol_iterator *""'"); + } + arg1 = (struct qpol_iterator *)(argp1); + delete_qpol_iterator(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_iterator_t_item(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_iterator *arg1 = (struct qpol_iterator *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + void *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_iterator_t_item",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_iterator, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_iterator_t_item" "', argument " "1"" of type '" "struct qpol_iterator *""'"); + } + arg1 = (struct qpol_iterator *)(argp1); + result = (void *)qpol_iterator_item(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_void, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_iterator_t_next_(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_iterator *arg1 = (struct qpol_iterator *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_iterator_t_next_",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_iterator, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_iterator_t_next_" "', argument " "1"" of type '" "struct qpol_iterator *""'"); + } + arg1 = (struct qpol_iterator *)(argp1); + qpol_iterator_next_(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_iterator_t_isend(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_iterator *arg1 = (struct qpol_iterator *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + int result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_iterator_t_isend",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_iterator, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_iterator_t_isend" "', argument " "1"" of type '" "struct qpol_iterator *""'"); + } + arg1 = (struct qpol_iterator *)(argp1); + result = (int)qpol_iterator_isend(arg1); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_iterator_t_size(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_iterator *arg1 = (struct qpol_iterator *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + size_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_iterator_t_size",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_iterator, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_iterator_t_size" "', argument " "1"" of type '" "struct qpol_iterator *""'"); + } + arg1 = (struct qpol_iterator *)(argp1); + result = (size_t)qpol_iterator_size(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_iterator_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_iterator, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_new_qpol_type_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + qpol_policy_t *arg1 = (qpol_policy_t *) 0 ; + char *arg2 = (char *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + struct qpol_type *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:new_qpol_type_t",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_qpol_type_t" "', argument " "1"" of type '" "qpol_policy_t *""'"); + } + arg1 = (qpol_policy_t *)(argp1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_qpol_type_t" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = (char *)(buf2); + { + result = (struct qpol_type *)new_qpol_type(arg1,(char const *)arg2); + if (!result) { + PyErr_SetString(PyExc_ValueError, "Invalid type or attribute."); + return NULL; + } + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_type, SWIG_POINTER_NEW | 0 ); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_type_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_type *arg1 = (struct qpol_type *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_type_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_type, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_type_t" "', argument " "1"" of type '" "struct qpol_type *""'"); + } + arg1 = (struct qpol_type *)(argp1); + delete_qpol_type(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_type_t_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_type *arg1 = (struct qpol_type *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_type_t_name",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_type, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_type_t_name" "', argument " "1"" of type '" "struct qpol_type *""'"); + } + arg1 = (struct qpol_type *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_type_t_name" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (char *)qpol_type_name(arg1,arg2); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_type_t_value(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_type *arg1 = (struct qpol_type *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_type_t_value",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_type, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_type_t_value" "', argument " "1"" of type '" "struct qpol_type *""'"); + } + arg1 = (struct qpol_type *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_type_t_value" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (int)qpol_type_value(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_type_t_isalias(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_type *arg1 = (struct qpol_type *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_type_t_isalias",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_type, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_type_t_isalias" "', argument " "1"" of type '" "struct qpol_type *""'"); + } + arg1 = (struct qpol_type *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_type_t_isalias" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (int)qpol_type_isalias(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_type_t_isattr(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_type *arg1 = (struct qpol_type *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_type_t_isattr",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_type, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_type_t_isattr" "', argument " "1"" of type '" "struct qpol_type *""'"); + } + arg1 = (struct qpol_type *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_type_t_isattr" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (int)qpol_type_isattr(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_type_t_ispermissive(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_type *arg1 = (struct qpol_type *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_type_t_ispermissive",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_type, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_type_t_ispermissive" "', argument " "1"" of type '" "struct qpol_type *""'"); + } + arg1 = (struct qpol_type *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_type_t_ispermissive" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (int)qpol_type_ispermissive(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_type_t_type_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_type *arg1 = (struct qpol_type *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_type_t_type_iter",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_type, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_type_t_type_iter" "', argument " "1"" of type '" "struct qpol_type *""'"); + } + arg1 = (struct qpol_type *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_type_t_type_iter" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_iterator_t *)qpol_type_type_iter(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_type_t_attr_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_type *arg1 = (struct qpol_type *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_type_t_attr_iter",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_type, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_type_t_attr_iter" "', argument " "1"" of type '" "struct qpol_type *""'"); + } + arg1 = (struct qpol_type *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_type_t_attr_iter" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_iterator_t *)qpol_type_attr_iter(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_type_t_alias_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_type *arg1 = (struct qpol_type *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_type_t_alias_iter",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_type, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_type_t_alias_iter" "', argument " "1"" of type '" "struct qpol_type *""'"); + } + arg1 = (struct qpol_type *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_type_t_alias_iter" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_iterator_t *)qpol_type_alias_iter(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_type_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_type, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_qpol_type_from_void(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + qpol_type_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_type_from_void",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_type_from_void" "', argument " "1"" of type '" "void *""'"); + } + result = (qpol_type_t *)qpol_type_from_void(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_type, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_qpol_role_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + qpol_policy_t *arg1 = (qpol_policy_t *) 0 ; + char *arg2 = (char *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + struct qpol_role *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:new_qpol_role_t",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_qpol_role_t" "', argument " "1"" of type '" "qpol_policy_t *""'"); + } + arg1 = (qpol_policy_t *)(argp1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_qpol_role_t" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = (char *)(buf2); + { + result = (struct qpol_role *)new_qpol_role(arg1,(char const *)arg2); + if (!result) { + PyErr_SetString(PyExc_ValueError, "Invalid type or attribute."); + return NULL; + } + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_role, SWIG_POINTER_NEW | 0 ); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_role_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_role *arg1 = (struct qpol_role *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_role_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_role, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_role_t" "', argument " "1"" of type '" "struct qpol_role *""'"); + } + arg1 = (struct qpol_role *)(argp1); + delete_qpol_role(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_role_t_value(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_role *arg1 = (struct qpol_role *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_role_t_value",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_role, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_role_t_value" "', argument " "1"" of type '" "struct qpol_role *""'"); + } + arg1 = (struct qpol_role *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_role_t_value" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (int)qpol_role_value(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_role_t_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_role *arg1 = (struct qpol_role *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_role_t_name",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_role, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_role_t_name" "', argument " "1"" of type '" "struct qpol_role *""'"); + } + arg1 = (struct qpol_role *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_role_t_name" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (char *)qpol_role_name(arg1,arg2); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_role_t_type_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_role *arg1 = (struct qpol_role *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_role_t_type_iter",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_role, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_role_t_type_iter" "', argument " "1"" of type '" "struct qpol_role *""'"); + } + arg1 = (struct qpol_role *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_role_t_type_iter" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_iterator_t *)qpol_role_type_iter(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_role_t_dominate_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_role *arg1 = (struct qpol_role *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_role_t_dominate_iter",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_role, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_role_t_dominate_iter" "', argument " "1"" of type '" "struct qpol_role *""'"); + } + arg1 = (struct qpol_role *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_role_t_dominate_iter" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_iterator_t *)qpol_role_dominate_iter(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_role_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_role, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_qpol_role_from_void(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + qpol_role_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_role_from_void",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_role_from_void" "', argument " "1"" of type '" "void *""'"); + } + result = (qpol_role_t *)qpol_role_from_void(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_role, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_qpol_level_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + qpol_policy_t *arg1 = (qpol_policy_t *) 0 ; + char *arg2 = (char *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + struct qpol_level *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:new_qpol_level_t",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_qpol_level_t" "', argument " "1"" of type '" "qpol_policy_t *""'"); + } + arg1 = (qpol_policy_t *)(argp1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_qpol_level_t" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = (char *)(buf2); + { + result = (struct qpol_level *)new_qpol_level(arg1,(char const *)arg2); + if (!result) { + if (errno == EINVAL) { + PyErr_SetString(PyExc_ValueError, "Invalid level."); + } else { + PyErr_SetFromErrno(PyExc_OSError); + } + + return NULL; + } + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_level, SWIG_POINTER_NEW | 0 ); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_level_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_level *arg1 = (struct qpol_level *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_level_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_level, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_level_t" "', argument " "1"" of type '" "struct qpol_level *""'"); + } + arg1 = (struct qpol_level *)(argp1); + delete_qpol_level(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_level_t_isalias(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_level *arg1 = (struct qpol_level *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_level_t_isalias",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_level, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_level_t_isalias" "', argument " "1"" of type '" "struct qpol_level *""'"); + } + arg1 = (struct qpol_level *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_level_t_isalias" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (int)qpol_level_isalias(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_level_t_value(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_level *arg1 = (struct qpol_level *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_level_t_value",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_level, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_level_t_value" "', argument " "1"" of type '" "struct qpol_level *""'"); + } + arg1 = (struct qpol_level *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_level_t_value" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (int)qpol_level_value(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_level_t_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_level *arg1 = (struct qpol_level *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_level_t_name",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_level, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_level_t_name" "', argument " "1"" of type '" "struct qpol_level *""'"); + } + arg1 = (struct qpol_level *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_level_t_name" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (char *)qpol_level_name(arg1,arg2); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_level_t_cat_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_level *arg1 = (struct qpol_level *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_level_t_cat_iter",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_level, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_level_t_cat_iter" "', argument " "1"" of type '" "struct qpol_level *""'"); + } + arg1 = (struct qpol_level *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_level_t_cat_iter" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_iterator_t *)qpol_level_cat_iter(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_level_t_alias_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_level *arg1 = (struct qpol_level *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_level_t_alias_iter",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_level, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_level_t_alias_iter" "', argument " "1"" of type '" "struct qpol_level *""'"); + } + arg1 = (struct qpol_level *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_level_t_alias_iter" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_iterator_t *)qpol_level_alias_iter(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_level_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_level, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_qpol_level_from_void(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + qpol_level_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_level_from_void",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_level_from_void" "', argument " "1"" of type '" "void *""'"); + } + result = (qpol_level_t *)qpol_level_from_void(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_level, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_qpol_cat_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + qpol_policy_t *arg1 = (qpol_policy_t *) 0 ; + char *arg2 = (char *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + struct qpol_cat *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:new_qpol_cat_t",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_qpol_cat_t" "', argument " "1"" of type '" "qpol_policy_t *""'"); + } + arg1 = (qpol_policy_t *)(argp1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_qpol_cat_t" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = (char *)(buf2); + { + result = (struct qpol_cat *)new_qpol_cat(arg1,(char const *)arg2); + if (!result) { + if (errno == EINVAL) { + PyErr_SetString(PyExc_ValueError, "Invalid category."); + } else { + PyErr_SetFromErrno(PyExc_OSError); + } + + return NULL; + } + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_cat, SWIG_POINTER_NEW | 0 ); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_cat_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_cat *arg1 = (struct qpol_cat *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_cat_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_cat, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_cat_t" "', argument " "1"" of type '" "struct qpol_cat *""'"); + } + arg1 = (struct qpol_cat *)(argp1); + delete_qpol_cat(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_cat_t_isalias(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_cat *arg1 = (struct qpol_cat *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_cat_t_isalias",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_cat, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_cat_t_isalias" "', argument " "1"" of type '" "struct qpol_cat *""'"); + } + arg1 = (struct qpol_cat *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_cat_t_isalias" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (int)qpol_cat_isalias(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_cat_t_value(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_cat *arg1 = (struct qpol_cat *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_cat_t_value",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_cat, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_cat_t_value" "', argument " "1"" of type '" "struct qpol_cat *""'"); + } + arg1 = (struct qpol_cat *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_cat_t_value" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (int)qpol_cat_value(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_cat_t_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_cat *arg1 = (struct qpol_cat *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_cat_t_name",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_cat, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_cat_t_name" "', argument " "1"" of type '" "struct qpol_cat *""'"); + } + arg1 = (struct qpol_cat *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_cat_t_name" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (char *)qpol_cat_name(arg1,arg2); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_cat_t_alias_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_cat *arg1 = (struct qpol_cat *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_cat_t_alias_iter",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_cat, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_cat_t_alias_iter" "', argument " "1"" of type '" "struct qpol_cat *""'"); + } + arg1 = (struct qpol_cat *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_cat_t_alias_iter" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_iterator_t *)qpol_cat_alias_iter(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_cat_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_cat, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_qpol_cat_from_void(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + qpol_cat_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_cat_from_void",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_cat_from_void" "', argument " "1"" of type '" "void *""'"); + } + result = (qpol_cat_t *)qpol_cat_from_void(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_cat, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_qpol_mls_range_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + qpol_policy_t *arg1 = (qpol_policy_t *) 0 ; + qpol_mls_level_t *arg2 = (qpol_mls_level_t *) 0 ; + qpol_mls_level_t *arg3 = (qpol_mls_level_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + void *argp3 = 0 ; + int res3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + struct qpol_mls_range *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOO:new_qpol_mls_range_t",&obj0,&obj1,&obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_qpol_mls_range_t" "', argument " "1"" of type '" "qpol_policy_t *""'"); + } + arg1 = (qpol_policy_t *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_mls_level, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_qpol_mls_range_t" "', argument " "2"" of type '" "qpol_mls_level_t *""'"); + } + arg2 = (qpol_mls_level_t *)(argp2); + res3 = SWIG_ConvertPtr(obj2, &argp3,SWIGTYPE_p_qpol_mls_level, 0 | 0 ); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "new_qpol_mls_range_t" "', argument " "3"" of type '" "qpol_mls_level_t *""'"); + } + arg3 = (qpol_mls_level_t *)(argp3); + { + result = (struct qpol_mls_range *)new_qpol_mls_range(arg1,arg2,arg3); + if (!result) { + if (errno == EINVAL) { + PyErr_SetString(PyExc_ValueError, "Invalid range."); + } else { + PyErr_SetFromErrno(PyExc_OSError); + } + + return NULL; + } + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_mls_range, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_mls_range_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_mls_range *arg1 = (struct qpol_mls_range *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_mls_range_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_mls_range, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_mls_range_t" "', argument " "1"" of type '" "struct qpol_mls_range *""'"); + } + arg1 = (struct qpol_mls_range *)(argp1); + delete_qpol_mls_range(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_mls_range_t_high_level(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_mls_range *arg1 = (struct qpol_mls_range *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_mls_level_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_mls_range_t_high_level",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_mls_range, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_mls_range_t_high_level" "', argument " "1"" of type '" "struct qpol_mls_range *""'"); + } + arg1 = (struct qpol_mls_range *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_mls_range_t_high_level" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_mls_level_t *)qpol_mls_range_high_level(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_mls_level, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_mls_range_t_low_level(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_mls_range *arg1 = (struct qpol_mls_range *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_mls_level_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_mls_range_t_low_level",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_mls_range, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_mls_range_t_low_level" "', argument " "1"" of type '" "struct qpol_mls_range *""'"); + } + arg1 = (struct qpol_mls_range *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_mls_range_t_low_level" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_mls_level_t *)qpol_mls_range_low_level(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_mls_level, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_mls_range_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_mls_range, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_qpol_mls_range_from_void(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + qpol_mls_range_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_mls_range_from_void",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_mls_range_from_void" "', argument " "1"" of type '" "void *""'"); + } + result = (qpol_mls_range_t *)qpol_mls_range_from_void(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_mls_range, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_qpol_semantic_level_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + qpol_policy_t *arg1 = (qpol_policy_t *) 0 ; + char *arg2 = (char *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + struct qpol_semantic_level *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:new_qpol_semantic_level_t",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_qpol_semantic_level_t" "', argument " "1"" of type '" "qpol_policy_t *""'"); + } + arg1 = (qpol_policy_t *)(argp1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_qpol_semantic_level_t" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = (char *)(buf2); + { + result = (struct qpol_semantic_level *)new_qpol_semantic_level(arg1,(char const *)arg2); + if (!result) { + PyErr_SetString(PyExc_ValueError, "Invalid sensitivity name."); + return NULL; + } + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_semantic_level, SWIG_POINTER_NEW | 0 ); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_semantic_level_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_semantic_level *arg1 = (struct qpol_semantic_level *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_semantic_level_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_semantic_level, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_semantic_level_t" "', argument " "1"" of type '" "struct qpol_semantic_level *""'"); + } + arg1 = (struct qpol_semantic_level *)(argp1); + delete_qpol_semantic_level(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_semantic_level_t_add_cats(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_semantic_level *arg1 = (struct qpol_semantic_level *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + char *arg3 = (char *) 0 ; + char *arg4 = (char *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + int res3 ; + char *buf3 = 0 ; + int alloc3 = 0 ; + int res4 ; + char *buf4 = 0 ; + int alloc4 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + int result; + + if (!PyArg_ParseTuple(args,(char *)"OOOO:qpol_semantic_level_t_add_cats",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_semantic_level, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_semantic_level_t_add_cats" "', argument " "1"" of type '" "struct qpol_semantic_level *""'"); + } + arg1 = (struct qpol_semantic_level *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_semantic_level_t_add_cats" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + res3 = SWIG_AsCharPtrAndSize(obj2, &buf3, NULL, &alloc3); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "qpol_semantic_level_t_add_cats" "', argument " "3"" of type '" "char const *""'"); + } + arg3 = (char *)(buf3); + res4 = SWIG_AsCharPtrAndSize(obj3, &buf4, NULL, &alloc4); + if (!SWIG_IsOK(res4)) { + SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "qpol_semantic_level_t_add_cats" "', argument " "4"" of type '" "char const *""'"); + } + arg4 = (char *)(buf4); + { + result = (int)qpol_semantic_level_add_cats(arg1,arg2,(char const *)arg3,(char const *)arg4); + if (result) { + PyErr_SetString(PyExc_ValueError, "Invalid category name or category range."); + return NULL; + } + } + resultobj = SWIG_From_int((int)(result)); + if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); + if (alloc4 == SWIG_NEWOBJ) free((char*)buf4); + return resultobj; +fail: + if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); + if (alloc4 == SWIG_NEWOBJ) free((char*)buf4); + return NULL; +} + + +SWIGINTERN PyObject *qpol_semantic_level_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_semantic_level, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_new_qpol_mls_level_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + qpol_policy_t *arg1 = (qpol_policy_t *) 0 ; + qpol_semantic_level_t *arg2 = (qpol_semantic_level_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + struct qpol_mls_level *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:new_qpol_mls_level_t",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_qpol_mls_level_t" "', argument " "1"" of type '" "qpol_policy_t *""'"); + } + arg1 = (qpol_policy_t *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_semantic_level, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_qpol_mls_level_t" "', argument " "2"" of type '" "qpol_semantic_level_t *""'"); + } + arg2 = (qpol_semantic_level_t *)(argp2); + { + result = (struct qpol_mls_level *)new_qpol_mls_level(arg1,arg2); + if (!result) { + PyErr_SetString(PyExc_ValueError, "Invalid level."); + return NULL; + } + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_mls_level, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_mls_level_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_mls_level *arg1 = (struct qpol_mls_level *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_mls_level_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_mls_level, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_mls_level_t" "', argument " "1"" of type '" "struct qpol_mls_level *""'"); + } + arg1 = (struct qpol_mls_level *)(argp1); + delete_qpol_mls_level(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_mls_level_t_sens_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_mls_level *arg1 = (struct qpol_mls_level *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_mls_level_t_sens_name",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_mls_level, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_mls_level_t_sens_name" "', argument " "1"" of type '" "struct qpol_mls_level *""'"); + } + arg1 = (struct qpol_mls_level *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_mls_level_t_sens_name" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (char *)qpol_mls_level_sens_name(arg1,arg2); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_mls_level_t_cat_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_mls_level *arg1 = (struct qpol_mls_level *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_mls_level_t_cat_iter",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_mls_level, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_mls_level_t_cat_iter" "', argument " "1"" of type '" "struct qpol_mls_level *""'"); + } + arg1 = (struct qpol_mls_level *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_mls_level_t_cat_iter" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_iterator_t *)qpol_mls_level_cat_iter(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_mls_level_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_mls_level, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_qpol_mls_level_from_void(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + qpol_mls_level_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_mls_level_from_void",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_mls_level_from_void" "', argument " "1"" of type '" "void *""'"); + } + result = (qpol_mls_level_t *)qpol_mls_level_from_void(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_mls_level, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_qpol_user_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + qpol_policy_t *arg1 = (qpol_policy_t *) 0 ; + char *arg2 = (char *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + struct qpol_user *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:new_qpol_user_t",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_qpol_user_t" "', argument " "1"" of type '" "qpol_policy_t *""'"); + } + arg1 = (qpol_policy_t *)(argp1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_qpol_user_t" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = (char *)(buf2); + { + result = (struct qpol_user *)new_qpol_user(arg1,(char const *)arg2); + if (!result) { + PyErr_SetString(PyExc_ValueError, "Invalid user."); + return NULL; + } + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_user, SWIG_POINTER_NEW | 0 ); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_user_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_user *arg1 = (struct qpol_user *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_user_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_user, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_user_t" "', argument " "1"" of type '" "struct qpol_user *""'"); + } + arg1 = (struct qpol_user *)(argp1); + delete_qpol_user(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_user_t_value(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_user *arg1 = (struct qpol_user *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_user_t_value",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_user, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_user_t_value" "', argument " "1"" of type '" "struct qpol_user *""'"); + } + arg1 = (struct qpol_user *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_user_t_value" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (int)qpol_user_value(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_user_t_role_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_user *arg1 = (struct qpol_user *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_user_t_role_iter",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_user, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_user_t_role_iter" "', argument " "1"" of type '" "struct qpol_user *""'"); + } + arg1 = (struct qpol_user *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_user_t_role_iter" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_iterator_t *)qpol_user_role_iter(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_user_t_range(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_user *arg1 = (struct qpol_user *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_mls_range_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_user_t_range",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_user, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_user_t_range" "', argument " "1"" of type '" "struct qpol_user *""'"); + } + arg1 = (struct qpol_user *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_user_t_range" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_mls_range_t *)qpol_user_range(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_mls_range, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_user_t_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_user *arg1 = (struct qpol_user *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_user_t_name",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_user, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_user_t_name" "', argument " "1"" of type '" "struct qpol_user *""'"); + } + arg1 = (struct qpol_user *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_user_t_name" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (char *)qpol_user_name(arg1,arg2); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_user_t_dfltlevel(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_user *arg1 = (struct qpol_user *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_mls_level_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_user_t_dfltlevel",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_user, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_user_t_dfltlevel" "', argument " "1"" of type '" "struct qpol_user *""'"); + } + arg1 = (struct qpol_user *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_user_t_dfltlevel" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_mls_level_t *)qpol_user_dfltlevel(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_mls_level, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_user_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_user, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_qpol_user_from_void(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + qpol_user_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_user_from_void",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_user_from_void" "', argument " "1"" of type '" "void *""'"); + } + result = (qpol_user_t *)qpol_user_from_void(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_user, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_qpol_bool_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + qpol_policy_t *arg1 = (qpol_policy_t *) 0 ; + char *arg2 = (char *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + struct qpol_bool *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:new_qpol_bool_t",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_qpol_bool_t" "', argument " "1"" of type '" "qpol_policy_t *""'"); + } + arg1 = (qpol_policy_t *)(argp1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_qpol_bool_t" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = (char *)(buf2); + result = (struct qpol_bool *)new_qpol_bool(arg1,(char const *)arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_bool, SWIG_POINTER_NEW | 0 ); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_bool_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_bool *arg1 = (struct qpol_bool *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_bool_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_bool, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_bool_t" "', argument " "1"" of type '" "struct qpol_bool *""'"); + } + arg1 = (struct qpol_bool *)(argp1); + delete_qpol_bool(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_bool_t_value(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_bool *arg1 = (struct qpol_bool *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_bool_t_value",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_bool, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_bool_t_value" "', argument " "1"" of type '" "struct qpol_bool *""'"); + } + arg1 = (struct qpol_bool *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_bool_t_value" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (int)qpol_bool_value(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_bool_t_state(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_bool *arg1 = (struct qpol_bool *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_bool_t_state",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_bool, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_bool_t_state" "', argument " "1"" of type '" "struct qpol_bool *""'"); + } + arg1 = (struct qpol_bool *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_bool_t_state" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (int)qpol_bool_state(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_bool_t_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_bool *arg1 = (struct qpol_bool *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_bool_t_name",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_bool, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_bool_t_name" "', argument " "1"" of type '" "struct qpol_bool *""'"); + } + arg1 = (struct qpol_bool *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_bool_t_name" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (char *)qpol_bool_name(arg1,arg2); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_bool_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_bool, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_qpol_bool_from_void(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + qpol_bool_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_bool_from_void",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_bool_from_void" "', argument " "1"" of type '" "void *""'"); + } + result = (qpol_bool_t *)qpol_bool_from_void(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_bool, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_qpol_context_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_context *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)":new_qpol_context_t")) SWIG_fail; + result = (struct qpol_context *)new_qpol_context(); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_context, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_context_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_context *arg1 = (struct qpol_context *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_context_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_context, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_context_t" "', argument " "1"" of type '" "struct qpol_context *""'"); + } + arg1 = (struct qpol_context *)(argp1); + delete_qpol_context(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_context_t_user(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_context *arg1 = (struct qpol_context *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_user_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_context_t_user",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_context, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_context_t_user" "', argument " "1"" of type '" "struct qpol_context *""'"); + } + arg1 = (struct qpol_context *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_context_t_user" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_user_t *)qpol_context_user(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_user, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_context_t_role(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_context *arg1 = (struct qpol_context *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_role_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_context_t_role",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_context, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_context_t_role" "', argument " "1"" of type '" "struct qpol_context *""'"); + } + arg1 = (struct qpol_context *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_context_t_role" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_role_t *)qpol_context_role(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_role, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_context_t_type_(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_context *arg1 = (struct qpol_context *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_type_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_context_t_type_",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_context, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_context_t_type_" "', argument " "1"" of type '" "struct qpol_context *""'"); + } + arg1 = (struct qpol_context *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_context_t_type_" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_type_t *)qpol_context_type_(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_type, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_context_t_range(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_context *arg1 = (struct qpol_context *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_mls_range_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_context_t_range",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_context, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_context_t_range" "', argument " "1"" of type '" "struct qpol_context *""'"); + } + arg1 = (struct qpol_context *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_context_t_range" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_mls_range_t *)qpol_context_range(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_mls_range, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_context_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_context, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_qpol_context_from_void(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + qpol_context_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_context_from_void",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_context_from_void" "', argument " "1"" of type '" "void *""'"); + } + result = (qpol_context_t *)qpol_context_from_void(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_context, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_qpol_class_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + qpol_policy_t *arg1 = (qpol_policy_t *) 0 ; + char *arg2 = (char *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + struct qpol_class *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:new_qpol_class_t",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_qpol_class_t" "', argument " "1"" of type '" "qpol_policy_t *""'"); + } + arg1 = (qpol_policy_t *)(argp1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_qpol_class_t" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = (char *)(buf2); + { + result = (struct qpol_class *)new_qpol_class(arg1,(char const *)arg2); + if (!result) { + if (errno == EINVAL) { + PyErr_SetString(PyExc_ValueError, "Invalid class."); + } else { + PyErr_SetFromErrno(PyExc_OSError); + } + + return NULL; + } + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_class, SWIG_POINTER_NEW | 0 ); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_class_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_class *arg1 = (struct qpol_class *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_class_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_class, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_class_t" "', argument " "1"" of type '" "struct qpol_class *""'"); + } + arg1 = (struct qpol_class *)(argp1); + delete_qpol_class(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_class_t_value(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_class *arg1 = (struct qpol_class *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_class_t_value",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_class, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_class_t_value" "', argument " "1"" of type '" "struct qpol_class *""'"); + } + arg1 = (struct qpol_class *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_class_t_value" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (int)qpol_class_value(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_class_t_common(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_class *arg1 = (struct qpol_class *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_common_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_class_t_common",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_class, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_class_t_common" "', argument " "1"" of type '" "struct qpol_class *""'"); + } + arg1 = (struct qpol_class *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_class_t_common" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + { + result = (qpol_common_t *)qpol_class_common(arg1,arg2); + if (!result) { + PyErr_SetString(PyExc_ValueError, "Class does not inherit a common."); + return NULL; + } + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_common, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_class_t_perm_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_class *arg1 = (struct qpol_class *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_class_t_perm_iter",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_class, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_class_t_perm_iter" "', argument " "1"" of type '" "struct qpol_class *""'"); + } + arg1 = (struct qpol_class *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_class_t_perm_iter" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_iterator_t *)qpol_class_perm_iter(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_class_t_constraint_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_class *arg1 = (struct qpol_class *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_class_t_constraint_iter",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_class, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_class_t_constraint_iter" "', argument " "1"" of type '" "struct qpol_class *""'"); + } + arg1 = (struct qpol_class *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_class_t_constraint_iter" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_iterator_t *)qpol_class_constraint_iter(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_class_t_validatetrans_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_class *arg1 = (struct qpol_class *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_class_t_validatetrans_iter",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_class, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_class_t_validatetrans_iter" "', argument " "1"" of type '" "struct qpol_class *""'"); + } + arg1 = (struct qpol_class *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_class_t_validatetrans_iter" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_iterator_t *)qpol_class_validatetrans_iter(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_class_t_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_class *arg1 = (struct qpol_class *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_class_t_name",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_class, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_class_t_name" "', argument " "1"" of type '" "struct qpol_class *""'"); + } + arg1 = (struct qpol_class *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_class_t_name" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (char *)qpol_class_name(arg1,arg2); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_class_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_class, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_qpol_class_from_void(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + qpol_class_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_class_from_void",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_class_from_void" "', argument " "1"" of type '" "void *""'"); + } + result = (qpol_class_t *)qpol_class_from_void(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_class, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_qpol_common_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + qpol_policy_t *arg1 = (qpol_policy_t *) 0 ; + char *arg2 = (char *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + struct qpol_common *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:new_qpol_common_t",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_qpol_common_t" "', argument " "1"" of type '" "qpol_policy_t *""'"); + } + arg1 = (qpol_policy_t *)(argp1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_qpol_common_t" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = (char *)(buf2); + { + result = (struct qpol_common *)new_qpol_common(arg1,(char const *)arg2); + if (!result) { + if (errno == EINVAL) { + PyErr_SetString(PyExc_ValueError, "Invalid common."); + } else { + PyErr_SetFromErrno(PyExc_OSError); + } + + return NULL; + } + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_common, SWIG_POINTER_NEW | 0 ); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_common_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_common *arg1 = (struct qpol_common *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_common_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_common, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_common_t" "', argument " "1"" of type '" "struct qpol_common *""'"); + } + arg1 = (struct qpol_common *)(argp1); + delete_qpol_common(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_common_t_value(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_common *arg1 = (struct qpol_common *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_common_t_value",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_common, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_common_t_value" "', argument " "1"" of type '" "struct qpol_common *""'"); + } + arg1 = (struct qpol_common *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_common_t_value" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (int)qpol_common_value(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_common_t_perm_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_common *arg1 = (struct qpol_common *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_common_t_perm_iter",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_common, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_common_t_perm_iter" "', argument " "1"" of type '" "struct qpol_common *""'"); + } + arg1 = (struct qpol_common *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_common_t_perm_iter" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_iterator_t *)qpol_common_perm_iter(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_common_t_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_common *arg1 = (struct qpol_common *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_common_t_name",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_common, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_common_t_name" "', argument " "1"" of type '" "struct qpol_common *""'"); + } + arg1 = (struct qpol_common *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_common_t_name" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (char *)qpol_common_name(arg1,arg2); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_common_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_common, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_qpol_common_from_void(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + qpol_common_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_common_from_void",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_common_from_void" "', argument " "1"" of type '" "void *""'"); + } + result = (qpol_common_t *)qpol_common_from_void(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_common, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_qpol_fs_use_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + qpol_policy_t *arg1 = (qpol_policy_t *) 0 ; + char *arg2 = (char *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + struct qpol_fs_use *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:new_qpol_fs_use_t",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_qpol_fs_use_t" "', argument " "1"" of type '" "qpol_policy_t *""'"); + } + arg1 = (qpol_policy_t *)(argp1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_qpol_fs_use_t" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = (char *)(buf2); + result = (struct qpol_fs_use *)new_qpol_fs_use(arg1,(char const *)arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_fs_use, SWIG_POINTER_NEW | 0 ); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_fs_use_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_fs_use *arg1 = (struct qpol_fs_use *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_fs_use_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_fs_use, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_fs_use_t" "', argument " "1"" of type '" "struct qpol_fs_use *""'"); + } + arg1 = (struct qpol_fs_use *)(argp1); + delete_qpol_fs_use(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_fs_use_t_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_fs_use *arg1 = (struct qpol_fs_use *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_fs_use_t_name",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_fs_use, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_fs_use_t_name" "', argument " "1"" of type '" "struct qpol_fs_use *""'"); + } + arg1 = (struct qpol_fs_use *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_fs_use_t_name" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (char *)qpol_fs_use_name(arg1,arg2); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_fs_use_t_behavior(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_fs_use *arg1 = (struct qpol_fs_use *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_fs_use_t_behavior",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_fs_use, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_fs_use_t_behavior" "', argument " "1"" of type '" "struct qpol_fs_use *""'"); + } + arg1 = (struct qpol_fs_use *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_fs_use_t_behavior" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (int)qpol_fs_use_behavior(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_fs_use_t_context(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_fs_use *arg1 = (struct qpol_fs_use *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_context_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_fs_use_t_context",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_fs_use, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_fs_use_t_context" "', argument " "1"" of type '" "struct qpol_fs_use *""'"); + } + arg1 = (struct qpol_fs_use *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_fs_use_t_context" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_context_t *)qpol_fs_use_context(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_context, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_fs_use_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_fs_use, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_qpol_fs_use_from_void(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + qpol_fs_use_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_fs_use_from_void",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_fs_use_from_void" "', argument " "1"" of type '" "void *""'"); + } + result = (qpol_fs_use_t *)qpol_fs_use_from_void(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_fs_use, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_qpol_genfscon_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + qpol_policy_t *arg1 = (qpol_policy_t *) 0 ; + char *arg2 = (char *) 0 ; + char *arg3 = (char *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int res3 ; + char *buf3 = 0 ; + int alloc3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + struct qpol_genfscon *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOO:new_qpol_genfscon_t",&obj0,&obj1,&obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_qpol_genfscon_t" "', argument " "1"" of type '" "qpol_policy_t *""'"); + } + arg1 = (qpol_policy_t *)(argp1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_qpol_genfscon_t" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = (char *)(buf2); + res3 = SWIG_AsCharPtrAndSize(obj2, &buf3, NULL, &alloc3); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "new_qpol_genfscon_t" "', argument " "3"" of type '" "char const *""'"); + } + arg3 = (char *)(buf3); + result = (struct qpol_genfscon *)new_qpol_genfscon(arg1,(char const *)arg2,(char const *)arg3); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_genfscon, SWIG_POINTER_NEW | 0 ); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_genfscon_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_genfscon *arg1 = (struct qpol_genfscon *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_genfscon_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_genfscon, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_genfscon_t" "', argument " "1"" of type '" "struct qpol_genfscon *""'"); + } + arg1 = (struct qpol_genfscon *)(argp1); + delete_qpol_genfscon(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_genfscon_t_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_genfscon *arg1 = (struct qpol_genfscon *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_genfscon_t_name",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_genfscon, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_genfscon_t_name" "', argument " "1"" of type '" "struct qpol_genfscon *""'"); + } + arg1 = (struct qpol_genfscon *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_genfscon_t_name" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (char *)qpol_genfscon_name(arg1,arg2); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_genfscon_t_path(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_genfscon *arg1 = (struct qpol_genfscon *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_genfscon_t_path",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_genfscon, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_genfscon_t_path" "', argument " "1"" of type '" "struct qpol_genfscon *""'"); + } + arg1 = (struct qpol_genfscon *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_genfscon_t_path" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (char *)qpol_genfscon_path(arg1,arg2); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_genfscon_t_object_class(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_genfscon *arg1 = (struct qpol_genfscon *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + unsigned int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_genfscon_t_object_class",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_genfscon, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_genfscon_t_object_class" "', argument " "1"" of type '" "struct qpol_genfscon *""'"); + } + arg1 = (struct qpol_genfscon *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_genfscon_t_object_class" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (unsigned int)qpol_genfscon_object_class(arg1,arg2); + resultobj = SWIG_From_unsigned_SS_int((unsigned int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_genfscon_t_context(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_genfscon *arg1 = (struct qpol_genfscon *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_context_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_genfscon_t_context",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_genfscon, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_genfscon_t_context" "', argument " "1"" of type '" "struct qpol_genfscon *""'"); + } + arg1 = (struct qpol_genfscon *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_genfscon_t_context" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_context_t *)qpol_genfscon_context(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_context, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_genfscon_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_genfscon, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_qpol_genfscon_from_void(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + qpol_genfscon_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_genfscon_from_void",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_genfscon_from_void" "', argument " "1"" of type '" "void *""'"); + } + result = (qpol_genfscon_t *)qpol_genfscon_from_void(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_genfscon, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_qpol_isid_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + qpol_policy_t *arg1 = (qpol_policy_t *) 0 ; + char *arg2 = (char *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + struct qpol_isid *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:new_qpol_isid_t",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_qpol_isid_t" "', argument " "1"" of type '" "qpol_policy_t *""'"); + } + arg1 = (qpol_policy_t *)(argp1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_qpol_isid_t" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = (char *)(buf2); + { + result = (struct qpol_isid *)new_qpol_isid(arg1,(char const *)arg2); + if (!result) { + if (errno == EINVAL) { + PyErr_SetString(PyExc_ValueError, "Invalid initial sid name."); + } else { + PyErr_SetFromErrno(PyExc_OSError); + } + + return NULL; + } + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_isid, SWIG_POINTER_NEW | 0 ); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_isid_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_isid *arg1 = (struct qpol_isid *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_isid_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_isid, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_isid_t" "', argument " "1"" of type '" "struct qpol_isid *""'"); + } + arg1 = (struct qpol_isid *)(argp1); + delete_qpol_isid(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_isid_t_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_isid *arg1 = (struct qpol_isid *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_isid_t_name",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_isid, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_isid_t_name" "', argument " "1"" of type '" "struct qpol_isid *""'"); + } + arg1 = (struct qpol_isid *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_isid_t_name" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (char *)qpol_isid_name(arg1,arg2); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_isid_t_context(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_isid *arg1 = (struct qpol_isid *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_context_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_isid_t_context",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_isid, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_isid_t_context" "', argument " "1"" of type '" "struct qpol_isid *""'"); + } + arg1 = (struct qpol_isid *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_isid_t_context" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_context_t *)qpol_isid_context(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_context, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_isid_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_isid, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_qpol_isid_from_void(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + qpol_isid_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_isid_from_void",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_isid_from_void" "', argument " "1"" of type '" "void *""'"); + } + result = (qpol_isid_t *)qpol_isid_from_void(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_isid, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_qpol_netifcon_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + qpol_policy_t *arg1 = (qpol_policy_t *) 0 ; + char *arg2 = (char *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + struct qpol_netifcon *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:new_qpol_netifcon_t",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_qpol_netifcon_t" "', argument " "1"" of type '" "qpol_policy_t *""'"); + } + arg1 = (qpol_policy_t *)(argp1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_qpol_netifcon_t" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = (char *)(buf2); + result = (struct qpol_netifcon *)new_qpol_netifcon(arg1,(char const *)arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_netifcon, SWIG_POINTER_NEW | 0 ); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_netifcon_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_netifcon *arg1 = (struct qpol_netifcon *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_netifcon_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_netifcon, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_netifcon_t" "', argument " "1"" of type '" "struct qpol_netifcon *""'"); + } + arg1 = (struct qpol_netifcon *)(argp1); + delete_qpol_netifcon(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_netifcon_t_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_netifcon *arg1 = (struct qpol_netifcon *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_netifcon_t_name",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_netifcon, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_netifcon_t_name" "', argument " "1"" of type '" "struct qpol_netifcon *""'"); + } + arg1 = (struct qpol_netifcon *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_netifcon_t_name" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (char *)qpol_netifcon_name(arg1,arg2); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_netifcon_t_msg_con(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_netifcon *arg1 = (struct qpol_netifcon *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_context_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_netifcon_t_msg_con",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_netifcon, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_netifcon_t_msg_con" "', argument " "1"" of type '" "struct qpol_netifcon *""'"); + } + arg1 = (struct qpol_netifcon *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_netifcon_t_msg_con" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_context_t *)qpol_netifcon_msg_con(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_context, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_netifcon_t_if_con(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_netifcon *arg1 = (struct qpol_netifcon *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_context_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_netifcon_t_if_con",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_netifcon, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_netifcon_t_if_con" "', argument " "1"" of type '" "struct qpol_netifcon *""'"); + } + arg1 = (struct qpol_netifcon *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_netifcon_t_if_con" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_context_t *)qpol_netifcon_if_con(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_context, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_netifcon_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_netifcon, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_qpol_netifcon_from_void(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + qpol_netifcon_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_netifcon_from_void",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_netifcon_from_void" "', argument " "1"" of type '" "void *""'"); + } + result = (qpol_netifcon_t *)qpol_netifcon_from_void(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_netifcon, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_qpol_nodecon_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + qpol_policy_t *arg1 = (qpol_policy_t *) 0 ; + int *arg2 ; + int *arg3 ; + int arg4 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + void *argp3 = 0 ; + int res3 = 0 ; + int val4 ; + int ecode4 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + struct qpol_nodecon *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOOO:new_qpol_nodecon_t",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_qpol_nodecon_t" "', argument " "1"" of type '" "qpol_policy_t *""'"); + } + arg1 = (qpol_policy_t *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_int, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_qpol_nodecon_t" "', argument " "2"" of type '" "int [4]""'"); + } + arg2 = (int *)(argp2); + res3 = SWIG_ConvertPtr(obj2, &argp3,SWIGTYPE_p_int, 0 | 0 ); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "new_qpol_nodecon_t" "', argument " "3"" of type '" "int [4]""'"); + } + arg3 = (int *)(argp3); + ecode4 = SWIG_AsVal_int(obj3, &val4); + if (!SWIG_IsOK(ecode4)) { + SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_qpol_nodecon_t" "', argument " "4"" of type '" "int""'"); + } + arg4 = (int)(val4); + result = (struct qpol_nodecon *)new_qpol_nodecon(arg1,arg2,arg3,arg4); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_nodecon, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_nodecon_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_nodecon *arg1 = (struct qpol_nodecon *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_nodecon_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_nodecon, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_nodecon_t" "', argument " "1"" of type '" "struct qpol_nodecon *""'"); + } + arg1 = (struct qpol_nodecon *)(argp1); + delete_qpol_nodecon(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_nodecon_t_addr(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_nodecon *arg1 = (struct qpol_nodecon *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_nodecon_t_addr",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_nodecon, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_nodecon_t_addr" "', argument " "1"" of type '" "struct qpol_nodecon *""'"); + } + arg1 = (struct qpol_nodecon *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_nodecon_t_addr" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (char *)qpol_nodecon_addr(arg1,arg2); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_nodecon_t_mask(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_nodecon *arg1 = (struct qpol_nodecon *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_nodecon_t_mask",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_nodecon, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_nodecon_t_mask" "', argument " "1"" of type '" "struct qpol_nodecon *""'"); + } + arg1 = (struct qpol_nodecon *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_nodecon_t_mask" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (char *)qpol_nodecon_mask(arg1,arg2); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_nodecon_t_protocol(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_nodecon *arg1 = (struct qpol_nodecon *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_nodecon_t_protocol",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_nodecon, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_nodecon_t_protocol" "', argument " "1"" of type '" "struct qpol_nodecon *""'"); + } + arg1 = (struct qpol_nodecon *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_nodecon_t_protocol" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (int)qpol_nodecon_protocol(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_nodecon_t_context(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_nodecon *arg1 = (struct qpol_nodecon *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_context_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_nodecon_t_context",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_nodecon, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_nodecon_t_context" "', argument " "1"" of type '" "struct qpol_nodecon *""'"); + } + arg1 = (struct qpol_nodecon *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_nodecon_t_context" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_context_t *)qpol_nodecon_context(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_context, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_nodecon_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_nodecon, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_qpol_nodecon_from_void(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + qpol_nodecon_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_nodecon_from_void",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_nodecon_from_void" "', argument " "1"" of type '" "void *""'"); + } + result = (qpol_nodecon_t *)qpol_nodecon_from_void(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_nodecon, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_qpol_portcon_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + qpol_policy_t *arg1 = (qpol_policy_t *) 0 ; + uint16_t arg2 ; + uint16_t arg3 ; + uint8_t arg4 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned short val2 ; + int ecode2 = 0 ; + unsigned short val3 ; + int ecode3 = 0 ; + unsigned char val4 ; + int ecode4 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + struct qpol_portcon *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOOO:new_qpol_portcon_t",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_qpol_portcon_t" "', argument " "1"" of type '" "qpol_policy_t *""'"); + } + arg1 = (qpol_policy_t *)(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_short(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_qpol_portcon_t" "', argument " "2"" of type '" "uint16_t""'"); + } + arg2 = (uint16_t)(val2); + ecode3 = SWIG_AsVal_unsigned_SS_short(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_qpol_portcon_t" "', argument " "3"" of type '" "uint16_t""'"); + } + arg3 = (uint16_t)(val3); + ecode4 = SWIG_AsVal_unsigned_SS_char(obj3, &val4); + if (!SWIG_IsOK(ecode4)) { + SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_qpol_portcon_t" "', argument " "4"" of type '" "uint8_t""'"); + } + arg4 = (uint8_t)(val4); + result = (struct qpol_portcon *)new_qpol_portcon(arg1,arg2,arg3,arg4); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_portcon, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_portcon_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_portcon *arg1 = (struct qpol_portcon *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_portcon_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_portcon, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_portcon_t" "', argument " "1"" of type '" "struct qpol_portcon *""'"); + } + arg1 = (struct qpol_portcon *)(argp1); + delete_qpol_portcon(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_portcon_t_low_port(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_portcon *arg1 = (struct qpol_portcon *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + uint16_t result; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_portcon_t_low_port",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_portcon, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_portcon_t_low_port" "', argument " "1"" of type '" "struct qpol_portcon *""'"); + } + arg1 = (struct qpol_portcon *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_portcon_t_low_port" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (uint16_t)qpol_portcon_low_port(arg1,arg2); + resultobj = SWIG_From_unsigned_SS_short((unsigned short)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_portcon_t_high_port(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_portcon *arg1 = (struct qpol_portcon *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + uint16_t result; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_portcon_t_high_port",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_portcon, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_portcon_t_high_port" "', argument " "1"" of type '" "struct qpol_portcon *""'"); + } + arg1 = (struct qpol_portcon *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_portcon_t_high_port" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (uint16_t)qpol_portcon_high_port(arg1,arg2); + resultobj = SWIG_From_unsigned_SS_short((unsigned short)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_portcon_t_protocol(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_portcon *arg1 = (struct qpol_portcon *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + uint8_t result; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_portcon_t_protocol",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_portcon, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_portcon_t_protocol" "', argument " "1"" of type '" "struct qpol_portcon *""'"); + } + arg1 = (struct qpol_portcon *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_portcon_t_protocol" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (uint8_t)qpol_portcon_protocol(arg1,arg2); + resultobj = SWIG_From_unsigned_SS_char((unsigned char)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_portcon_t_context(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_portcon *arg1 = (struct qpol_portcon *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_context_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_portcon_t_context",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_portcon, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_portcon_t_context" "', argument " "1"" of type '" "struct qpol_portcon *""'"); + } + arg1 = (struct qpol_portcon *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_portcon_t_context" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_context_t *)qpol_portcon_context(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_context, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_portcon_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_portcon, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_qpol_portcon_from_void(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + qpol_portcon_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_portcon_from_void",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_portcon_from_void" "', argument " "1"" of type '" "void *""'"); + } + result = (qpol_portcon_t *)qpol_portcon_from_void(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_portcon, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_qpol_constraint_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_constraint *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)":new_qpol_constraint_t")) SWIG_fail; + result = (struct qpol_constraint *)new_qpol_constraint(); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_constraint, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_constraint_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_constraint *arg1 = (struct qpol_constraint *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_constraint_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_constraint, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_constraint_t" "', argument " "1"" of type '" "struct qpol_constraint *""'"); + } + arg1 = (struct qpol_constraint *)(argp1); + delete_qpol_constraint(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_constraint_t_object_class(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_constraint *arg1 = (struct qpol_constraint *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_class_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_constraint_t_object_class",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_constraint, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_constraint_t_object_class" "', argument " "1"" of type '" "struct qpol_constraint *""'"); + } + arg1 = (struct qpol_constraint *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_constraint_t_object_class" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_class_t *)qpol_constraint_object_class(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_class, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_constraint_t_perm_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_constraint *arg1 = (struct qpol_constraint *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_constraint_t_perm_iter",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_constraint, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_constraint_t_perm_iter" "', argument " "1"" of type '" "struct qpol_constraint *""'"); + } + arg1 = (struct qpol_constraint *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_constraint_t_perm_iter" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_iterator_t *)qpol_constraint_perm_iter(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_constraint_t_expr_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_constraint *arg1 = (struct qpol_constraint *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_constraint_t_expr_iter",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_constraint, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_constraint_t_expr_iter" "', argument " "1"" of type '" "struct qpol_constraint *""'"); + } + arg1 = (struct qpol_constraint *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_constraint_t_expr_iter" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_iterator_t *)qpol_constraint_expr_iter(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_constraint_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_constraint, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_qpol_constraint_from_void(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + qpol_constraint_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_constraint_from_void",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_constraint_from_void" "', argument " "1"" of type '" "void *""'"); + } + result = (qpol_constraint_t *)qpol_constraint_from_void(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_constraint, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_qpol_validatetrans_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_validatetrans *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)":new_qpol_validatetrans_t")) SWIG_fail; + result = (struct qpol_validatetrans *)new_qpol_validatetrans(); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_validatetrans, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_validatetrans_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_validatetrans *arg1 = (struct qpol_validatetrans *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_validatetrans_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_validatetrans, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_validatetrans_t" "', argument " "1"" of type '" "struct qpol_validatetrans *""'"); + } + arg1 = (struct qpol_validatetrans *)(argp1); + delete_qpol_validatetrans(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_validatetrans_t_object_class(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_validatetrans *arg1 = (struct qpol_validatetrans *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_class_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_validatetrans_t_object_class",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_validatetrans, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_validatetrans_t_object_class" "', argument " "1"" of type '" "struct qpol_validatetrans *""'"); + } + arg1 = (struct qpol_validatetrans *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_validatetrans_t_object_class" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_class_t *)qpol_validatetrans_object_class(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_class, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_validatetrans_t_expr_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_validatetrans *arg1 = (struct qpol_validatetrans *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_validatetrans_t_expr_iter",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_validatetrans, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_validatetrans_t_expr_iter" "', argument " "1"" of type '" "struct qpol_validatetrans *""'"); + } + arg1 = (struct qpol_validatetrans *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_validatetrans_t_expr_iter" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_iterator_t *)qpol_validatetrans_expr_iter(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_validatetrans_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_validatetrans, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_qpol_validatetrans_from_void(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + qpol_validatetrans_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_validatetrans_from_void",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_validatetrans_from_void" "', argument " "1"" of type '" "void *""'"); + } + result = (qpol_validatetrans_t *)qpol_validatetrans_from_void(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_validatetrans, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_qpol_constraint_expr_node_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_constraint_expr_node *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)":new_qpol_constraint_expr_node_t")) SWIG_fail; + result = (struct qpol_constraint_expr_node *)new_qpol_constraint_expr_node(); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_constraint_expr_node, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_constraint_expr_node_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_constraint_expr_node *arg1 = (struct qpol_constraint_expr_node *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_constraint_expr_node_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_constraint_expr_node, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_constraint_expr_node_t" "', argument " "1"" of type '" "struct qpol_constraint_expr_node *""'"); + } + arg1 = (struct qpol_constraint_expr_node *)(argp1); + delete_qpol_constraint_expr_node(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_constraint_expr_node_t_expr_type(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_constraint_expr_node *arg1 = (struct qpol_constraint_expr_node *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_constraint_expr_node_t_expr_type",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_constraint_expr_node, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_constraint_expr_node_t_expr_type" "', argument " "1"" of type '" "struct qpol_constraint_expr_node *""'"); + } + arg1 = (struct qpol_constraint_expr_node *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_constraint_expr_node_t_expr_type" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (int)qpol_constraint_expr_node_expr_type(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_constraint_expr_node_t_sym_type(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_constraint_expr_node *arg1 = (struct qpol_constraint_expr_node *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_constraint_expr_node_t_sym_type",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_constraint_expr_node, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_constraint_expr_node_t_sym_type" "', argument " "1"" of type '" "struct qpol_constraint_expr_node *""'"); + } + arg1 = (struct qpol_constraint_expr_node *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_constraint_expr_node_t_sym_type" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (int)qpol_constraint_expr_node_sym_type(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_constraint_expr_node_t_op(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_constraint_expr_node *arg1 = (struct qpol_constraint_expr_node *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_constraint_expr_node_t_op",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_constraint_expr_node, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_constraint_expr_node_t_op" "', argument " "1"" of type '" "struct qpol_constraint_expr_node *""'"); + } + arg1 = (struct qpol_constraint_expr_node *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_constraint_expr_node_t_op" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (int)qpol_constraint_expr_node_op(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_constraint_expr_node_t_names_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_constraint_expr_node *arg1 = (struct qpol_constraint_expr_node *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_constraint_expr_node_t_names_iter",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_constraint_expr_node, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_constraint_expr_node_t_names_iter" "', argument " "1"" of type '" "struct qpol_constraint_expr_node *""'"); + } + arg1 = (struct qpol_constraint_expr_node *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_constraint_expr_node_t_names_iter" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_iterator_t *)qpol_constraint_expr_node_names_iter(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_constraint_expr_node_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_constraint_expr_node, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_qpol_constraint_expr_node_from_void(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + qpol_constraint_expr_node_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_constraint_expr_node_from_void",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_constraint_expr_node_from_void" "', argument " "1"" of type '" "void *""'"); + } + result = (qpol_constraint_expr_node_t *)qpol_constraint_expr_node_from_void(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_constraint_expr_node, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_qpol_role_allow_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_role_allow *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)":new_qpol_role_allow_t")) SWIG_fail; + result = (struct qpol_role_allow *)new_qpol_role_allow(); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_role_allow, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_role_allow_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_role_allow *arg1 = (struct qpol_role_allow *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_role_allow_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_role_allow, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_role_allow_t" "', argument " "1"" of type '" "struct qpol_role_allow *""'"); + } + arg1 = (struct qpol_role_allow *)(argp1); + delete_qpol_role_allow(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_role_allow_t_source_role(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_role_allow *arg1 = (struct qpol_role_allow *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_role_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_role_allow_t_source_role",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_role_allow, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_role_allow_t_source_role" "', argument " "1"" of type '" "struct qpol_role_allow *""'"); + } + arg1 = (struct qpol_role_allow *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_role_allow_t_source_role" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_role_t *)qpol_role_allow_source_role(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_role, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_role_allow_t_target_role(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_role_allow *arg1 = (struct qpol_role_allow *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_role_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_role_allow_t_target_role",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_role_allow, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_role_allow_t_target_role" "', argument " "1"" of type '" "struct qpol_role_allow *""'"); + } + arg1 = (struct qpol_role_allow *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_role_allow_t_target_role" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_role_t *)qpol_role_allow_target_role(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_role, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_role_allow_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_role_allow, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_qpol_role_allow_from_void(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + qpol_role_allow_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_role_allow_from_void",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_role_allow_from_void" "', argument " "1"" of type '" "void *""'"); + } + result = (qpol_role_allow_t *)qpol_role_allow_from_void(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_role_allow, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_qpol_role_trans_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_role_trans *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)":new_qpol_role_trans_t")) SWIG_fail; + result = (struct qpol_role_trans *)new_qpol_role_trans(); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_role_trans, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_role_trans_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_role_trans *arg1 = (struct qpol_role_trans *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_role_trans_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_role_trans, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_role_trans_t" "', argument " "1"" of type '" "struct qpol_role_trans *""'"); + } + arg1 = (struct qpol_role_trans *)(argp1); + delete_qpol_role_trans(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_role_trans_t_source_role(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_role_trans *arg1 = (struct qpol_role_trans *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_role_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_role_trans_t_source_role",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_role_trans, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_role_trans_t_source_role" "', argument " "1"" of type '" "struct qpol_role_trans *""'"); + } + arg1 = (struct qpol_role_trans *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_role_trans_t_source_role" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_role_t *)qpol_role_trans_source_role(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_role, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_role_trans_t_target_type(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_role_trans *arg1 = (struct qpol_role_trans *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_type_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_role_trans_t_target_type",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_role_trans, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_role_trans_t_target_type" "', argument " "1"" of type '" "struct qpol_role_trans *""'"); + } + arg1 = (struct qpol_role_trans *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_role_trans_t_target_type" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_type_t *)qpol_role_trans_target_type(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_type, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_role_trans_t_object_class(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_role_trans *arg1 = (struct qpol_role_trans *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_class_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_role_trans_t_object_class",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_role_trans, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_role_trans_t_object_class" "', argument " "1"" of type '" "struct qpol_role_trans *""'"); + } + arg1 = (struct qpol_role_trans *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_role_trans_t_object_class" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_class_t *)qpol_role_trans_object_class(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_class, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_role_trans_t_default_role(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_role_trans *arg1 = (struct qpol_role_trans *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_role_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_role_trans_t_default_role",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_role_trans, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_role_trans_t_default_role" "', argument " "1"" of type '" "struct qpol_role_trans *""'"); + } + arg1 = (struct qpol_role_trans *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_role_trans_t_default_role" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_role_t *)qpol_role_trans_default_role(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_role, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_role_trans_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_role_trans, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_qpol_role_trans_from_void(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + qpol_role_trans_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_role_trans_from_void",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_role_trans_from_void" "', argument " "1"" of type '" "void *""'"); + } + result = (qpol_role_trans_t *)qpol_role_trans_from_void(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_role_trans, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_qpol_range_trans_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_range_trans *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)":new_qpol_range_trans_t")) SWIG_fail; + result = (struct qpol_range_trans *)new_qpol_range_trans(); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_range_trans, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_range_trans_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_range_trans *arg1 = (struct qpol_range_trans *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_range_trans_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_range_trans, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_range_trans_t" "', argument " "1"" of type '" "struct qpol_range_trans *""'"); + } + arg1 = (struct qpol_range_trans *)(argp1); + delete_qpol_range_trans(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_range_trans_t_source_type(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_range_trans *arg1 = (struct qpol_range_trans *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_type_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_range_trans_t_source_type",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_range_trans, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_range_trans_t_source_type" "', argument " "1"" of type '" "struct qpol_range_trans *""'"); + } + arg1 = (struct qpol_range_trans *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_range_trans_t_source_type" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_type_t *)qpol_range_trans_source_type(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_type, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_range_trans_t_target_type(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_range_trans *arg1 = (struct qpol_range_trans *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_type_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_range_trans_t_target_type",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_range_trans, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_range_trans_t_target_type" "', argument " "1"" of type '" "struct qpol_range_trans *""'"); + } + arg1 = (struct qpol_range_trans *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_range_trans_t_target_type" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_type_t *)qpol_range_trans_target_type(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_type, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_range_trans_t_object_class(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_range_trans *arg1 = (struct qpol_range_trans *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_class_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_range_trans_t_object_class",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_range_trans, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_range_trans_t_object_class" "', argument " "1"" of type '" "struct qpol_range_trans *""'"); + } + arg1 = (struct qpol_range_trans *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_range_trans_t_object_class" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_class_t *)qpol_range_trans_object_class(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_class, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_range_trans_t_range(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_range_trans *arg1 = (struct qpol_range_trans *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_mls_range_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_range_trans_t_range",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_range_trans, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_range_trans_t_range" "', argument " "1"" of type '" "struct qpol_range_trans *""'"); + } + arg1 = (struct qpol_range_trans *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_range_trans_t_range" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_mls_range_t *)qpol_range_trans_range(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_mls_range, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_range_trans_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_range_trans, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_qpol_range_trans_from_void(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + qpol_range_trans_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_range_trans_from_void",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_range_trans_from_void" "', argument " "1"" of type '" "void *""'"); + } + result = (qpol_range_trans_t *)qpol_range_trans_from_void(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_range_trans, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_qpol_avrule_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_avrule *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)":new_qpol_avrule_t")) SWIG_fail; + result = (struct qpol_avrule *)new_qpol_avrule(); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_avrule, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_avrule_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_avrule *arg1 = (struct qpol_avrule *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_avrule_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_avrule, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_avrule_t" "', argument " "1"" of type '" "struct qpol_avrule *""'"); + } + arg1 = (struct qpol_avrule *)(argp1); + delete_qpol_avrule(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_avrule_t_rule_type(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_avrule *arg1 = (struct qpol_avrule *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_avrule_t_rule_type",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_avrule, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_avrule_t_rule_type" "', argument " "1"" of type '" "struct qpol_avrule *""'"); + } + arg1 = (struct qpol_avrule *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_avrule_t_rule_type" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (char *)qpol_avrule_rule_type(arg1,arg2); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_avrule_t_source_type(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_avrule *arg1 = (struct qpol_avrule *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_type_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_avrule_t_source_type",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_avrule, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_avrule_t_source_type" "', argument " "1"" of type '" "struct qpol_avrule *""'"); + } + arg1 = (struct qpol_avrule *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_avrule_t_source_type" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_type_t *)qpol_avrule_source_type(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_type, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_avrule_t_target_type(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_avrule *arg1 = (struct qpol_avrule *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_type_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_avrule_t_target_type",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_avrule, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_avrule_t_target_type" "', argument " "1"" of type '" "struct qpol_avrule *""'"); + } + arg1 = (struct qpol_avrule *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_avrule_t_target_type" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_type_t *)qpol_avrule_target_type(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_type, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_avrule_t_object_class(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_avrule *arg1 = (struct qpol_avrule *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_class_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_avrule_t_object_class",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_avrule, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_avrule_t_object_class" "', argument " "1"" of type '" "struct qpol_avrule *""'"); + } + arg1 = (struct qpol_avrule *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_avrule_t_object_class" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_class_t *)qpol_avrule_object_class(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_class, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_avrule_t_perm_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_avrule *arg1 = (struct qpol_avrule *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_avrule_t_perm_iter",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_avrule, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_avrule_t_perm_iter" "', argument " "1"" of type '" "struct qpol_avrule *""'"); + } + arg1 = (struct qpol_avrule *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_avrule_t_perm_iter" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_iterator_t *)qpol_avrule_perm_iter(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_avrule_t_xperm_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_avrule *arg1 = (struct qpol_avrule *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_avrule_t_xperm_iter",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_avrule, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_avrule_t_xperm_iter" "', argument " "1"" of type '" "struct qpol_avrule *""'"); + } + arg1 = (struct qpol_avrule *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_avrule_t_xperm_iter" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_iterator_t *)qpol_avrule_xperm_iter(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_avrule_t_is_extended(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_avrule *arg1 = (struct qpol_avrule *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_avrule_t_is_extended",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_avrule, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_avrule_t_is_extended" "', argument " "1"" of type '" "struct qpol_avrule *""'"); + } + arg1 = (struct qpol_avrule *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_avrule_t_is_extended" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (int)qpol_avrule_is_extended(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_avrule_t_xperm_type(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_avrule *arg1 = (struct qpol_avrule *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_avrule_t_xperm_type",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_avrule, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_avrule_t_xperm_type" "', argument " "1"" of type '" "struct qpol_avrule *""'"); + } + arg1 = (struct qpol_avrule *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_avrule_t_xperm_type" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (char *)qpol_avrule_xperm_type(arg1,arg2); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_avrule_t_cond(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_avrule *arg1 = (struct qpol_avrule *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_cond_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_avrule_t_cond",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_avrule, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_avrule_t_cond" "', argument " "1"" of type '" "struct qpol_avrule *""'"); + } + arg1 = (struct qpol_avrule *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_avrule_t_cond" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + { + result = (qpol_cond_t *)qpol_avrule_cond(arg1,arg2); + if (!result) { + PyErr_SetString(PyExc_AttributeError, "Rule is not conditional."); + return NULL; + } + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_cond, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_avrule_t_is_enabled(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_avrule *arg1 = (struct qpol_avrule *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_avrule_t_is_enabled",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_avrule, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_avrule_t_is_enabled" "', argument " "1"" of type '" "struct qpol_avrule *""'"); + } + arg1 = (struct qpol_avrule *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_avrule_t_is_enabled" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (int)qpol_avrule_is_enabled(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_avrule_t_which_list(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_avrule *arg1 = (struct qpol_avrule *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_avrule_t_which_list",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_avrule, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_avrule_t_which_list" "', argument " "1"" of type '" "struct qpol_avrule *""'"); + } + arg1 = (struct qpol_avrule *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_avrule_t_which_list" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + { + result = (int)qpol_avrule_which_list(arg1,arg2); + if (result < 0) { + PyErr_SetString(PyExc_AttributeError, "Rule is not conditional."); + return NULL; + } + } + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_avrule_t_syn_avrule_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_avrule *arg1 = (struct qpol_avrule *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_avrule_t_syn_avrule_iter",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_avrule, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_avrule_t_syn_avrule_iter" "', argument " "1"" of type '" "struct qpol_avrule *""'"); + } + arg1 = (struct qpol_avrule *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_avrule_t_syn_avrule_iter" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_iterator_t *)qpol_avrule_syn_avrule_iter(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_avrule_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_avrule, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_qpol_avrule_from_void(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + qpol_avrule_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_avrule_from_void",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_avrule_from_void" "', argument " "1"" of type '" "void *""'"); + } + result = (qpol_avrule_t *)qpol_avrule_from_void(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_avrule, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_qpol_terule_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_terule *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)":new_qpol_terule_t")) SWIG_fail; + result = (struct qpol_terule *)new_qpol_terule(); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_terule, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_terule_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_terule *arg1 = (struct qpol_terule *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_terule_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_terule, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_terule_t" "', argument " "1"" of type '" "struct qpol_terule *""'"); + } + arg1 = (struct qpol_terule *)(argp1); + delete_qpol_terule(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_terule_t_rule_type(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_terule *arg1 = (struct qpol_terule *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_terule_t_rule_type",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_terule, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_terule_t_rule_type" "', argument " "1"" of type '" "struct qpol_terule *""'"); + } + arg1 = (struct qpol_terule *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_terule_t_rule_type" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (char *)qpol_terule_rule_type(arg1,arg2); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_terule_t_source_type(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_terule *arg1 = (struct qpol_terule *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_type_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_terule_t_source_type",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_terule, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_terule_t_source_type" "', argument " "1"" of type '" "struct qpol_terule *""'"); + } + arg1 = (struct qpol_terule *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_terule_t_source_type" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_type_t *)qpol_terule_source_type(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_type, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_terule_t_target_type(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_terule *arg1 = (struct qpol_terule *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_type_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_terule_t_target_type",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_terule, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_terule_t_target_type" "', argument " "1"" of type '" "struct qpol_terule *""'"); + } + arg1 = (struct qpol_terule *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_terule_t_target_type" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_type_t *)qpol_terule_target_type(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_type, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_terule_t_object_class(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_terule *arg1 = (struct qpol_terule *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_class_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_terule_t_object_class",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_terule, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_terule_t_object_class" "', argument " "1"" of type '" "struct qpol_terule *""'"); + } + arg1 = (struct qpol_terule *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_terule_t_object_class" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_class_t *)qpol_terule_object_class(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_class, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_terule_t_default_type(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_terule *arg1 = (struct qpol_terule *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_type_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_terule_t_default_type",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_terule, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_terule_t_default_type" "', argument " "1"" of type '" "struct qpol_terule *""'"); + } + arg1 = (struct qpol_terule *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_terule_t_default_type" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_type_t *)qpol_terule_default_type(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_type, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_terule_t_cond(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_terule *arg1 = (struct qpol_terule *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_cond_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_terule_t_cond",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_terule, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_terule_t_cond" "', argument " "1"" of type '" "struct qpol_terule *""'"); + } + arg1 = (struct qpol_terule *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_terule_t_cond" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + { + result = (qpol_cond_t *)qpol_terule_cond(arg1,arg2); + if (!result) { + PyErr_SetString(PyExc_AttributeError, "Rule is not conditional."); + return NULL; + } + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_cond, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_terule_t_is_enabled(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_terule *arg1 = (struct qpol_terule *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_terule_t_is_enabled",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_terule, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_terule_t_is_enabled" "', argument " "1"" of type '" "struct qpol_terule *""'"); + } + arg1 = (struct qpol_terule *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_terule_t_is_enabled" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (int)qpol_terule_is_enabled(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_terule_t_which_list(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_terule *arg1 = (struct qpol_terule *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_terule_t_which_list",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_terule, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_terule_t_which_list" "', argument " "1"" of type '" "struct qpol_terule *""'"); + } + arg1 = (struct qpol_terule *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_terule_t_which_list" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + { + result = (int)qpol_terule_which_list(arg1,arg2); + if (result < 0) { + PyErr_SetString(PyExc_AttributeError, "Rule is not conditional."); + return NULL; + } + } + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_terule_t_syn_terule_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_terule *arg1 = (struct qpol_terule *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_terule_t_syn_terule_iter",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_terule, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_terule_t_syn_terule_iter" "', argument " "1"" of type '" "struct qpol_terule *""'"); + } + arg1 = (struct qpol_terule *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_terule_t_syn_terule_iter" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_iterator_t *)qpol_terule_syn_terule_iter(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_terule_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_terule, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_qpol_terule_from_void(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + qpol_terule_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_terule_from_void",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_terule_from_void" "', argument " "1"" of type '" "void *""'"); + } + result = (qpol_terule_t *)qpol_terule_from_void(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_terule, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_qpol_cond_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_cond *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)":new_qpol_cond_t")) SWIG_fail; + result = (struct qpol_cond *)new_qpol_cond(); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_cond, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_cond_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_cond *arg1 = (struct qpol_cond *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_cond_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_cond, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_cond_t" "', argument " "1"" of type '" "struct qpol_cond *""'"); + } + arg1 = (struct qpol_cond *)(argp1); + delete_qpol_cond(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_cond_t_expr_node_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_cond *arg1 = (struct qpol_cond *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_cond_t_expr_node_iter",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_cond, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_cond_t_expr_node_iter" "', argument " "1"" of type '" "struct qpol_cond *""'"); + } + arg1 = (struct qpol_cond *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_cond_t_expr_node_iter" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_iterator_t *)qpol_cond_expr_node_iter(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_cond_t_av_true_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_cond *arg1 = (struct qpol_cond *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + int arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + int val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOO:qpol_cond_t_av_true_iter",&obj0,&obj1,&obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_cond, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_cond_t_av_true_iter" "', argument " "1"" of type '" "struct qpol_cond *""'"); + } + arg1 = (struct qpol_cond *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_cond_t_av_true_iter" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "qpol_cond_t_av_true_iter" "', argument " "3"" of type '" "int""'"); + } + arg3 = (int)(val3); + result = (qpol_iterator_t *)qpol_cond_av_true_iter(arg1,arg2,arg3); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_cond_t_av_false_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_cond *arg1 = (struct qpol_cond *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + int arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + int val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOO:qpol_cond_t_av_false_iter",&obj0,&obj1,&obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_cond, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_cond_t_av_false_iter" "', argument " "1"" of type '" "struct qpol_cond *""'"); + } + arg1 = (struct qpol_cond *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_cond_t_av_false_iter" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "qpol_cond_t_av_false_iter" "', argument " "3"" of type '" "int""'"); + } + arg3 = (int)(val3); + result = (qpol_iterator_t *)qpol_cond_av_false_iter(arg1,arg2,arg3); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_cond_t_te_true_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_cond *arg1 = (struct qpol_cond *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + int arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + int val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOO:qpol_cond_t_te_true_iter",&obj0,&obj1,&obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_cond, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_cond_t_te_true_iter" "', argument " "1"" of type '" "struct qpol_cond *""'"); + } + arg1 = (struct qpol_cond *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_cond_t_te_true_iter" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "qpol_cond_t_te_true_iter" "', argument " "3"" of type '" "int""'"); + } + arg3 = (int)(val3); + result = (qpol_iterator_t *)qpol_cond_te_true_iter(arg1,arg2,arg3); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_cond_t_te_false_iter(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_cond *arg1 = (struct qpol_cond *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + int arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + int val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + qpol_iterator_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOO:qpol_cond_t_te_false_iter",&obj0,&obj1,&obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_cond, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_cond_t_te_false_iter" "', argument " "1"" of type '" "struct qpol_cond *""'"); + } + arg1 = (struct qpol_cond *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_cond_t_te_false_iter" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "qpol_cond_t_te_false_iter" "', argument " "3"" of type '" "int""'"); + } + arg3 = (int)(val3); + result = (qpol_iterator_t *)qpol_cond_te_false_iter(arg1,arg2,arg3); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iterator, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_cond_t_evaluate(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_cond *arg1 = (struct qpol_cond *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_cond_t_evaluate",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_cond, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_cond_t_evaluate" "', argument " "1"" of type '" "struct qpol_cond *""'"); + } + arg1 = (struct qpol_cond *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_cond_t_evaluate" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (int)qpol_cond_evaluate(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_cond_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_cond, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_qpol_cond_from_void(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + qpol_cond_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_cond_from_void",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_cond_from_void" "', argument " "1"" of type '" "void *""'"); + } + result = (qpol_cond_t *)qpol_cond_from_void(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_cond, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_qpol_cond_expr_node_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_cond_expr_node *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)":new_qpol_cond_expr_node_t")) SWIG_fail; + result = (struct qpol_cond_expr_node *)new_qpol_cond_expr_node(); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_cond_expr_node, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_cond_expr_node_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_cond_expr_node *arg1 = (struct qpol_cond_expr_node *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_cond_expr_node_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_cond_expr_node, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_cond_expr_node_t" "', argument " "1"" of type '" "struct qpol_cond_expr_node *""'"); + } + arg1 = (struct qpol_cond_expr_node *)(argp1); + delete_qpol_cond_expr_node(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_cond_expr_node_t_expr_type(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_cond_expr_node *arg1 = (struct qpol_cond_expr_node *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_cond_expr_node_t_expr_type",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_cond_expr_node, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_cond_expr_node_t_expr_type" "', argument " "1"" of type '" "struct qpol_cond_expr_node *""'"); + } + arg1 = (struct qpol_cond_expr_node *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_cond_expr_node_t_expr_type" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (int)qpol_cond_expr_node_expr_type(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_cond_expr_node_t_get_boolean(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_cond_expr_node *arg1 = (struct qpol_cond_expr_node *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_bool_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_cond_expr_node_t_get_boolean",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_cond_expr_node, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_cond_expr_node_t_get_boolean" "', argument " "1"" of type '" "struct qpol_cond_expr_node *""'"); + } + arg1 = (struct qpol_cond_expr_node *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_cond_expr_node_t_get_boolean" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_bool_t *)qpol_cond_expr_node_get_boolean(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_bool, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_cond_expr_node_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_cond_expr_node, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_qpol_cond_expr_node_from_void(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + qpol_cond_expr_node_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_cond_expr_node_from_void",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_cond_expr_node_from_void" "', argument " "1"" of type '" "void *""'"); + } + result = (qpol_cond_expr_node_t *)qpol_cond_expr_node_from_void(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_cond_expr_node, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_qpol_filename_trans_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_filename_trans *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)":new_qpol_filename_trans_t")) SWIG_fail; + result = (struct qpol_filename_trans *)new_qpol_filename_trans(); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_filename_trans, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_filename_trans_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_filename_trans *arg1 = (struct qpol_filename_trans *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_filename_trans_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_filename_trans, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_filename_trans_t" "', argument " "1"" of type '" "struct qpol_filename_trans *""'"); + } + arg1 = (struct qpol_filename_trans *)(argp1); + delete_qpol_filename_trans(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_filename_trans_t_source_type(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_filename_trans *arg1 = (struct qpol_filename_trans *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_type_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_filename_trans_t_source_type",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_filename_trans, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_filename_trans_t_source_type" "', argument " "1"" of type '" "struct qpol_filename_trans *""'"); + } + arg1 = (struct qpol_filename_trans *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_filename_trans_t_source_type" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_type_t *)qpol_filename_trans_source_type(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_type, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_filename_trans_t_target_type(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_filename_trans *arg1 = (struct qpol_filename_trans *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_type_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_filename_trans_t_target_type",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_filename_trans, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_filename_trans_t_target_type" "', argument " "1"" of type '" "struct qpol_filename_trans *""'"); + } + arg1 = (struct qpol_filename_trans *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_filename_trans_t_target_type" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_type_t *)qpol_filename_trans_target_type(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_type, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_filename_trans_t_object_class(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_filename_trans *arg1 = (struct qpol_filename_trans *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_class_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_filename_trans_t_object_class",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_filename_trans, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_filename_trans_t_object_class" "', argument " "1"" of type '" "struct qpol_filename_trans *""'"); + } + arg1 = (struct qpol_filename_trans *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_filename_trans_t_object_class" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_class_t *)qpol_filename_trans_object_class(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_class, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_filename_trans_t_default_type(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_filename_trans *arg1 = (struct qpol_filename_trans *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_type_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_filename_trans_t_default_type",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_filename_trans, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_filename_trans_t_default_type" "', argument " "1"" of type '" "struct qpol_filename_trans *""'"); + } + arg1 = (struct qpol_filename_trans *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_filename_trans_t_default_type" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_type_t *)qpol_filename_trans_default_type(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_type, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_filename_trans_t_filename(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_filename_trans *arg1 = (struct qpol_filename_trans *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_filename_trans_t_filename",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_filename_trans, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_filename_trans_t_filename" "', argument " "1"" of type '" "struct qpol_filename_trans *""'"); + } + arg1 = (struct qpol_filename_trans *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_filename_trans_t_filename" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (char *)qpol_filename_trans_filename(arg1,arg2); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_filename_trans_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_filename_trans, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_qpol_filename_trans_from_void(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + qpol_filename_trans_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_filename_trans_from_void",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_filename_trans_from_void" "', argument " "1"" of type '" "void *""'"); + } + result = (qpol_filename_trans_t *)qpol_filename_trans_from_void(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_filename_trans, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_qpol_polcap_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_polcap *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)":new_qpol_polcap_t")) SWIG_fail; + result = (struct qpol_polcap *)new_qpol_polcap(); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_polcap, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_polcap_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_polcap *arg1 = (struct qpol_polcap *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_polcap_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_polcap, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_polcap_t" "', argument " "1"" of type '" "struct qpol_polcap *""'"); + } + arg1 = (struct qpol_polcap *)(argp1); + delete_qpol_polcap(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_polcap_t_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_polcap *arg1 = (struct qpol_polcap *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_polcap_t_name",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_polcap, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_polcap_t_name" "', argument " "1"" of type '" "struct qpol_polcap *""'"); + } + arg1 = (struct qpol_polcap *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_polcap_t_name" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (char *)qpol_polcap_name(arg1,arg2); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_polcap_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_polcap, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_qpol_polcap_from_void(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + qpol_polcap_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_polcap_from_void",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_polcap_from_void" "', argument " "1"" of type '" "void *""'"); + } + result = (qpol_polcap_t *)qpol_polcap_from_void(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_polcap, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_qpol_typebounds_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_typebounds *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)":new_qpol_typebounds_t")) SWIG_fail; + result = (struct qpol_typebounds *)new_qpol_typebounds(); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_typebounds, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_typebounds_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_typebounds *arg1 = (struct qpol_typebounds *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_typebounds_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_typebounds, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_typebounds_t" "', argument " "1"" of type '" "struct qpol_typebounds *""'"); + } + arg1 = (struct qpol_typebounds *)(argp1); + delete_qpol_typebounds(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_typebounds_t_parent_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_typebounds *arg1 = (struct qpol_typebounds *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_typebounds_t_parent_name",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_typebounds, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_typebounds_t_parent_name" "', argument " "1"" of type '" "struct qpol_typebounds *""'"); + } + arg1 = (struct qpol_typebounds *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_typebounds_t_parent_name" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (char *)qpol_typebounds_parent_name(arg1,arg2); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_typebounds_t_child_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_typebounds *arg1 = (struct qpol_typebounds *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_typebounds_t_child_name",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_typebounds, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_typebounds_t_child_name" "', argument " "1"" of type '" "struct qpol_typebounds *""'"); + } + arg1 = (struct qpol_typebounds *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_typebounds_t_child_name" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (char *)qpol_typebounds_child_name(arg1,arg2); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_typebounds_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_typebounds, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_qpol_typebounds_from_void(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + qpol_typebounds_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_typebounds_from_void",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_typebounds_from_void" "', argument " "1"" of type '" "void *""'"); + } + result = (qpol_typebounds_t *)qpol_typebounds_from_void(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_typebounds, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_qpol_rolebounds_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_rolebounds *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)":new_qpol_rolebounds_t")) SWIG_fail; + result = (struct qpol_rolebounds *)new_qpol_rolebounds(); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_rolebounds, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_rolebounds_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_rolebounds *arg1 = (struct qpol_rolebounds *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_rolebounds_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_rolebounds, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_rolebounds_t" "', argument " "1"" of type '" "struct qpol_rolebounds *""'"); + } + arg1 = (struct qpol_rolebounds *)(argp1); + delete_qpol_rolebounds(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_rolebounds_t_parent_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_rolebounds *arg1 = (struct qpol_rolebounds *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_rolebounds_t_parent_name",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_rolebounds, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_rolebounds_t_parent_name" "', argument " "1"" of type '" "struct qpol_rolebounds *""'"); + } + arg1 = (struct qpol_rolebounds *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_rolebounds_t_parent_name" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (char *)qpol_rolebounds_parent_name(arg1,arg2); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_rolebounds_t_child_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_rolebounds *arg1 = (struct qpol_rolebounds *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_rolebounds_t_child_name",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_rolebounds, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_rolebounds_t_child_name" "', argument " "1"" of type '" "struct qpol_rolebounds *""'"); + } + arg1 = (struct qpol_rolebounds *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_rolebounds_t_child_name" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (char *)qpol_rolebounds_child_name(arg1,arg2); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_rolebounds_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_rolebounds, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_qpol_rolebounds_from_void(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + qpol_rolebounds_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_rolebounds_from_void",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_rolebounds_from_void" "', argument " "1"" of type '" "void *""'"); + } + result = (qpol_rolebounds_t *)qpol_rolebounds_from_void(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_rolebounds, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_qpol_userbounds_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_userbounds *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)":new_qpol_userbounds_t")) SWIG_fail; + result = (struct qpol_userbounds *)new_qpol_userbounds(); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_userbounds, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_userbounds_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_userbounds *arg1 = (struct qpol_userbounds *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_userbounds_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_userbounds, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_userbounds_t" "', argument " "1"" of type '" "struct qpol_userbounds *""'"); + } + arg1 = (struct qpol_userbounds *)(argp1); + delete_qpol_userbounds(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_userbounds_t_parent_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_userbounds *arg1 = (struct qpol_userbounds *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_userbounds_t_parent_name",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_userbounds, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_userbounds_t_parent_name" "', argument " "1"" of type '" "struct qpol_userbounds *""'"); + } + arg1 = (struct qpol_userbounds *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_userbounds_t_parent_name" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (char *)qpol_userbounds_parent_name(arg1,arg2); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_userbounds_t_child_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_userbounds *arg1 = (struct qpol_userbounds *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_userbounds_t_child_name",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_userbounds, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_userbounds_t_child_name" "', argument " "1"" of type '" "struct qpol_userbounds *""'"); + } + arg1 = (struct qpol_userbounds *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_userbounds_t_child_name" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (char *)qpol_userbounds_child_name(arg1,arg2); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_userbounds_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_userbounds, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_qpol_userbounds_from_void(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + qpol_userbounds_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_userbounds_from_void",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_userbounds_from_void" "', argument " "1"" of type '" "void *""'"); + } + result = (qpol_userbounds_t *)qpol_userbounds_from_void(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_userbounds, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_qpol_default_object_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_default_object *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)":new_qpol_default_object_t")) SWIG_fail; + result = (struct qpol_default_object *)new_qpol_default_object(); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_default_object, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_default_object_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_default_object *arg1 = (struct qpol_default_object *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_default_object_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_default_object, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_default_object_t" "', argument " "1"" of type '" "struct qpol_default_object *""'"); + } + arg1 = (struct qpol_default_object *)(argp1); + delete_qpol_default_object(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_default_object_t_object_class(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_default_object *arg1 = (struct qpol_default_object *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_class_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_default_object_t_object_class",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_default_object, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_default_object_t_object_class" "', argument " "1"" of type '" "struct qpol_default_object *""'"); + } + arg1 = (struct qpol_default_object *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_default_object_t_object_class" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_class_t *)qpol_default_object_object_class(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_class, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_default_object_t_user_default(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_default_object *arg1 = (struct qpol_default_object *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_default_object_t_user_default",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_default_object, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_default_object_t_user_default" "', argument " "1"" of type '" "struct qpol_default_object *""'"); + } + arg1 = (struct qpol_default_object *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_default_object_t_user_default" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (char *)qpol_default_object_user_default(arg1,arg2); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_default_object_t_role_default(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_default_object *arg1 = (struct qpol_default_object *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_default_object_t_role_default",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_default_object, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_default_object_t_role_default" "', argument " "1"" of type '" "struct qpol_default_object *""'"); + } + arg1 = (struct qpol_default_object *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_default_object_t_role_default" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (char *)qpol_default_object_role_default(arg1,arg2); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_default_object_t_type_default(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_default_object *arg1 = (struct qpol_default_object *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_default_object_t_type_default",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_default_object, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_default_object_t_type_default" "', argument " "1"" of type '" "struct qpol_default_object *""'"); + } + arg1 = (struct qpol_default_object *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_default_object_t_type_default" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (char *)qpol_default_object_type_default(arg1,arg2); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_default_object_t_range_default(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_default_object *arg1 = (struct qpol_default_object *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_default_object_t_range_default",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_default_object, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_default_object_t_range_default" "', argument " "1"" of type '" "struct qpol_default_object *""'"); + } + arg1 = (struct qpol_default_object *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_default_object_t_range_default" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (char *)qpol_default_object_range_default(arg1,arg2); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_default_object_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_default_object, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_qpol_default_object_from_void(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + qpol_default_object_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_default_object_from_void",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_default_object_from_void" "', argument " "1"" of type '" "void *""'"); + } + result = (qpol_default_object_t *)qpol_default_object_from_void(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_default_object, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_qpol_iomemcon_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + qpol_policy_t *arg1 = (qpol_policy_t *) 0 ; + uint64_t arg2 ; + uint64_t arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned long long val2 ; + int ecode2 = 0 ; + unsigned long long val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + struct qpol_iomemcon *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOO:new_qpol_iomemcon_t",&obj0,&obj1,&obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_qpol_iomemcon_t" "', argument " "1"" of type '" "qpol_policy_t *""'"); + } + arg1 = (qpol_policy_t *)(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_long_SS_long(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_qpol_iomemcon_t" "', argument " "2"" of type '" "uint64_t""'"); + } + arg2 = (uint64_t)(val2); + ecode3 = SWIG_AsVal_unsigned_SS_long_SS_long(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_qpol_iomemcon_t" "', argument " "3"" of type '" "uint64_t""'"); + } + arg3 = (uint64_t)(val3); + result = (struct qpol_iomemcon *)new_qpol_iomemcon(arg1,arg2,arg3); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iomemcon, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_iomemcon_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_iomemcon *arg1 = (struct qpol_iomemcon *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_iomemcon_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_iomemcon, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_iomemcon_t" "', argument " "1"" of type '" "struct qpol_iomemcon *""'"); + } + arg1 = (struct qpol_iomemcon *)(argp1); + delete_qpol_iomemcon(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_iomemcon_t_low_addr(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_iomemcon *arg1 = (struct qpol_iomemcon *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + uint64_t result; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_iomemcon_t_low_addr",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_iomemcon, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_iomemcon_t_low_addr" "', argument " "1"" of type '" "struct qpol_iomemcon *""'"); + } + arg1 = (struct qpol_iomemcon *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_iomemcon_t_low_addr" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (uint64_t)qpol_iomemcon_low_addr(arg1,arg2); + resultobj = SWIG_From_unsigned_SS_long_SS_long((unsigned long long)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_iomemcon_t_high_addr(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_iomemcon *arg1 = (struct qpol_iomemcon *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + uint64_t result; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_iomemcon_t_high_addr",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_iomemcon, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_iomemcon_t_high_addr" "', argument " "1"" of type '" "struct qpol_iomemcon *""'"); + } + arg1 = (struct qpol_iomemcon *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_iomemcon_t_high_addr" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (uint64_t)qpol_iomemcon_high_addr(arg1,arg2); + resultobj = SWIG_From_unsigned_SS_long_SS_long((unsigned long long)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_iomemcon_t_context(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_iomemcon *arg1 = (struct qpol_iomemcon *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_context_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_iomemcon_t_context",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_iomemcon, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_iomemcon_t_context" "', argument " "1"" of type '" "struct qpol_iomemcon *""'"); + } + arg1 = (struct qpol_iomemcon *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_iomemcon_t_context" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_context_t *)qpol_iomemcon_context(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_context, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_iomemcon_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_iomemcon, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_qpol_iomemcon_from_void(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + qpol_iomemcon_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_iomemcon_from_void",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_iomemcon_from_void" "', argument " "1"" of type '" "void *""'"); + } + result = (qpol_iomemcon_t *)qpol_iomemcon_from_void(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_iomemcon, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_qpol_ioportcon_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + qpol_policy_t *arg1 = (qpol_policy_t *) 0 ; + uint32_t arg2 ; + uint32_t arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + unsigned int val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + struct qpol_ioportcon *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOO:new_qpol_ioportcon_t",&obj0,&obj1,&obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_qpol_ioportcon_t" "', argument " "1"" of type '" "qpol_policy_t *""'"); + } + arg1 = (qpol_policy_t *)(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_qpol_ioportcon_t" "', argument " "2"" of type '" "uint32_t""'"); + } + arg2 = (uint32_t)(val2); + ecode3 = SWIG_AsVal_unsigned_SS_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_qpol_ioportcon_t" "', argument " "3"" of type '" "uint32_t""'"); + } + arg3 = (uint32_t)(val3); + result = (struct qpol_ioportcon *)new_qpol_ioportcon(arg1,arg2,arg3); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_ioportcon, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_ioportcon_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_ioportcon *arg1 = (struct qpol_ioportcon *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_ioportcon_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_ioportcon, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_ioportcon_t" "', argument " "1"" of type '" "struct qpol_ioportcon *""'"); + } + arg1 = (struct qpol_ioportcon *)(argp1); + delete_qpol_ioportcon(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_ioportcon_t_low_port(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_ioportcon *arg1 = (struct qpol_ioportcon *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + uint32_t result; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_ioportcon_t_low_port",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_ioportcon, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_ioportcon_t_low_port" "', argument " "1"" of type '" "struct qpol_ioportcon *""'"); + } + arg1 = (struct qpol_ioportcon *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_ioportcon_t_low_port" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (uint32_t)qpol_ioportcon_low_port(arg1,arg2); + resultobj = SWIG_From_unsigned_SS_int((unsigned int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_ioportcon_t_high_port(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_ioportcon *arg1 = (struct qpol_ioportcon *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + uint32_t result; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_ioportcon_t_high_port",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_ioportcon, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_ioportcon_t_high_port" "', argument " "1"" of type '" "struct qpol_ioportcon *""'"); + } + arg1 = (struct qpol_ioportcon *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_ioportcon_t_high_port" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (uint32_t)qpol_ioportcon_high_port(arg1,arg2); + resultobj = SWIG_From_unsigned_SS_int((unsigned int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_ioportcon_t_context(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_ioportcon *arg1 = (struct qpol_ioportcon *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_context_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_ioportcon_t_context",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_ioportcon, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_ioportcon_t_context" "', argument " "1"" of type '" "struct qpol_ioportcon *""'"); + } + arg1 = (struct qpol_ioportcon *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_ioportcon_t_context" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_context_t *)qpol_ioportcon_context(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_context, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_ioportcon_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_ioportcon, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_qpol_ioportcon_from_void(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + qpol_ioportcon_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_ioportcon_from_void",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_ioportcon_from_void" "', argument " "1"" of type '" "void *""'"); + } + result = (qpol_ioportcon_t *)qpol_ioportcon_from_void(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_ioportcon, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_qpol_pcidevicecon_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_pcidevicecon *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)":new_qpol_pcidevicecon_t")) SWIG_fail; + result = (struct qpol_pcidevicecon *)new_qpol_pcidevicecon(); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_pcidevicecon, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_pcidevicecon_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_pcidevicecon *arg1 = (struct qpol_pcidevicecon *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_pcidevicecon_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_pcidevicecon, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_pcidevicecon_t" "', argument " "1"" of type '" "struct qpol_pcidevicecon *""'"); + } + arg1 = (struct qpol_pcidevicecon *)(argp1); + delete_qpol_pcidevicecon(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_pcidevicecon_t_device(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_pcidevicecon *arg1 = (struct qpol_pcidevicecon *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + uint32_t result; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_pcidevicecon_t_device",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_pcidevicecon, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_pcidevicecon_t_device" "', argument " "1"" of type '" "struct qpol_pcidevicecon *""'"); + } + arg1 = (struct qpol_pcidevicecon *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_pcidevicecon_t_device" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (uint32_t)qpol_pcidevicecon_device(arg1,arg2); + resultobj = SWIG_From_unsigned_SS_int((unsigned int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_pcidevicecon_t_context(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_pcidevicecon *arg1 = (struct qpol_pcidevicecon *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_context_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_pcidevicecon_t_context",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_pcidevicecon, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_pcidevicecon_t_context" "', argument " "1"" of type '" "struct qpol_pcidevicecon *""'"); + } + arg1 = (struct qpol_pcidevicecon *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_pcidevicecon_t_context" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_context_t *)qpol_pcidevicecon_context(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_context, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_pcidevicecon_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_pcidevicecon, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_qpol_pcidevicecon_from_void(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + qpol_pcidevicecon_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_pcidevicecon_from_void",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_pcidevicecon_from_void" "', argument " "1"" of type '" "void *""'"); + } + result = (qpol_pcidevicecon_t *)qpol_pcidevicecon_from_void(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_pcidevicecon, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_qpol_pirqcon_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_pirqcon *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)":new_qpol_pirqcon_t")) SWIG_fail; + result = (struct qpol_pirqcon *)new_qpol_pirqcon(); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_pirqcon, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_pirqcon_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_pirqcon *arg1 = (struct qpol_pirqcon *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_pirqcon_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_pirqcon, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_pirqcon_t" "', argument " "1"" of type '" "struct qpol_pirqcon *""'"); + } + arg1 = (struct qpol_pirqcon *)(argp1); + delete_qpol_pirqcon(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_pirqcon_t_irq(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_pirqcon *arg1 = (struct qpol_pirqcon *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + uint32_t result; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_pirqcon_t_irq",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_pirqcon, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_pirqcon_t_irq" "', argument " "1"" of type '" "struct qpol_pirqcon *""'"); + } + arg1 = (struct qpol_pirqcon *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_pirqcon_t_irq" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (uint32_t)qpol_pirqcon_irq(arg1,arg2); + resultobj = SWIG_From_unsigned_SS_int((unsigned int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_pirqcon_t_context(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_pirqcon *arg1 = (struct qpol_pirqcon *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_context_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_pirqcon_t_context",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_pirqcon, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_pirqcon_t_context" "', argument " "1"" of type '" "struct qpol_pirqcon *""'"); + } + arg1 = (struct qpol_pirqcon *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_pirqcon_t_context" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_context_t *)qpol_pirqcon_context(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_context, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_pirqcon_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_pirqcon, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_qpol_pirqcon_from_void(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + qpol_pirqcon_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_pirqcon_from_void",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_pirqcon_from_void" "', argument " "1"" of type '" "void *""'"); + } + result = (qpol_pirqcon_t *)qpol_pirqcon_from_void(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_pirqcon, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_qpol_devicetreecon_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_devicetreecon *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)":new_qpol_devicetreecon_t")) SWIG_fail; + result = (struct qpol_devicetreecon *)new_qpol_devicetreecon(); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_devicetreecon, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_devicetreecon_t_path(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_devicetreecon *arg1 = (struct qpol_devicetreecon *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_devicetreecon_t_path",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_devicetreecon, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_devicetreecon_t_path" "', argument " "1"" of type '" "struct qpol_devicetreecon *""'"); + } + arg1 = (struct qpol_devicetreecon *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_devicetreecon_t_path" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (char *)qpol_devicetreecon_path(arg1,arg2); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_qpol_devicetreecon_t_context(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_devicetreecon *arg1 = (struct qpol_devicetreecon *) 0 ; + qpol_policy_t *arg2 = (qpol_policy_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + qpol_context_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:qpol_devicetreecon_t_context",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_devicetreecon, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_devicetreecon_t_context" "', argument " "1"" of type '" "struct qpol_devicetreecon *""'"); + } + arg1 = (struct qpol_devicetreecon *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_qpol_policy, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "qpol_devicetreecon_t_context" "', argument " "2"" of type '" "qpol_policy_t *""'"); + } + arg2 = (qpol_policy_t *)(argp2); + result = (qpol_context_t *)qpol_devicetreecon_context(arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_context, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_qpol_devicetreecon_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct qpol_devicetreecon *arg1 = (struct qpol_devicetreecon *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_qpol_devicetreecon_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_qpol_devicetreecon, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_qpol_devicetreecon_t" "', argument " "1"" of type '" "struct qpol_devicetreecon *""'"); + } + arg1 = (struct qpol_devicetreecon *)(argp1); + free((char *) arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *qpol_devicetreecon_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_qpol_devicetreecon, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_qpol_devicetreecon_from_void(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + int res1 ; + PyObject * obj0 = 0 ; + qpol_devicetreecon_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:qpol_devicetreecon_from_void",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "qpol_devicetreecon_from_void" "', argument " "1"" of type '" "void *""'"); + } + result = (qpol_devicetreecon_t *)qpol_devicetreecon_from_void(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_qpol_devicetreecon, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +static PyMethodDef SwigMethods[] = { + { (char *)"SWIG_PyInstanceMethod_New", (PyCFunction)SWIG_PyInstanceMethod_New, METH_O, NULL}, + { (char *)"to_str", _wrap_to_str, METH_VARARGS, NULL}, + { (char *)"to_int_with_free", _wrap_to_int_with_free, METH_VARARGS, NULL}, + { (char *)"new_qpol_policy_t", _wrap_new_qpol_policy_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_policy_t", _wrap_delete_qpol_policy_t, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_version", _wrap_qpol_policy_t_version, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_handle_unknown", _wrap_qpol_policy_t_handle_unknown, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_target_platform", _wrap_qpol_policy_t_target_platform, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_capability", _wrap_qpol_policy_t_capability, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_type_iter", _wrap_qpol_policy_t_type_iter, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_type_count", _wrap_qpol_policy_t_type_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_role_iter", _wrap_qpol_policy_t_role_iter, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_role_count", _wrap_qpol_policy_t_role_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_level_iter", _wrap_qpol_policy_t_level_iter, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_level_count", _wrap_qpol_policy_t_level_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_cat_iter", _wrap_qpol_policy_t_cat_iter, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_cat_count", _wrap_qpol_policy_t_cat_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_user_iter", _wrap_qpol_policy_t_user_iter, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_user_count", _wrap_qpol_policy_t_user_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_bool_iter", _wrap_qpol_policy_t_bool_iter, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_bool_count", _wrap_qpol_policy_t_bool_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_class_iter", _wrap_qpol_policy_t_class_iter, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_class_count", _wrap_qpol_policy_t_class_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_common_iter", _wrap_qpol_policy_t_common_iter, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_common_count", _wrap_qpol_policy_t_common_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_fs_use_iter", _wrap_qpol_policy_t_fs_use_iter, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_fs_use_count", _wrap_qpol_policy_t_fs_use_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_genfscon_iter", _wrap_qpol_policy_t_genfscon_iter, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_genfscon_count", _wrap_qpol_policy_t_genfscon_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_isid_iter", _wrap_qpol_policy_t_isid_iter, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_isid_count", _wrap_qpol_policy_t_isid_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_netifcon_iter", _wrap_qpol_policy_t_netifcon_iter, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_netifcon_count", _wrap_qpol_policy_t_netifcon_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_nodecon_iter", _wrap_qpol_policy_t_nodecon_iter, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_nodecon_count", _wrap_qpol_policy_t_nodecon_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_portcon_iter", _wrap_qpol_policy_t_portcon_iter, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_portcon_count", _wrap_qpol_policy_t_portcon_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_constraint_iter", _wrap_qpol_policy_t_constraint_iter, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_constraint_count", _wrap_qpol_policy_t_constraint_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_validatetrans_iter", _wrap_qpol_policy_t_validatetrans_iter, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_validatetrans_count", _wrap_qpol_policy_t_validatetrans_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_role_allow_iter", _wrap_qpol_policy_t_role_allow_iter, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_role_allow_count", _wrap_qpol_policy_t_role_allow_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_role_trans_iter", _wrap_qpol_policy_t_role_trans_iter, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_role_trans_count", _wrap_qpol_policy_t_role_trans_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_range_trans_iter", _wrap_qpol_policy_t_range_trans_iter, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_range_trans_count", _wrap_qpol_policy_t_range_trans_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_avrule_iter", _wrap_qpol_policy_t_avrule_iter, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_avrule_allow_count", _wrap_qpol_policy_t_avrule_allow_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_avrule_auditallow_count", _wrap_qpol_policy_t_avrule_auditallow_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_avrule_neverallow_count", _wrap_qpol_policy_t_avrule_neverallow_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_avrule_dontaudit_count", _wrap_qpol_policy_t_avrule_dontaudit_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_avrulex_iter", _wrap_qpol_policy_t_avrulex_iter, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_avrule_allowx_count", _wrap_qpol_policy_t_avrule_allowx_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_avrule_auditallowx_count", _wrap_qpol_policy_t_avrule_auditallowx_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_avrule_neverallowx_count", _wrap_qpol_policy_t_avrule_neverallowx_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_avrule_dontauditx_count", _wrap_qpol_policy_t_avrule_dontauditx_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_terule_iter", _wrap_qpol_policy_t_terule_iter, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_terule_trans_count", _wrap_qpol_policy_t_terule_trans_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_terule_change_count", _wrap_qpol_policy_t_terule_change_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_terule_member_count", _wrap_qpol_policy_t_terule_member_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_cond_iter", _wrap_qpol_policy_t_cond_iter, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_cond_count", _wrap_qpol_policy_t_cond_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_filename_trans_iter", _wrap_qpol_policy_t_filename_trans_iter, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_filename_trans_count", _wrap_qpol_policy_t_filename_trans_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_permissive_iter", _wrap_qpol_policy_t_permissive_iter, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_permissive_count", _wrap_qpol_policy_t_permissive_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_typebounds_iter", _wrap_qpol_policy_t_typebounds_iter, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_polcap_iter", _wrap_qpol_policy_t_polcap_iter, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_polcap_count", _wrap_qpol_policy_t_polcap_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_default_iter", _wrap_qpol_policy_t_default_iter, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_iomemcon_iter", _wrap_qpol_policy_t_iomemcon_iter, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_iomemcon_count", _wrap_qpol_policy_t_iomemcon_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_ioportcon_iter", _wrap_qpol_policy_t_ioportcon_iter, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_ioportcon_count", _wrap_qpol_policy_t_ioportcon_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_pcidevicecon_iter", _wrap_qpol_policy_t_pcidevicecon_iter, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_pcidevicecon_count", _wrap_qpol_policy_t_pcidevicecon_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_pirqcon_iter", _wrap_qpol_policy_t_pirqcon_iter, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_pirqcon_count", _wrap_qpol_policy_t_pirqcon_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_devicetreecon_iter", _wrap_qpol_policy_t_devicetreecon_iter, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_devicetreecon_count", _wrap_qpol_policy_t_devicetreecon_count, METH_VARARGS, NULL}, + { (char *)"qpol_policy_t_swigregister", qpol_policy_t_swigregister, METH_VARARGS, NULL}, + { (char *)"new_qpol_iterator_t", _wrap_new_qpol_iterator_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_iterator_t", _wrap_delete_qpol_iterator_t, METH_VARARGS, NULL}, + { (char *)"qpol_iterator_t_item", _wrap_qpol_iterator_t_item, METH_VARARGS, NULL}, + { (char *)"qpol_iterator_t_next_", _wrap_qpol_iterator_t_next_, METH_VARARGS, NULL}, + { (char *)"qpol_iterator_t_isend", _wrap_qpol_iterator_t_isend, METH_VARARGS, NULL}, + { (char *)"qpol_iterator_t_size", _wrap_qpol_iterator_t_size, METH_VARARGS, NULL}, + { (char *)"qpol_iterator_t_swigregister", qpol_iterator_t_swigregister, METH_VARARGS, NULL}, + { (char *)"new_qpol_type_t", _wrap_new_qpol_type_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_type_t", _wrap_delete_qpol_type_t, METH_VARARGS, NULL}, + { (char *)"qpol_type_t_name", _wrap_qpol_type_t_name, METH_VARARGS, NULL}, + { (char *)"qpol_type_t_value", _wrap_qpol_type_t_value, METH_VARARGS, NULL}, + { (char *)"qpol_type_t_isalias", _wrap_qpol_type_t_isalias, METH_VARARGS, NULL}, + { (char *)"qpol_type_t_isattr", _wrap_qpol_type_t_isattr, METH_VARARGS, NULL}, + { (char *)"qpol_type_t_ispermissive", _wrap_qpol_type_t_ispermissive, METH_VARARGS, NULL}, + { (char *)"qpol_type_t_type_iter", _wrap_qpol_type_t_type_iter, METH_VARARGS, NULL}, + { (char *)"qpol_type_t_attr_iter", _wrap_qpol_type_t_attr_iter, METH_VARARGS, NULL}, + { (char *)"qpol_type_t_alias_iter", _wrap_qpol_type_t_alias_iter, METH_VARARGS, NULL}, + { (char *)"qpol_type_t_swigregister", qpol_type_t_swigregister, METH_VARARGS, NULL}, + { (char *)"qpol_type_from_void", _wrap_qpol_type_from_void, METH_VARARGS, NULL}, + { (char *)"new_qpol_role_t", _wrap_new_qpol_role_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_role_t", _wrap_delete_qpol_role_t, METH_VARARGS, NULL}, + { (char *)"qpol_role_t_value", _wrap_qpol_role_t_value, METH_VARARGS, NULL}, + { (char *)"qpol_role_t_name", _wrap_qpol_role_t_name, METH_VARARGS, NULL}, + { (char *)"qpol_role_t_type_iter", _wrap_qpol_role_t_type_iter, METH_VARARGS, NULL}, + { (char *)"qpol_role_t_dominate_iter", _wrap_qpol_role_t_dominate_iter, METH_VARARGS, NULL}, + { (char *)"qpol_role_t_swigregister", qpol_role_t_swigregister, METH_VARARGS, NULL}, + { (char *)"qpol_role_from_void", _wrap_qpol_role_from_void, METH_VARARGS, NULL}, + { (char *)"new_qpol_level_t", _wrap_new_qpol_level_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_level_t", _wrap_delete_qpol_level_t, METH_VARARGS, NULL}, + { (char *)"qpol_level_t_isalias", _wrap_qpol_level_t_isalias, METH_VARARGS, NULL}, + { (char *)"qpol_level_t_value", _wrap_qpol_level_t_value, METH_VARARGS, NULL}, + { (char *)"qpol_level_t_name", _wrap_qpol_level_t_name, METH_VARARGS, NULL}, + { (char *)"qpol_level_t_cat_iter", _wrap_qpol_level_t_cat_iter, METH_VARARGS, NULL}, + { (char *)"qpol_level_t_alias_iter", _wrap_qpol_level_t_alias_iter, METH_VARARGS, NULL}, + { (char *)"qpol_level_t_swigregister", qpol_level_t_swigregister, METH_VARARGS, NULL}, + { (char *)"qpol_level_from_void", _wrap_qpol_level_from_void, METH_VARARGS, NULL}, + { (char *)"new_qpol_cat_t", _wrap_new_qpol_cat_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_cat_t", _wrap_delete_qpol_cat_t, METH_VARARGS, NULL}, + { (char *)"qpol_cat_t_isalias", _wrap_qpol_cat_t_isalias, METH_VARARGS, NULL}, + { (char *)"qpol_cat_t_value", _wrap_qpol_cat_t_value, METH_VARARGS, NULL}, + { (char *)"qpol_cat_t_name", _wrap_qpol_cat_t_name, METH_VARARGS, NULL}, + { (char *)"qpol_cat_t_alias_iter", _wrap_qpol_cat_t_alias_iter, METH_VARARGS, NULL}, + { (char *)"qpol_cat_t_swigregister", qpol_cat_t_swigregister, METH_VARARGS, NULL}, + { (char *)"qpol_cat_from_void", _wrap_qpol_cat_from_void, METH_VARARGS, NULL}, + { (char *)"new_qpol_mls_range_t", _wrap_new_qpol_mls_range_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_mls_range_t", _wrap_delete_qpol_mls_range_t, METH_VARARGS, NULL}, + { (char *)"qpol_mls_range_t_high_level", _wrap_qpol_mls_range_t_high_level, METH_VARARGS, NULL}, + { (char *)"qpol_mls_range_t_low_level", _wrap_qpol_mls_range_t_low_level, METH_VARARGS, NULL}, + { (char *)"qpol_mls_range_t_swigregister", qpol_mls_range_t_swigregister, METH_VARARGS, NULL}, + { (char *)"qpol_mls_range_from_void", _wrap_qpol_mls_range_from_void, METH_VARARGS, NULL}, + { (char *)"new_qpol_semantic_level_t", _wrap_new_qpol_semantic_level_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_semantic_level_t", _wrap_delete_qpol_semantic_level_t, METH_VARARGS, NULL}, + { (char *)"qpol_semantic_level_t_add_cats", _wrap_qpol_semantic_level_t_add_cats, METH_VARARGS, NULL}, + { (char *)"qpol_semantic_level_t_swigregister", qpol_semantic_level_t_swigregister, METH_VARARGS, NULL}, + { (char *)"new_qpol_mls_level_t", _wrap_new_qpol_mls_level_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_mls_level_t", _wrap_delete_qpol_mls_level_t, METH_VARARGS, NULL}, + { (char *)"qpol_mls_level_t_sens_name", _wrap_qpol_mls_level_t_sens_name, METH_VARARGS, NULL}, + { (char *)"qpol_mls_level_t_cat_iter", _wrap_qpol_mls_level_t_cat_iter, METH_VARARGS, NULL}, + { (char *)"qpol_mls_level_t_swigregister", qpol_mls_level_t_swigregister, METH_VARARGS, NULL}, + { (char *)"qpol_mls_level_from_void", _wrap_qpol_mls_level_from_void, METH_VARARGS, NULL}, + { (char *)"new_qpol_user_t", _wrap_new_qpol_user_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_user_t", _wrap_delete_qpol_user_t, METH_VARARGS, NULL}, + { (char *)"qpol_user_t_value", _wrap_qpol_user_t_value, METH_VARARGS, NULL}, + { (char *)"qpol_user_t_role_iter", _wrap_qpol_user_t_role_iter, METH_VARARGS, NULL}, + { (char *)"qpol_user_t_range", _wrap_qpol_user_t_range, METH_VARARGS, NULL}, + { (char *)"qpol_user_t_name", _wrap_qpol_user_t_name, METH_VARARGS, NULL}, + { (char *)"qpol_user_t_dfltlevel", _wrap_qpol_user_t_dfltlevel, METH_VARARGS, NULL}, + { (char *)"qpol_user_t_swigregister", qpol_user_t_swigregister, METH_VARARGS, NULL}, + { (char *)"qpol_user_from_void", _wrap_qpol_user_from_void, METH_VARARGS, NULL}, + { (char *)"new_qpol_bool_t", _wrap_new_qpol_bool_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_bool_t", _wrap_delete_qpol_bool_t, METH_VARARGS, NULL}, + { (char *)"qpol_bool_t_value", _wrap_qpol_bool_t_value, METH_VARARGS, NULL}, + { (char *)"qpol_bool_t_state", _wrap_qpol_bool_t_state, METH_VARARGS, NULL}, + { (char *)"qpol_bool_t_name", _wrap_qpol_bool_t_name, METH_VARARGS, NULL}, + { (char *)"qpol_bool_t_swigregister", qpol_bool_t_swigregister, METH_VARARGS, NULL}, + { (char *)"qpol_bool_from_void", _wrap_qpol_bool_from_void, METH_VARARGS, NULL}, + { (char *)"new_qpol_context_t", _wrap_new_qpol_context_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_context_t", _wrap_delete_qpol_context_t, METH_VARARGS, NULL}, + { (char *)"qpol_context_t_user", _wrap_qpol_context_t_user, METH_VARARGS, NULL}, + { (char *)"qpol_context_t_role", _wrap_qpol_context_t_role, METH_VARARGS, NULL}, + { (char *)"qpol_context_t_type_", _wrap_qpol_context_t_type_, METH_VARARGS, NULL}, + { (char *)"qpol_context_t_range", _wrap_qpol_context_t_range, METH_VARARGS, NULL}, + { (char *)"qpol_context_t_swigregister", qpol_context_t_swigregister, METH_VARARGS, NULL}, + { (char *)"qpol_context_from_void", _wrap_qpol_context_from_void, METH_VARARGS, NULL}, + { (char *)"new_qpol_class_t", _wrap_new_qpol_class_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_class_t", _wrap_delete_qpol_class_t, METH_VARARGS, NULL}, + { (char *)"qpol_class_t_value", _wrap_qpol_class_t_value, METH_VARARGS, NULL}, + { (char *)"qpol_class_t_common", _wrap_qpol_class_t_common, METH_VARARGS, NULL}, + { (char *)"qpol_class_t_perm_iter", _wrap_qpol_class_t_perm_iter, METH_VARARGS, NULL}, + { (char *)"qpol_class_t_constraint_iter", _wrap_qpol_class_t_constraint_iter, METH_VARARGS, NULL}, + { (char *)"qpol_class_t_validatetrans_iter", _wrap_qpol_class_t_validatetrans_iter, METH_VARARGS, NULL}, + { (char *)"qpol_class_t_name", _wrap_qpol_class_t_name, METH_VARARGS, NULL}, + { (char *)"qpol_class_t_swigregister", qpol_class_t_swigregister, METH_VARARGS, NULL}, + { (char *)"qpol_class_from_void", _wrap_qpol_class_from_void, METH_VARARGS, NULL}, + { (char *)"new_qpol_common_t", _wrap_new_qpol_common_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_common_t", _wrap_delete_qpol_common_t, METH_VARARGS, NULL}, + { (char *)"qpol_common_t_value", _wrap_qpol_common_t_value, METH_VARARGS, NULL}, + { (char *)"qpol_common_t_perm_iter", _wrap_qpol_common_t_perm_iter, METH_VARARGS, NULL}, + { (char *)"qpol_common_t_name", _wrap_qpol_common_t_name, METH_VARARGS, NULL}, + { (char *)"qpol_common_t_swigregister", qpol_common_t_swigregister, METH_VARARGS, NULL}, + { (char *)"qpol_common_from_void", _wrap_qpol_common_from_void, METH_VARARGS, NULL}, + { (char *)"new_qpol_fs_use_t", _wrap_new_qpol_fs_use_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_fs_use_t", _wrap_delete_qpol_fs_use_t, METH_VARARGS, NULL}, + { (char *)"qpol_fs_use_t_name", _wrap_qpol_fs_use_t_name, METH_VARARGS, NULL}, + { (char *)"qpol_fs_use_t_behavior", _wrap_qpol_fs_use_t_behavior, METH_VARARGS, NULL}, + { (char *)"qpol_fs_use_t_context", _wrap_qpol_fs_use_t_context, METH_VARARGS, NULL}, + { (char *)"qpol_fs_use_t_swigregister", qpol_fs_use_t_swigregister, METH_VARARGS, NULL}, + { (char *)"qpol_fs_use_from_void", _wrap_qpol_fs_use_from_void, METH_VARARGS, NULL}, + { (char *)"new_qpol_genfscon_t", _wrap_new_qpol_genfscon_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_genfscon_t", _wrap_delete_qpol_genfscon_t, METH_VARARGS, NULL}, + { (char *)"qpol_genfscon_t_name", _wrap_qpol_genfscon_t_name, METH_VARARGS, NULL}, + { (char *)"qpol_genfscon_t_path", _wrap_qpol_genfscon_t_path, METH_VARARGS, NULL}, + { (char *)"qpol_genfscon_t_object_class", _wrap_qpol_genfscon_t_object_class, METH_VARARGS, NULL}, + { (char *)"qpol_genfscon_t_context", _wrap_qpol_genfscon_t_context, METH_VARARGS, NULL}, + { (char *)"qpol_genfscon_t_swigregister", qpol_genfscon_t_swigregister, METH_VARARGS, NULL}, + { (char *)"qpol_genfscon_from_void", _wrap_qpol_genfscon_from_void, METH_VARARGS, NULL}, + { (char *)"new_qpol_isid_t", _wrap_new_qpol_isid_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_isid_t", _wrap_delete_qpol_isid_t, METH_VARARGS, NULL}, + { (char *)"qpol_isid_t_name", _wrap_qpol_isid_t_name, METH_VARARGS, NULL}, + { (char *)"qpol_isid_t_context", _wrap_qpol_isid_t_context, METH_VARARGS, NULL}, + { (char *)"qpol_isid_t_swigregister", qpol_isid_t_swigregister, METH_VARARGS, NULL}, + { (char *)"qpol_isid_from_void", _wrap_qpol_isid_from_void, METH_VARARGS, NULL}, + { (char *)"new_qpol_netifcon_t", _wrap_new_qpol_netifcon_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_netifcon_t", _wrap_delete_qpol_netifcon_t, METH_VARARGS, NULL}, + { (char *)"qpol_netifcon_t_name", _wrap_qpol_netifcon_t_name, METH_VARARGS, NULL}, + { (char *)"qpol_netifcon_t_msg_con", _wrap_qpol_netifcon_t_msg_con, METH_VARARGS, NULL}, + { (char *)"qpol_netifcon_t_if_con", _wrap_qpol_netifcon_t_if_con, METH_VARARGS, NULL}, + { (char *)"qpol_netifcon_t_swigregister", qpol_netifcon_t_swigregister, METH_VARARGS, NULL}, + { (char *)"qpol_netifcon_from_void", _wrap_qpol_netifcon_from_void, METH_VARARGS, NULL}, + { (char *)"new_qpol_nodecon_t", _wrap_new_qpol_nodecon_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_nodecon_t", _wrap_delete_qpol_nodecon_t, METH_VARARGS, NULL}, + { (char *)"qpol_nodecon_t_addr", _wrap_qpol_nodecon_t_addr, METH_VARARGS, NULL}, + { (char *)"qpol_nodecon_t_mask", _wrap_qpol_nodecon_t_mask, METH_VARARGS, NULL}, + { (char *)"qpol_nodecon_t_protocol", _wrap_qpol_nodecon_t_protocol, METH_VARARGS, NULL}, + { (char *)"qpol_nodecon_t_context", _wrap_qpol_nodecon_t_context, METH_VARARGS, NULL}, + { (char *)"qpol_nodecon_t_swigregister", qpol_nodecon_t_swigregister, METH_VARARGS, NULL}, + { (char *)"qpol_nodecon_from_void", _wrap_qpol_nodecon_from_void, METH_VARARGS, NULL}, + { (char *)"new_qpol_portcon_t", _wrap_new_qpol_portcon_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_portcon_t", _wrap_delete_qpol_portcon_t, METH_VARARGS, NULL}, + { (char *)"qpol_portcon_t_low_port", _wrap_qpol_portcon_t_low_port, METH_VARARGS, NULL}, + { (char *)"qpol_portcon_t_high_port", _wrap_qpol_portcon_t_high_port, METH_VARARGS, NULL}, + { (char *)"qpol_portcon_t_protocol", _wrap_qpol_portcon_t_protocol, METH_VARARGS, NULL}, + { (char *)"qpol_portcon_t_context", _wrap_qpol_portcon_t_context, METH_VARARGS, NULL}, + { (char *)"qpol_portcon_t_swigregister", qpol_portcon_t_swigregister, METH_VARARGS, NULL}, + { (char *)"qpol_portcon_from_void", _wrap_qpol_portcon_from_void, METH_VARARGS, NULL}, + { (char *)"new_qpol_constraint_t", _wrap_new_qpol_constraint_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_constraint_t", _wrap_delete_qpol_constraint_t, METH_VARARGS, NULL}, + { (char *)"qpol_constraint_t_object_class", _wrap_qpol_constraint_t_object_class, METH_VARARGS, NULL}, + { (char *)"qpol_constraint_t_perm_iter", _wrap_qpol_constraint_t_perm_iter, METH_VARARGS, NULL}, + { (char *)"qpol_constraint_t_expr_iter", _wrap_qpol_constraint_t_expr_iter, METH_VARARGS, NULL}, + { (char *)"qpol_constraint_t_swigregister", qpol_constraint_t_swigregister, METH_VARARGS, NULL}, + { (char *)"qpol_constraint_from_void", _wrap_qpol_constraint_from_void, METH_VARARGS, NULL}, + { (char *)"new_qpol_validatetrans_t", _wrap_new_qpol_validatetrans_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_validatetrans_t", _wrap_delete_qpol_validatetrans_t, METH_VARARGS, NULL}, + { (char *)"qpol_validatetrans_t_object_class", _wrap_qpol_validatetrans_t_object_class, METH_VARARGS, NULL}, + { (char *)"qpol_validatetrans_t_expr_iter", _wrap_qpol_validatetrans_t_expr_iter, METH_VARARGS, NULL}, + { (char *)"qpol_validatetrans_t_swigregister", qpol_validatetrans_t_swigregister, METH_VARARGS, NULL}, + { (char *)"qpol_validatetrans_from_void", _wrap_qpol_validatetrans_from_void, METH_VARARGS, NULL}, + { (char *)"new_qpol_constraint_expr_node_t", _wrap_new_qpol_constraint_expr_node_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_constraint_expr_node_t", _wrap_delete_qpol_constraint_expr_node_t, METH_VARARGS, NULL}, + { (char *)"qpol_constraint_expr_node_t_expr_type", _wrap_qpol_constraint_expr_node_t_expr_type, METH_VARARGS, NULL}, + { (char *)"qpol_constraint_expr_node_t_sym_type", _wrap_qpol_constraint_expr_node_t_sym_type, METH_VARARGS, NULL}, + { (char *)"qpol_constraint_expr_node_t_op", _wrap_qpol_constraint_expr_node_t_op, METH_VARARGS, NULL}, + { (char *)"qpol_constraint_expr_node_t_names_iter", _wrap_qpol_constraint_expr_node_t_names_iter, METH_VARARGS, NULL}, + { (char *)"qpol_constraint_expr_node_t_swigregister", qpol_constraint_expr_node_t_swigregister, METH_VARARGS, NULL}, + { (char *)"qpol_constraint_expr_node_from_void", _wrap_qpol_constraint_expr_node_from_void, METH_VARARGS, NULL}, + { (char *)"new_qpol_role_allow_t", _wrap_new_qpol_role_allow_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_role_allow_t", _wrap_delete_qpol_role_allow_t, METH_VARARGS, NULL}, + { (char *)"qpol_role_allow_t_source_role", _wrap_qpol_role_allow_t_source_role, METH_VARARGS, NULL}, + { (char *)"qpol_role_allow_t_target_role", _wrap_qpol_role_allow_t_target_role, METH_VARARGS, NULL}, + { (char *)"qpol_role_allow_t_swigregister", qpol_role_allow_t_swigregister, METH_VARARGS, NULL}, + { (char *)"qpol_role_allow_from_void", _wrap_qpol_role_allow_from_void, METH_VARARGS, NULL}, + { (char *)"new_qpol_role_trans_t", _wrap_new_qpol_role_trans_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_role_trans_t", _wrap_delete_qpol_role_trans_t, METH_VARARGS, NULL}, + { (char *)"qpol_role_trans_t_source_role", _wrap_qpol_role_trans_t_source_role, METH_VARARGS, NULL}, + { (char *)"qpol_role_trans_t_target_type", _wrap_qpol_role_trans_t_target_type, METH_VARARGS, NULL}, + { (char *)"qpol_role_trans_t_object_class", _wrap_qpol_role_trans_t_object_class, METH_VARARGS, NULL}, + { (char *)"qpol_role_trans_t_default_role", _wrap_qpol_role_trans_t_default_role, METH_VARARGS, NULL}, + { (char *)"qpol_role_trans_t_swigregister", qpol_role_trans_t_swigregister, METH_VARARGS, NULL}, + { (char *)"qpol_role_trans_from_void", _wrap_qpol_role_trans_from_void, METH_VARARGS, NULL}, + { (char *)"new_qpol_range_trans_t", _wrap_new_qpol_range_trans_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_range_trans_t", _wrap_delete_qpol_range_trans_t, METH_VARARGS, NULL}, + { (char *)"qpol_range_trans_t_source_type", _wrap_qpol_range_trans_t_source_type, METH_VARARGS, NULL}, + { (char *)"qpol_range_trans_t_target_type", _wrap_qpol_range_trans_t_target_type, METH_VARARGS, NULL}, + { (char *)"qpol_range_trans_t_object_class", _wrap_qpol_range_trans_t_object_class, METH_VARARGS, NULL}, + { (char *)"qpol_range_trans_t_range", _wrap_qpol_range_trans_t_range, METH_VARARGS, NULL}, + { (char *)"qpol_range_trans_t_swigregister", qpol_range_trans_t_swigregister, METH_VARARGS, NULL}, + { (char *)"qpol_range_trans_from_void", _wrap_qpol_range_trans_from_void, METH_VARARGS, NULL}, + { (char *)"new_qpol_avrule_t", _wrap_new_qpol_avrule_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_avrule_t", _wrap_delete_qpol_avrule_t, METH_VARARGS, NULL}, + { (char *)"qpol_avrule_t_rule_type", _wrap_qpol_avrule_t_rule_type, METH_VARARGS, NULL}, + { (char *)"qpol_avrule_t_source_type", _wrap_qpol_avrule_t_source_type, METH_VARARGS, NULL}, + { (char *)"qpol_avrule_t_target_type", _wrap_qpol_avrule_t_target_type, METH_VARARGS, NULL}, + { (char *)"qpol_avrule_t_object_class", _wrap_qpol_avrule_t_object_class, METH_VARARGS, NULL}, + { (char *)"qpol_avrule_t_perm_iter", _wrap_qpol_avrule_t_perm_iter, METH_VARARGS, NULL}, + { (char *)"qpol_avrule_t_xperm_iter", _wrap_qpol_avrule_t_xperm_iter, METH_VARARGS, NULL}, + { (char *)"qpol_avrule_t_is_extended", _wrap_qpol_avrule_t_is_extended, METH_VARARGS, NULL}, + { (char *)"qpol_avrule_t_xperm_type", _wrap_qpol_avrule_t_xperm_type, METH_VARARGS, NULL}, + { (char *)"qpol_avrule_t_cond", _wrap_qpol_avrule_t_cond, METH_VARARGS, NULL}, + { (char *)"qpol_avrule_t_is_enabled", _wrap_qpol_avrule_t_is_enabled, METH_VARARGS, NULL}, + { (char *)"qpol_avrule_t_which_list", _wrap_qpol_avrule_t_which_list, METH_VARARGS, NULL}, + { (char *)"qpol_avrule_t_syn_avrule_iter", _wrap_qpol_avrule_t_syn_avrule_iter, METH_VARARGS, NULL}, + { (char *)"qpol_avrule_t_swigregister", qpol_avrule_t_swigregister, METH_VARARGS, NULL}, + { (char *)"qpol_avrule_from_void", _wrap_qpol_avrule_from_void, METH_VARARGS, NULL}, + { (char *)"new_qpol_terule_t", _wrap_new_qpol_terule_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_terule_t", _wrap_delete_qpol_terule_t, METH_VARARGS, NULL}, + { (char *)"qpol_terule_t_rule_type", _wrap_qpol_terule_t_rule_type, METH_VARARGS, NULL}, + { (char *)"qpol_terule_t_source_type", _wrap_qpol_terule_t_source_type, METH_VARARGS, NULL}, + { (char *)"qpol_terule_t_target_type", _wrap_qpol_terule_t_target_type, METH_VARARGS, NULL}, + { (char *)"qpol_terule_t_object_class", _wrap_qpol_terule_t_object_class, METH_VARARGS, NULL}, + { (char *)"qpol_terule_t_default_type", _wrap_qpol_terule_t_default_type, METH_VARARGS, NULL}, + { (char *)"qpol_terule_t_cond", _wrap_qpol_terule_t_cond, METH_VARARGS, NULL}, + { (char *)"qpol_terule_t_is_enabled", _wrap_qpol_terule_t_is_enabled, METH_VARARGS, NULL}, + { (char *)"qpol_terule_t_which_list", _wrap_qpol_terule_t_which_list, METH_VARARGS, NULL}, + { (char *)"qpol_terule_t_syn_terule_iter", _wrap_qpol_terule_t_syn_terule_iter, METH_VARARGS, NULL}, + { (char *)"qpol_terule_t_swigregister", qpol_terule_t_swigregister, METH_VARARGS, NULL}, + { (char *)"qpol_terule_from_void", _wrap_qpol_terule_from_void, METH_VARARGS, NULL}, + { (char *)"new_qpol_cond_t", _wrap_new_qpol_cond_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_cond_t", _wrap_delete_qpol_cond_t, METH_VARARGS, NULL}, + { (char *)"qpol_cond_t_expr_node_iter", _wrap_qpol_cond_t_expr_node_iter, METH_VARARGS, NULL}, + { (char *)"qpol_cond_t_av_true_iter", _wrap_qpol_cond_t_av_true_iter, METH_VARARGS, NULL}, + { (char *)"qpol_cond_t_av_false_iter", _wrap_qpol_cond_t_av_false_iter, METH_VARARGS, NULL}, + { (char *)"qpol_cond_t_te_true_iter", _wrap_qpol_cond_t_te_true_iter, METH_VARARGS, NULL}, + { (char *)"qpol_cond_t_te_false_iter", _wrap_qpol_cond_t_te_false_iter, METH_VARARGS, NULL}, + { (char *)"qpol_cond_t_evaluate", _wrap_qpol_cond_t_evaluate, METH_VARARGS, NULL}, + { (char *)"qpol_cond_t_swigregister", qpol_cond_t_swigregister, METH_VARARGS, NULL}, + { (char *)"qpol_cond_from_void", _wrap_qpol_cond_from_void, METH_VARARGS, NULL}, + { (char *)"new_qpol_cond_expr_node_t", _wrap_new_qpol_cond_expr_node_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_cond_expr_node_t", _wrap_delete_qpol_cond_expr_node_t, METH_VARARGS, NULL}, + { (char *)"qpol_cond_expr_node_t_expr_type", _wrap_qpol_cond_expr_node_t_expr_type, METH_VARARGS, NULL}, + { (char *)"qpol_cond_expr_node_t_get_boolean", _wrap_qpol_cond_expr_node_t_get_boolean, METH_VARARGS, NULL}, + { (char *)"qpol_cond_expr_node_t_swigregister", qpol_cond_expr_node_t_swigregister, METH_VARARGS, NULL}, + { (char *)"qpol_cond_expr_node_from_void", _wrap_qpol_cond_expr_node_from_void, METH_VARARGS, NULL}, + { (char *)"new_qpol_filename_trans_t", _wrap_new_qpol_filename_trans_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_filename_trans_t", _wrap_delete_qpol_filename_trans_t, METH_VARARGS, NULL}, + { (char *)"qpol_filename_trans_t_source_type", _wrap_qpol_filename_trans_t_source_type, METH_VARARGS, NULL}, + { (char *)"qpol_filename_trans_t_target_type", _wrap_qpol_filename_trans_t_target_type, METH_VARARGS, NULL}, + { (char *)"qpol_filename_trans_t_object_class", _wrap_qpol_filename_trans_t_object_class, METH_VARARGS, NULL}, + { (char *)"qpol_filename_trans_t_default_type", _wrap_qpol_filename_trans_t_default_type, METH_VARARGS, NULL}, + { (char *)"qpol_filename_trans_t_filename", _wrap_qpol_filename_trans_t_filename, METH_VARARGS, NULL}, + { (char *)"qpol_filename_trans_t_swigregister", qpol_filename_trans_t_swigregister, METH_VARARGS, NULL}, + { (char *)"qpol_filename_trans_from_void", _wrap_qpol_filename_trans_from_void, METH_VARARGS, NULL}, + { (char *)"new_qpol_polcap_t", _wrap_new_qpol_polcap_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_polcap_t", _wrap_delete_qpol_polcap_t, METH_VARARGS, NULL}, + { (char *)"qpol_polcap_t_name", _wrap_qpol_polcap_t_name, METH_VARARGS, NULL}, + { (char *)"qpol_polcap_t_swigregister", qpol_polcap_t_swigregister, METH_VARARGS, NULL}, + { (char *)"qpol_polcap_from_void", _wrap_qpol_polcap_from_void, METH_VARARGS, NULL}, + { (char *)"new_qpol_typebounds_t", _wrap_new_qpol_typebounds_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_typebounds_t", _wrap_delete_qpol_typebounds_t, METH_VARARGS, NULL}, + { (char *)"qpol_typebounds_t_parent_name", _wrap_qpol_typebounds_t_parent_name, METH_VARARGS, NULL}, + { (char *)"qpol_typebounds_t_child_name", _wrap_qpol_typebounds_t_child_name, METH_VARARGS, NULL}, + { (char *)"qpol_typebounds_t_swigregister", qpol_typebounds_t_swigregister, METH_VARARGS, NULL}, + { (char *)"qpol_typebounds_from_void", _wrap_qpol_typebounds_from_void, METH_VARARGS, NULL}, + { (char *)"new_qpol_rolebounds_t", _wrap_new_qpol_rolebounds_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_rolebounds_t", _wrap_delete_qpol_rolebounds_t, METH_VARARGS, NULL}, + { (char *)"qpol_rolebounds_t_parent_name", _wrap_qpol_rolebounds_t_parent_name, METH_VARARGS, NULL}, + { (char *)"qpol_rolebounds_t_child_name", _wrap_qpol_rolebounds_t_child_name, METH_VARARGS, NULL}, + { (char *)"qpol_rolebounds_t_swigregister", qpol_rolebounds_t_swigregister, METH_VARARGS, NULL}, + { (char *)"qpol_rolebounds_from_void", _wrap_qpol_rolebounds_from_void, METH_VARARGS, NULL}, + { (char *)"new_qpol_userbounds_t", _wrap_new_qpol_userbounds_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_userbounds_t", _wrap_delete_qpol_userbounds_t, METH_VARARGS, NULL}, + { (char *)"qpol_userbounds_t_parent_name", _wrap_qpol_userbounds_t_parent_name, METH_VARARGS, NULL}, + { (char *)"qpol_userbounds_t_child_name", _wrap_qpol_userbounds_t_child_name, METH_VARARGS, NULL}, + { (char *)"qpol_userbounds_t_swigregister", qpol_userbounds_t_swigregister, METH_VARARGS, NULL}, + { (char *)"qpol_userbounds_from_void", _wrap_qpol_userbounds_from_void, METH_VARARGS, NULL}, + { (char *)"new_qpol_default_object_t", _wrap_new_qpol_default_object_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_default_object_t", _wrap_delete_qpol_default_object_t, METH_VARARGS, NULL}, + { (char *)"qpol_default_object_t_object_class", _wrap_qpol_default_object_t_object_class, METH_VARARGS, NULL}, + { (char *)"qpol_default_object_t_user_default", _wrap_qpol_default_object_t_user_default, METH_VARARGS, NULL}, + { (char *)"qpol_default_object_t_role_default", _wrap_qpol_default_object_t_role_default, METH_VARARGS, NULL}, + { (char *)"qpol_default_object_t_type_default", _wrap_qpol_default_object_t_type_default, METH_VARARGS, NULL}, + { (char *)"qpol_default_object_t_range_default", _wrap_qpol_default_object_t_range_default, METH_VARARGS, NULL}, + { (char *)"qpol_default_object_t_swigregister", qpol_default_object_t_swigregister, METH_VARARGS, NULL}, + { (char *)"qpol_default_object_from_void", _wrap_qpol_default_object_from_void, METH_VARARGS, NULL}, + { (char *)"new_qpol_iomemcon_t", _wrap_new_qpol_iomemcon_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_iomemcon_t", _wrap_delete_qpol_iomemcon_t, METH_VARARGS, NULL}, + { (char *)"qpol_iomemcon_t_low_addr", _wrap_qpol_iomemcon_t_low_addr, METH_VARARGS, NULL}, + { (char *)"qpol_iomemcon_t_high_addr", _wrap_qpol_iomemcon_t_high_addr, METH_VARARGS, NULL}, + { (char *)"qpol_iomemcon_t_context", _wrap_qpol_iomemcon_t_context, METH_VARARGS, NULL}, + { (char *)"qpol_iomemcon_t_swigregister", qpol_iomemcon_t_swigregister, METH_VARARGS, NULL}, + { (char *)"qpol_iomemcon_from_void", _wrap_qpol_iomemcon_from_void, METH_VARARGS, NULL}, + { (char *)"new_qpol_ioportcon_t", _wrap_new_qpol_ioportcon_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_ioportcon_t", _wrap_delete_qpol_ioportcon_t, METH_VARARGS, NULL}, + { (char *)"qpol_ioportcon_t_low_port", _wrap_qpol_ioportcon_t_low_port, METH_VARARGS, NULL}, + { (char *)"qpol_ioportcon_t_high_port", _wrap_qpol_ioportcon_t_high_port, METH_VARARGS, NULL}, + { (char *)"qpol_ioportcon_t_context", _wrap_qpol_ioportcon_t_context, METH_VARARGS, NULL}, + { (char *)"qpol_ioportcon_t_swigregister", qpol_ioportcon_t_swigregister, METH_VARARGS, NULL}, + { (char *)"qpol_ioportcon_from_void", _wrap_qpol_ioportcon_from_void, METH_VARARGS, NULL}, + { (char *)"new_qpol_pcidevicecon_t", _wrap_new_qpol_pcidevicecon_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_pcidevicecon_t", _wrap_delete_qpol_pcidevicecon_t, METH_VARARGS, NULL}, + { (char *)"qpol_pcidevicecon_t_device", _wrap_qpol_pcidevicecon_t_device, METH_VARARGS, NULL}, + { (char *)"qpol_pcidevicecon_t_context", _wrap_qpol_pcidevicecon_t_context, METH_VARARGS, NULL}, + { (char *)"qpol_pcidevicecon_t_swigregister", qpol_pcidevicecon_t_swigregister, METH_VARARGS, NULL}, + { (char *)"qpol_pcidevicecon_from_void", _wrap_qpol_pcidevicecon_from_void, METH_VARARGS, NULL}, + { (char *)"new_qpol_pirqcon_t", _wrap_new_qpol_pirqcon_t, METH_VARARGS, NULL}, + { (char *)"delete_qpol_pirqcon_t", _wrap_delete_qpol_pirqcon_t, METH_VARARGS, NULL}, + { (char *)"qpol_pirqcon_t_irq", _wrap_qpol_pirqcon_t_irq, METH_VARARGS, NULL}, + { (char *)"qpol_pirqcon_t_context", _wrap_qpol_pirqcon_t_context, METH_VARARGS, NULL}, + { (char *)"qpol_pirqcon_t_swigregister", qpol_pirqcon_t_swigregister, METH_VARARGS, NULL}, + { (char *)"qpol_pirqcon_from_void", _wrap_qpol_pirqcon_from_void, METH_VARARGS, NULL}, + { (char *)"new_qpol_devicetreecon_t", _wrap_new_qpol_devicetreecon_t, METH_VARARGS, NULL}, + { (char *)"qpol_devicetreecon_t_path", _wrap_qpol_devicetreecon_t_path, METH_VARARGS, NULL}, + { (char *)"qpol_devicetreecon_t_context", _wrap_qpol_devicetreecon_t_context, METH_VARARGS, NULL}, + { (char *)"delete_qpol_devicetreecon_t", _wrap_delete_qpol_devicetreecon_t, METH_VARARGS, NULL}, + { (char *)"qpol_devicetreecon_t_swigregister", qpol_devicetreecon_t_swigregister, METH_VARARGS, NULL}, + { (char *)"qpol_devicetreecon_from_void", _wrap_qpol_devicetreecon_from_void, METH_VARARGS, NULL}, + { NULL, NULL, 0, NULL } +}; + + +/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */ + +static swig_type_info _swigt__p_char = {"_p_char", "char *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_int = {"_p_int", "intptr_t *|int *|int_least32_t *|int_fast32_t *|int32_t *|int_fast16_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_long_long = {"_p_long_long", "int_least64_t *|int_fast64_t *|int64_t *|long long *|intmax_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_avrule = {"_p_qpol_avrule", "qpol_avrule_t *|struct qpol_avrule *|qpol_avrule *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_bool = {"_p_qpol_bool", "struct qpol_bool *|qpol_bool *|qpol_bool_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_capability = {"_p_qpol_capability", "qpol_capability_e *|enum qpol_capability *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_cat = {"_p_qpol_cat", "qpol_cat_t *|struct qpol_cat *|qpol_cat *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_class = {"_p_qpol_class", "qpol_class_t *|struct qpol_class *|qpol_class *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_common = {"_p_qpol_common", "qpol_common_t *|struct qpol_common *|qpol_common *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_cond = {"_p_qpol_cond", "qpol_cond_t *|struct qpol_cond *|qpol_cond *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_cond_expr_node = {"_p_qpol_cond_expr_node", "struct qpol_cond_expr_node *|qpol_cond_expr_node_t *|qpol_cond_expr_node *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_constraint = {"_p_qpol_constraint", "qpol_constraint_t *|struct qpol_constraint *|qpol_constraint *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_constraint_expr_node = {"_p_qpol_constraint_expr_node", "struct qpol_constraint_expr_node *|qpol_constraint_expr_node_t *|qpol_constraint_expr_node *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_context = {"_p_qpol_context", "struct qpol_context *|qpol_context *|qpol_context_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_default_object = {"_p_qpol_default_object", "qpol_default_object_t *|struct qpol_default_object *|qpol_default_object *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_devicetreecon = {"_p_qpol_devicetreecon", "qpol_devicetreecon_t *|struct qpol_devicetreecon *|qpol_devicetreecon *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_filename_trans = {"_p_qpol_filename_trans", "struct qpol_filename_trans *|qpol_filename_trans *|qpol_filename_trans_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_fs_use = {"_p_qpol_fs_use", "struct qpol_fs_use *|qpol_fs_use *|qpol_fs_use_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_genfscon = {"_p_qpol_genfscon", "qpol_genfscon_t *|struct qpol_genfscon *|qpol_genfscon *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_iomemcon = {"_p_qpol_iomemcon", "qpol_iomemcon_t *|struct qpol_iomemcon *|qpol_iomemcon *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_ioportcon = {"_p_qpol_ioportcon", "struct qpol_ioportcon *|qpol_ioportcon *|qpol_ioportcon_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_isid = {"_p_qpol_isid", "struct qpol_isid *|qpol_isid *|qpol_isid_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_iterator = {"_p_qpol_iterator", "struct qpol_iterator *|qpol_iterator *|qpol_iterator_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_level = {"_p_qpol_level", "qpol_level_t *|struct qpol_level *|qpol_level *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_mls_level = {"_p_qpol_mls_level", "qpol_mls_level_t *|struct qpol_mls_level *|qpol_mls_level *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_mls_range = {"_p_qpol_mls_range", "struct qpol_mls_range *|qpol_mls_range *|qpol_mls_range_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_netifcon = {"_p_qpol_netifcon", "qpol_netifcon_t *|struct qpol_netifcon *|qpol_netifcon *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_nodecon = {"_p_qpol_nodecon", "qpol_nodecon_t *|struct qpol_nodecon *|qpol_nodecon *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_pcidevicecon = {"_p_qpol_pcidevicecon", "qpol_pcidevicecon_t *|struct qpol_pcidevicecon *|qpol_pcidevicecon *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_pirqcon = {"_p_qpol_pirqcon", "struct qpol_pirqcon *|qpol_pirqcon *|qpol_pirqcon_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_polcap = {"_p_qpol_polcap", "struct qpol_polcap *|qpol_polcap *|qpol_polcap_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_policy = {"_p_qpol_policy", "qpol_policy_t *|struct qpol_policy *|qpol_policy *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_portcon = {"_p_qpol_portcon", "struct qpol_portcon *|qpol_portcon *|qpol_portcon_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_range_trans = {"_p_qpol_range_trans", "struct qpol_range_trans *|qpol_range_trans *|qpol_range_trans_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_role = {"_p_qpol_role", "struct qpol_role *|qpol_role_t *|qpol_role *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_role_allow = {"_p_qpol_role_allow", "struct qpol_role_allow *|qpol_role_allow *|qpol_role_allow_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_role_trans = {"_p_qpol_role_trans", "struct qpol_role_trans *|qpol_role_trans *|qpol_role_trans_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_rolebounds = {"_p_qpol_rolebounds", "qpol_rolebounds_t *|struct qpol_rolebounds *|qpol_rolebounds *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_semantic_level = {"_p_qpol_semantic_level", "qpol_semantic_level_t *|struct qpol_semantic_level *|qpol_semantic_level *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_terule = {"_p_qpol_terule", "qpol_terule_t *|struct qpol_terule *|qpol_terule *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_type = {"_p_qpol_type", "struct qpol_type *|qpol_type *|qpol_type_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_typebounds = {"_p_qpol_typebounds", "qpol_typebounds_t *|struct qpol_typebounds *|qpol_typebounds *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_user = {"_p_qpol_user", "struct qpol_user *|qpol_user *|qpol_user_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_userbounds = {"_p_qpol_userbounds", "qpol_userbounds_t *|struct qpol_userbounds *|qpol_userbounds *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_qpol_validatetrans = {"_p_qpol_validatetrans", "struct qpol_validatetrans *|qpol_validatetrans *|qpol_validatetrans_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_short = {"_p_short", "short *|int_least16_t *|int16_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_signed_char = {"_p_signed_char", "signed char *|int_least8_t *|int_fast8_t *|int8_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_unsigned_char = {"_p_unsigned_char", "unsigned char *|uint_least8_t *|uint_fast8_t *|uint8_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_unsigned_int = {"_p_unsigned_int", "uintptr_t *|uint_least32_t *|uint_fast32_t *|uint32_t *|size_t *|unsigned int *|uint_fast16_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_unsigned_long_long = {"_p_unsigned_long_long", "uint_least64_t *|uint_fast64_t *|uint64_t *|unsigned long long *|uintmax_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_unsigned_short = {"_p_unsigned_short", "unsigned short *|uint_least16_t *|uint16_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_void = {"_p_void", "void *", 0, 0, (void*)0, 0}; + +static swig_type_info *swig_type_initial[] = { + &_swigt__p_char, + &_swigt__p_int, + &_swigt__p_long_long, + &_swigt__p_qpol_avrule, + &_swigt__p_qpol_bool, + &_swigt__p_qpol_capability, + &_swigt__p_qpol_cat, + &_swigt__p_qpol_class, + &_swigt__p_qpol_common, + &_swigt__p_qpol_cond, + &_swigt__p_qpol_cond_expr_node, + &_swigt__p_qpol_constraint, + &_swigt__p_qpol_constraint_expr_node, + &_swigt__p_qpol_context, + &_swigt__p_qpol_default_object, + &_swigt__p_qpol_devicetreecon, + &_swigt__p_qpol_filename_trans, + &_swigt__p_qpol_fs_use, + &_swigt__p_qpol_genfscon, + &_swigt__p_qpol_iomemcon, + &_swigt__p_qpol_ioportcon, + &_swigt__p_qpol_isid, + &_swigt__p_qpol_iterator, + &_swigt__p_qpol_level, + &_swigt__p_qpol_mls_level, + &_swigt__p_qpol_mls_range, + &_swigt__p_qpol_netifcon, + &_swigt__p_qpol_nodecon, + &_swigt__p_qpol_pcidevicecon, + &_swigt__p_qpol_pirqcon, + &_swigt__p_qpol_polcap, + &_swigt__p_qpol_policy, + &_swigt__p_qpol_portcon, + &_swigt__p_qpol_range_trans, + &_swigt__p_qpol_role, + &_swigt__p_qpol_role_allow, + &_swigt__p_qpol_role_trans, + &_swigt__p_qpol_rolebounds, + &_swigt__p_qpol_semantic_level, + &_swigt__p_qpol_terule, + &_swigt__p_qpol_type, + &_swigt__p_qpol_typebounds, + &_swigt__p_qpol_user, + &_swigt__p_qpol_userbounds, + &_swigt__p_qpol_validatetrans, + &_swigt__p_short, + &_swigt__p_signed_char, + &_swigt__p_unsigned_char, + &_swigt__p_unsigned_int, + &_swigt__p_unsigned_long_long, + &_swigt__p_unsigned_short, + &_swigt__p_void, +}; + +static swig_cast_info _swigc__p_char[] = { {&_swigt__p_char, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_int[] = { {&_swigt__p_int, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_long_long[] = { {&_swigt__p_long_long, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_avrule[] = { {&_swigt__p_qpol_avrule, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_bool[] = { {&_swigt__p_qpol_bool, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_capability[] = { {&_swigt__p_qpol_capability, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_cat[] = { {&_swigt__p_qpol_cat, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_class[] = { {&_swigt__p_qpol_class, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_common[] = { {&_swigt__p_qpol_common, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_cond[] = { {&_swigt__p_qpol_cond, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_cond_expr_node[] = { {&_swigt__p_qpol_cond_expr_node, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_constraint[] = { {&_swigt__p_qpol_constraint, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_constraint_expr_node[] = { {&_swigt__p_qpol_constraint_expr_node, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_context[] = { {&_swigt__p_qpol_context, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_default_object[] = { {&_swigt__p_qpol_default_object, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_devicetreecon[] = { {&_swigt__p_qpol_devicetreecon, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_filename_trans[] = { {&_swigt__p_qpol_filename_trans, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_fs_use[] = { {&_swigt__p_qpol_fs_use, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_genfscon[] = { {&_swigt__p_qpol_genfscon, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_iomemcon[] = { {&_swigt__p_qpol_iomemcon, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_ioportcon[] = { {&_swigt__p_qpol_ioportcon, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_isid[] = { {&_swigt__p_qpol_isid, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_iterator[] = { {&_swigt__p_qpol_iterator, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_level[] = { {&_swigt__p_qpol_level, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_mls_level[] = { {&_swigt__p_qpol_mls_level, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_mls_range[] = { {&_swigt__p_qpol_mls_range, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_netifcon[] = { {&_swigt__p_qpol_netifcon, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_nodecon[] = { {&_swigt__p_qpol_nodecon, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_pcidevicecon[] = { {&_swigt__p_qpol_pcidevicecon, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_pirqcon[] = { {&_swigt__p_qpol_pirqcon, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_polcap[] = { {&_swigt__p_qpol_polcap, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_policy[] = { {&_swigt__p_qpol_policy, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_portcon[] = { {&_swigt__p_qpol_portcon, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_range_trans[] = { {&_swigt__p_qpol_range_trans, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_role[] = { {&_swigt__p_qpol_role, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_role_allow[] = { {&_swigt__p_qpol_role_allow, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_role_trans[] = { {&_swigt__p_qpol_role_trans, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_rolebounds[] = { {&_swigt__p_qpol_rolebounds, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_semantic_level[] = { {&_swigt__p_qpol_semantic_level, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_terule[] = { {&_swigt__p_qpol_terule, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_type[] = { {&_swigt__p_qpol_type, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_typebounds[] = { {&_swigt__p_qpol_typebounds, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_user[] = { {&_swigt__p_qpol_user, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_userbounds[] = { {&_swigt__p_qpol_userbounds, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_qpol_validatetrans[] = { {&_swigt__p_qpol_validatetrans, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_short[] = { {&_swigt__p_short, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_signed_char[] = { {&_swigt__p_signed_char, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_unsigned_char[] = { {&_swigt__p_unsigned_char, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_unsigned_int[] = { {&_swigt__p_unsigned_int, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_unsigned_long_long[] = { {&_swigt__p_unsigned_long_long, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_unsigned_short[] = { {&_swigt__p_unsigned_short, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_void[] = { {&_swigt__p_void, 0, 0, 0},{0, 0, 0, 0}}; + +static swig_cast_info *swig_cast_initial[] = { + _swigc__p_char, + _swigc__p_int, + _swigc__p_long_long, + _swigc__p_qpol_avrule, + _swigc__p_qpol_bool, + _swigc__p_qpol_capability, + _swigc__p_qpol_cat, + _swigc__p_qpol_class, + _swigc__p_qpol_common, + _swigc__p_qpol_cond, + _swigc__p_qpol_cond_expr_node, + _swigc__p_qpol_constraint, + _swigc__p_qpol_constraint_expr_node, + _swigc__p_qpol_context, + _swigc__p_qpol_default_object, + _swigc__p_qpol_devicetreecon, + _swigc__p_qpol_filename_trans, + _swigc__p_qpol_fs_use, + _swigc__p_qpol_genfscon, + _swigc__p_qpol_iomemcon, + _swigc__p_qpol_ioportcon, + _swigc__p_qpol_isid, + _swigc__p_qpol_iterator, + _swigc__p_qpol_level, + _swigc__p_qpol_mls_level, + _swigc__p_qpol_mls_range, + _swigc__p_qpol_netifcon, + _swigc__p_qpol_nodecon, + _swigc__p_qpol_pcidevicecon, + _swigc__p_qpol_pirqcon, + _swigc__p_qpol_polcap, + _swigc__p_qpol_policy, + _swigc__p_qpol_portcon, + _swigc__p_qpol_range_trans, + _swigc__p_qpol_role, + _swigc__p_qpol_role_allow, + _swigc__p_qpol_role_trans, + _swigc__p_qpol_rolebounds, + _swigc__p_qpol_semantic_level, + _swigc__p_qpol_terule, + _swigc__p_qpol_type, + _swigc__p_qpol_typebounds, + _swigc__p_qpol_user, + _swigc__p_qpol_userbounds, + _swigc__p_qpol_validatetrans, + _swigc__p_short, + _swigc__p_signed_char, + _swigc__p_unsigned_char, + _swigc__p_unsigned_int, + _swigc__p_unsigned_long_long, + _swigc__p_unsigned_short, + _swigc__p_void, +}; + + +/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */ + +static swig_const_info swig_const_table[] = { +{0, 0, 0, 0.0, 0, 0}}; + +#ifdef __cplusplus +} +#endif +/* ----------------------------------------------------------------------------- + * Type initialization: + * This problem is tough by the requirement that no dynamic + * memory is used. Also, since swig_type_info structures store pointers to + * swig_cast_info structures and swig_cast_info structures store pointers back + * to swig_type_info structures, we need some lookup code at initialization. + * The idea is that swig generates all the structures that are needed. + * The runtime then collects these partially filled structures. + * The SWIG_InitializeModule function takes these initial arrays out of + * swig_module, and does all the lookup, filling in the swig_module.types + * array with the correct data and linking the correct swig_cast_info + * structures together. + * + * The generated swig_type_info structures are assigned staticly to an initial + * array. We just loop through that array, and handle each type individually. + * First we lookup if this type has been already loaded, and if so, use the + * loaded structure instead of the generated one. Then we have to fill in the + * cast linked list. The cast data is initially stored in something like a + * two-dimensional array. Each row corresponds to a type (there are the same + * number of rows as there are in the swig_type_initial array). Each entry in + * a column is one of the swig_cast_info structures for that type. + * The cast_initial array is actually an array of arrays, because each row has + * a variable number of columns. So to actually build the cast linked list, + * we find the array of casts associated with the type, and loop through it + * adding the casts to the list. The one last trick we need to do is making + * sure the type pointer in the swig_cast_info struct is correct. + * + * First off, we lookup the cast->type name to see if it is already loaded. + * There are three cases to handle: + * 1) If the cast->type has already been loaded AND the type we are adding + * casting info to has not been loaded (it is in this module), THEN we + * replace the cast->type pointer with the type pointer that has already + * been loaded. + * 2) If BOTH types (the one we are adding casting info to, and the + * cast->type) are loaded, THEN the cast info has already been loaded by + * the previous module so we just ignore it. + * 3) Finally, if cast->type has not already been loaded, then we add that + * swig_cast_info to the linked list (because the cast->type) pointer will + * be correct. + * ----------------------------------------------------------------------------- */ + +#ifdef __cplusplus +extern "C" { +#if 0 +} /* c-mode */ +#endif +#endif + +#if 0 +#define SWIGRUNTIME_DEBUG +#endif + + +SWIGRUNTIME void +SWIG_InitializeModule(void *clientdata) { + size_t i; + swig_module_info *module_head, *iter; + int found, init; + + /* check to see if the circular list has been setup, if not, set it up */ + if (swig_module.next==0) { + /* Initialize the swig_module */ + swig_module.type_initial = swig_type_initial; + swig_module.cast_initial = swig_cast_initial; + swig_module.next = &swig_module; + init = 1; + } else { + init = 0; + } + + /* Try and load any already created modules */ + module_head = SWIG_GetModule(clientdata); + if (!module_head) { + /* This is the first module loaded for this interpreter */ + /* so set the swig module into the interpreter */ + SWIG_SetModule(clientdata, &swig_module); + module_head = &swig_module; + } else { + /* the interpreter has loaded a SWIG module, but has it loaded this one? */ + found=0; + iter=module_head; + do { + if (iter==&swig_module) { + found=1; + break; + } + iter=iter->next; + } while (iter!= module_head); + + /* if the is found in the list, then all is done and we may leave */ + if (found) return; + /* otherwise we must add out module into the list */ + swig_module.next = module_head->next; + module_head->next = &swig_module; + } + + /* When multiple interpreters are used, a module could have already been initialized in + a different interpreter, but not yet have a pointer in this interpreter. + In this case, we do not want to continue adding types... everything should be + set up already */ + if (init == 0) return; + + /* Now work on filling in swig_module.types */ +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: size %d\n", swig_module.size); +#endif + for (i = 0; i < swig_module.size; ++i) { + swig_type_info *type = 0; + swig_type_info *ret; + swig_cast_info *cast; + +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name); +#endif + + /* if there is another module already loaded */ + if (swig_module.next != &swig_module) { + type = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, swig_module.type_initial[i]->name); + } + if (type) { + /* Overwrite clientdata field */ +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: found type %s\n", type->name); +#endif + if (swig_module.type_initial[i]->clientdata) { + type->clientdata = swig_module.type_initial[i]->clientdata; +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: found and overwrite type %s \n", type->name); +#endif + } + } else { + type = swig_module.type_initial[i]; + } + + /* Insert casting types */ + cast = swig_module.cast_initial[i]; + while (cast->type) { + /* Don't need to add information already in the list */ + ret = 0; +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: look cast %s\n", cast->type->name); +#endif + if (swig_module.next != &swig_module) { + ret = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, cast->type->name); +#ifdef SWIGRUNTIME_DEBUG + if (ret) printf("SWIG_InitializeModule: found cast %s\n", ret->name); +#endif + } + if (ret) { + if (type == swig_module.type_initial[i]) { +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: skip old type %s\n", ret->name); +#endif + cast->type = ret; + ret = 0; + } else { + /* Check for casting already in the list */ + swig_cast_info *ocast = SWIG_TypeCheck(ret->name, type); +#ifdef SWIGRUNTIME_DEBUG + if (ocast) printf("SWIG_InitializeModule: skip old cast %s\n", ret->name); +#endif + if (!ocast) ret = 0; + } + } + + if (!ret) { +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: adding cast %s\n", cast->type->name); +#endif + if (type->cast) { + type->cast->prev = cast; + cast->next = type->cast; + } + type->cast = cast; + } + cast++; + } + /* Set entry in modules->types array equal to the type */ + swig_module.types[i] = type; + } + swig_module.types[i] = 0; + +#ifdef SWIGRUNTIME_DEBUG + printf("**** SWIG_InitializeModule: Cast List ******\n"); + for (i = 0; i < swig_module.size; ++i) { + int j = 0; + swig_cast_info *cast = swig_module.cast_initial[i]; + printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name); + while (cast->type) { + printf("SWIG_InitializeModule: cast type %s\n", cast->type->name); + cast++; + ++j; + } + printf("---- Total casts: %d\n",j); + } + printf("**** SWIG_InitializeModule: Cast List ******\n"); +#endif +} + +/* This function will propagate the clientdata field of type to +* any new swig_type_info structures that have been added into the list +* of equivalent types. It is like calling +* SWIG_TypeClientData(type, clientdata) a second time. +*/ +SWIGRUNTIME void +SWIG_PropagateClientData(void) { + size_t i; + swig_cast_info *equiv; + static int init_run = 0; + + if (init_run) return; + init_run = 1; + + for (i = 0; i < swig_module.size; i++) { + if (swig_module.types[i]->clientdata) { + equiv = swig_module.types[i]->cast; + while (equiv) { + if (!equiv->converter) { + if (equiv->type && !equiv->type->clientdata) + SWIG_TypeClientData(equiv->type, swig_module.types[i]->clientdata); + } + equiv = equiv->next; + } + } + } +} + +#ifdef __cplusplus +#if 0 +{ + /* c-mode */ +#endif +} +#endif + + + +#ifdef __cplusplus +extern "C" { +#endif + + /* Python-specific SWIG API */ +#define SWIG_newvarlink() SWIG_Python_newvarlink() +#define SWIG_addvarlink(p, name, get_attr, set_attr) SWIG_Python_addvarlink(p, name, get_attr, set_attr) +#define SWIG_InstallConstants(d, constants) SWIG_Python_InstallConstants(d, constants) + + /* ----------------------------------------------------------------------------- + * global variable support code. + * ----------------------------------------------------------------------------- */ + + typedef struct swig_globalvar { + char *name; /* Name of global variable */ + PyObject *(*get_attr)(void); /* Return the current value */ + int (*set_attr)(PyObject *); /* Set the value */ + struct swig_globalvar *next; + } swig_globalvar; + + typedef struct swig_varlinkobject { + PyObject_HEAD + swig_globalvar *vars; + } swig_varlinkobject; + + SWIGINTERN PyObject * + swig_varlink_repr(swig_varlinkobject *SWIGUNUSEDPARM(v)) { +#if PY_VERSION_HEX >= 0x03000000 + return PyUnicode_InternFromString("<Swig global variables>"); +#else + return PyString_FromString("<Swig global variables>"); +#endif + } + + SWIGINTERN PyObject * + swig_varlink_str(swig_varlinkobject *v) { +#if PY_VERSION_HEX >= 0x03000000 + PyObject *str = PyUnicode_InternFromString("("); + PyObject *tail; + PyObject *joined; + swig_globalvar *var; + for (var = v->vars; var; var=var->next) { + tail = PyUnicode_FromString(var->name); + joined = PyUnicode_Concat(str, tail); + Py_DecRef(str); + Py_DecRef(tail); + str = joined; + if (var->next) { + tail = PyUnicode_InternFromString(", "); + joined = PyUnicode_Concat(str, tail); + Py_DecRef(str); + Py_DecRef(tail); + str = joined; + } + } + tail = PyUnicode_InternFromString(")"); + joined = PyUnicode_Concat(str, tail); + Py_DecRef(str); + Py_DecRef(tail); + str = joined; +#else + PyObject *str = PyString_FromString("("); + swig_globalvar *var; + for (var = v->vars; var; var=var->next) { + PyString_ConcatAndDel(&str,PyString_FromString(var->name)); + if (var->next) PyString_ConcatAndDel(&str,PyString_FromString(", ")); + } + PyString_ConcatAndDel(&str,PyString_FromString(")")); +#endif + return str; + } + + SWIGINTERN int + swig_varlink_print(swig_varlinkobject *v, FILE *fp, int SWIGUNUSEDPARM(flags)) { + char *tmp; + PyObject *str = swig_varlink_str(v); + fprintf(fp,"Swig global variables "); + fprintf(fp,"%s\n", tmp = SWIG_Python_str_AsChar(str)); + SWIG_Python_str_DelForPy3(tmp); + Py_DECREF(str); + return 0; + } + + SWIGINTERN void + swig_varlink_dealloc(swig_varlinkobject *v) { + swig_globalvar *var = v->vars; + while (var) { + swig_globalvar *n = var->next; + free(var->name); + free(var); + var = n; + } + } + + SWIGINTERN PyObject * + swig_varlink_getattr(swig_varlinkobject *v, char *n) { + PyObject *res = NULL; + swig_globalvar *var = v->vars; + while (var) { + if (strcmp(var->name,n) == 0) { + res = (*var->get_attr)(); + break; + } + var = var->next; + } + if (res == NULL && !PyErr_Occurred()) { + PyErr_SetString(PyExc_NameError,"Unknown C global variable"); + } + return res; + } + + SWIGINTERN int + swig_varlink_setattr(swig_varlinkobject *v, char *n, PyObject *p) { + int res = 1; + swig_globalvar *var = v->vars; + while (var) { + if (strcmp(var->name,n) == 0) { + res = (*var->set_attr)(p); + break; + } + var = var->next; + } + if (res == 1 && !PyErr_Occurred()) { + PyErr_SetString(PyExc_NameError,"Unknown C global variable"); + } + return res; + } + + SWIGINTERN PyTypeObject* + swig_varlink_type(void) { + static char varlink__doc__[] = "Swig var link object"; + static PyTypeObject varlink_type; + static int type_init = 0; + if (!type_init) { + const PyTypeObject tmp = { + /* PyObject header changed in Python 3 */ +#if PY_VERSION_HEX >= 0x03000000 + PyVarObject_HEAD_INIT(NULL, 0) +#else + PyObject_HEAD_INIT(NULL) + 0, /* ob_size */ +#endif + (char *)"swigvarlink", /* tp_name */ + sizeof(swig_varlinkobject), /* tp_basicsize */ + 0, /* tp_itemsize */ + (destructor) swig_varlink_dealloc, /* tp_dealloc */ + (printfunc) swig_varlink_print, /* tp_print */ + (getattrfunc) swig_varlink_getattr, /* tp_getattr */ + (setattrfunc) swig_varlink_setattr, /* tp_setattr */ + 0, /* tp_compare */ + (reprfunc) swig_varlink_repr, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + (reprfunc) swig_varlink_str, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + 0, /* tp_flags */ + varlink__doc__, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ +#if PY_VERSION_HEX >= 0x02020000 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */ +#endif +#if PY_VERSION_HEX >= 0x02030000 + 0, /* tp_del */ +#endif +#if PY_VERSION_HEX >= 0x02060000 + 0, /* tp_version */ +#endif +#ifdef COUNT_ALLOCS + 0,0,0,0 /* tp_alloc -> tp_next */ +#endif + }; + varlink_type = tmp; + type_init = 1; +#if PY_VERSION_HEX < 0x02020000 + varlink_type.ob_type = &PyType_Type; +#else + if (PyType_Ready(&varlink_type) < 0) + return NULL; +#endif + } + return &varlink_type; + } + + /* Create a variable linking object for use later */ + SWIGINTERN PyObject * + SWIG_Python_newvarlink(void) { + swig_varlinkobject *result = PyObject_NEW(swig_varlinkobject, swig_varlink_type()); + if (result) { + result->vars = 0; + } + return ((PyObject*) result); + } + + SWIGINTERN void + SWIG_Python_addvarlink(PyObject *p, char *name, PyObject *(*get_attr)(void), int (*set_attr)(PyObject *p)) { + swig_varlinkobject *v = (swig_varlinkobject *) p; + swig_globalvar *gv = (swig_globalvar *) malloc(sizeof(swig_globalvar)); + if (gv) { + size_t size = strlen(name)+1; + gv->name = (char *)malloc(size); + if (gv->name) { + strncpy(gv->name,name,size); + gv->get_attr = get_attr; + gv->set_attr = set_attr; + gv->next = v->vars; + } + } + v->vars = gv; + } + + SWIGINTERN PyObject * + SWIG_globals(void) { + static PyObject *_SWIG_globals = 0; + if (!_SWIG_globals) _SWIG_globals = SWIG_newvarlink(); + return _SWIG_globals; + } + + /* ----------------------------------------------------------------------------- + * constants/methods manipulation + * ----------------------------------------------------------------------------- */ + + /* Install Constants */ + SWIGINTERN void + SWIG_Python_InstallConstants(PyObject *d, swig_const_info constants[]) { + PyObject *obj = 0; + size_t i; + for (i = 0; constants[i].type; ++i) { + switch(constants[i].type) { + case SWIG_PY_POINTER: + obj = SWIG_InternalNewPointerObj(constants[i].pvalue, *(constants[i]).ptype,0); + break; + case SWIG_PY_BINARY: + obj = SWIG_NewPackedObj(constants[i].pvalue, constants[i].lvalue, *(constants[i].ptype)); + break; + default: + obj = 0; + break; + } + if (obj) { + PyDict_SetItemString(d, constants[i].name, obj); + Py_DECREF(obj); + } + } + } + + /* -----------------------------------------------------------------------------*/ + /* Fix SwigMethods to carry the callback ptrs when needed */ + /* -----------------------------------------------------------------------------*/ + + SWIGINTERN void + SWIG_Python_FixMethods(PyMethodDef *methods, + swig_const_info *const_table, + swig_type_info **types, + swig_type_info **types_initial) { + size_t i; + for (i = 0; methods[i].ml_name; ++i) { + const char *c = methods[i].ml_doc; + if (c && (c = strstr(c, "swig_ptr: "))) { + int j; + swig_const_info *ci = 0; + const char *name = c + 10; + for (j = 0; const_table[j].type; ++j) { + if (strncmp(const_table[j].name, name, + strlen(const_table[j].name)) == 0) { + ci = &(const_table[j]); + break; + } + } + if (ci) { + void *ptr = (ci->type == SWIG_PY_POINTER) ? ci->pvalue : 0; + if (ptr) { + size_t shift = (ci->ptype) - types; + swig_type_info *ty = types_initial[shift]; + size_t ldoc = (c - methods[i].ml_doc); + size_t lptr = strlen(ty->name)+2*sizeof(void*)+2; + char *ndoc = (char*)malloc(ldoc + lptr + 10); + if (ndoc) { + char *buff = ndoc; + strncpy(buff, methods[i].ml_doc, ldoc); + buff += ldoc; + strncpy(buff, "swig_ptr: ", 10); + buff += 10; + SWIG_PackVoidPtr(buff, ptr, ty->name, lptr); + methods[i].ml_doc = ndoc; + } + } + } + } + } + } + +#ifdef __cplusplus +} +#endif + +/* -----------------------------------------------------------------------------* + * Partial Init method + * -----------------------------------------------------------------------------*/ + +#ifdef __cplusplus +extern "C" +#endif + +SWIGEXPORT +#if PY_VERSION_HEX >= 0x03000000 +PyObject* +#else +void +#endif +SWIG_init(void) { + PyObject *m, *d, *md; +#if PY_VERSION_HEX >= 0x03000000 + static struct PyModuleDef SWIG_module = { +# if PY_VERSION_HEX >= 0x03020000 + PyModuleDef_HEAD_INIT, +# else + { + PyObject_HEAD_INIT(NULL) + NULL, /* m_init */ + 0, /* m_index */ + NULL, /* m_copy */ + }, +# endif + (char *) SWIG_name, + NULL, + -1, + SwigMethods, + NULL, + NULL, + NULL, + NULL + }; +#endif + +#if defined(SWIGPYTHON_BUILTIN) + static SwigPyClientData SwigPyObject_clientdata = { + 0, 0, 0, 0, 0, 0, 0 + }; + static PyGetSetDef this_getset_def = { + (char *)"this", &SwigPyBuiltin_ThisClosure, NULL, NULL, NULL + }; + static SwigPyGetSet thisown_getset_closure = { + (PyCFunction) SwigPyObject_own, + (PyCFunction) SwigPyObject_own + }; + static PyGetSetDef thisown_getset_def = { + (char *)"thisown", SwigPyBuiltin_GetterClosure, SwigPyBuiltin_SetterClosure, NULL, &thisown_getset_closure + }; + PyObject *metatype_args; + PyTypeObject *builtin_pytype; + int builtin_base_count; + swig_type_info *builtin_basetype; + PyObject *tuple; + PyGetSetDescrObject *static_getset; + PyTypeObject *metatype; + SwigPyClientData *cd; + PyObject *public_interface, *public_symbol; + PyObject *this_descr; + PyObject *thisown_descr; + int i; + + (void)builtin_pytype; + (void)builtin_base_count; + (void)builtin_basetype; + (void)tuple; + (void)static_getset; + + /* metatype is used to implement static member variables. */ + metatype_args = Py_BuildValue("(s(O){})", "SwigPyObjectType", &PyType_Type); + assert(metatype_args); + metatype = (PyTypeObject *) PyType_Type.tp_call((PyObject *) &PyType_Type, metatype_args, NULL); + assert(metatype); + Py_DECREF(metatype_args); + metatype->tp_setattro = (setattrofunc) &SwigPyObjectType_setattro; + assert(PyType_Ready(metatype) >= 0); +#endif + + /* Fix SwigMethods to carry the callback ptrs when needed */ + SWIG_Python_FixMethods(SwigMethods, swig_const_table, swig_types, swig_type_initial); + +#if PY_VERSION_HEX >= 0x03000000 + m = PyModule_Create(&SWIG_module); +#else + m = Py_InitModule((char *) SWIG_name, SwigMethods); +#endif + md = d = PyModule_GetDict(m); + (void)md; + + SWIG_InitializeModule(0); + +#ifdef SWIGPYTHON_BUILTIN + SwigPyObject_stype = SWIG_MangledTypeQuery("_p_SwigPyObject"); + assert(SwigPyObject_stype); + cd = (SwigPyClientData*) SwigPyObject_stype->clientdata; + if (!cd) { + SwigPyObject_stype->clientdata = &SwigPyObject_clientdata; + SwigPyObject_clientdata.pytype = SwigPyObject_TypeOnce(); + } else if (SwigPyObject_TypeOnce()->tp_basicsize != cd->pytype->tp_basicsize) { + PyErr_SetString(PyExc_RuntimeError, "Import error: attempted to load two incompatible swig-generated modules."); +# if PY_VERSION_HEX >= 0x03000000 + return NULL; +# else + return; +# endif + } + + /* All objects have a 'this' attribute */ + this_descr = PyDescr_NewGetSet(SwigPyObject_type(), &this_getset_def); + (void)this_descr; + + /* All objects have a 'thisown' attribute */ + thisown_descr = PyDescr_NewGetSet(SwigPyObject_type(), &thisown_getset_def); + (void)thisown_descr; + + public_interface = PyList_New(0); + public_symbol = 0; + (void)public_symbol; + + PyDict_SetItemString(md, "__all__", public_interface); + Py_DECREF(public_interface); + for (i = 0; SwigMethods[i].ml_name != NULL; ++i) + SwigPyBuiltin_AddPublicSymbol(public_interface, SwigMethods[i].ml_name); + for (i = 0; swig_const_table[i].name != 0; ++i) + SwigPyBuiltin_AddPublicSymbol(public_interface, swig_const_table[i].name); +#endif + + SWIG_InstallConstants(d,swig_const_table); + + SWIG_Python_SetConstant(d, "QPOL_POLICY_OPTION_NO_NEVERALLOWS",SWIG_From_int((int)(0x00000001))); + SWIG_Python_SetConstant(d, "QPOL_POLICY_OPTION_NO_RULES",SWIG_From_int((int)(0x00000002))); + SWIG_Python_SetConstant(d, "QPOL_POLICY_OPTION_MATCH_SYSTEM",SWIG_From_int((int)(0x00000004))); + SWIG_Python_SetConstant(d, "QPOL_POLICY_MAX_VERSION",SWIG_From_int((int)(POLICYDB_VERSION_MAX))); + SWIG_Python_SetConstant(d, "QPOL_POLICY_MIN_VERSION",SWIG_From_int((int)(POLICYDB_VERSION_MIN))); + SWIG_Python_SetConstant(d, "QPOL_CAP_ATTRIB_NAMES",SWIG_From_int((int)(QPOL_CAP_ATTRIB_NAMES))); + SWIG_Python_SetConstant(d, "QPOL_CAP_SYN_RULES",SWIG_From_int((int)(QPOL_CAP_SYN_RULES))); + SWIG_Python_SetConstant(d, "QPOL_CAP_LINE_NUMBERS",SWIG_From_int((int)(QPOL_CAP_LINE_NUMBERS))); + SWIG_Python_SetConstant(d, "QPOL_CAP_CONDITIONALS",SWIG_From_int((int)(QPOL_CAP_CONDITIONALS))); + SWIG_Python_SetConstant(d, "QPOL_CAP_MLS",SWIG_From_int((int)(QPOL_CAP_MLS))); + SWIG_Python_SetConstant(d, "QPOL_CAP_MODULES",SWIG_From_int((int)(QPOL_CAP_MODULES))); + SWIG_Python_SetConstant(d, "QPOL_CAP_RULES_LOADED",SWIG_From_int((int)(QPOL_CAP_RULES_LOADED))); + SWIG_Python_SetConstant(d, "QPOL_CAP_SOURCE",SWIG_From_int((int)(QPOL_CAP_SOURCE))); + SWIG_Python_SetConstant(d, "QPOL_CAP_NEVERALLOW",SWIG_From_int((int)(QPOL_CAP_NEVERALLOW))); + SWIG_Python_SetConstant(d, "QPOL_CAP_POLCAPS",SWIG_From_int((int)(QPOL_CAP_POLCAPS))); + SWIG_Python_SetConstant(d, "QPOL_CAP_BOUNDS",SWIG_From_int((int)(QPOL_CAP_BOUNDS))); + SWIG_Python_SetConstant(d, "QPOL_CAP_DEFAULT_OBJECTS",SWIG_From_int((int)(QPOL_CAP_DEFAULT_OBJECTS))); + SWIG_Python_SetConstant(d, "QPOL_CAP_DEFAULT_TYPE",SWIG_From_int((int)(QPOL_CAP_DEFAULT_TYPE))); + SWIG_Python_SetConstant(d, "QPOL_CAP_PERMISSIVE",SWIG_From_int((int)(QPOL_CAP_PERMISSIVE))); + SWIG_Python_SetConstant(d, "QPOL_CAP_FILENAME_TRANS",SWIG_From_int((int)(QPOL_CAP_FILENAME_TRANS))); + SWIG_Python_SetConstant(d, "QPOL_CAP_ROLETRANS",SWIG_From_int((int)(QPOL_CAP_ROLETRANS))); + SWIG_Python_SetConstant(d, "QPOL_CAP_XPERM_IOCTL",SWIG_From_int((int)(QPOL_CAP_XPERM_IOCTL))); + SWIG_Python_SetConstant(d, "QPOL_FS_USE_XATTR",SWIG_From_unsigned_SS_int((unsigned int)(1U))); + SWIG_Python_SetConstant(d, "QPOL_FS_USE_TRANS",SWIG_From_unsigned_SS_int((unsigned int)(2U))); + SWIG_Python_SetConstant(d, "QPOL_FS_USE_TASK",SWIG_From_unsigned_SS_int((unsigned int)(3U))); + SWIG_Python_SetConstant(d, "QPOL_FS_USE_GENFS",SWIG_From_unsigned_SS_int((unsigned int)(4U))); + SWIG_Python_SetConstant(d, "QPOL_FS_USE_NONE",SWIG_From_unsigned_SS_int((unsigned int)(5U))); + SWIG_Python_SetConstant(d, "QPOL_FS_USE_PSID",SWIG_From_unsigned_SS_int((unsigned int)(6U))); + SWIG_Python_SetConstant(d, "QPOL_CLASS_ALL",SWIG_From_unsigned_SS_int((unsigned int)(0U))); + SWIG_Python_SetConstant(d, "QPOL_CLASS_BLK_FILE",SWIG_From_unsigned_SS_int((unsigned int)(11U))); + SWIG_Python_SetConstant(d, "QPOL_CLASS_CHR_FILE",SWIG_From_unsigned_SS_int((unsigned int)(10U))); + SWIG_Python_SetConstant(d, "QPOL_CLASS_DIR",SWIG_From_unsigned_SS_int((unsigned int)(7U))); + SWIG_Python_SetConstant(d, "QPOL_CLASS_FIFO_FILE",SWIG_From_unsigned_SS_int((unsigned int)(13U))); + SWIG_Python_SetConstant(d, "QPOL_CLASS_FILE",SWIG_From_unsigned_SS_int((unsigned int)(6U))); + SWIG_Python_SetConstant(d, "QPOL_CLASS_LNK_FILE",SWIG_From_unsigned_SS_int((unsigned int)(9U))); + SWIG_Python_SetConstant(d, "QPOL_CLASS_SOCK_FILE",SWIG_From_unsigned_SS_int((unsigned int)(12U))); + SWIG_Python_SetConstant(d, "QPOL_IPV4",SWIG_From_int((int)(0))); + SWIG_Python_SetConstant(d, "QPOL_IPV6",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "IPPROTO_TCP",SWIG_From_int((int)(6))); + SWIG_Python_SetConstant(d, "IPPROTO_UDP",SWIG_From_int((int)(17))); + SWIG_Python_SetConstant(d, "QPOL_CEXPR_TYPE_NOT",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "QPOL_CEXPR_TYPE_AND",SWIG_From_int((int)(2))); + SWIG_Python_SetConstant(d, "QPOL_CEXPR_TYPE_OR",SWIG_From_int((int)(3))); + SWIG_Python_SetConstant(d, "QPOL_CEXPR_TYPE_ATTR",SWIG_From_int((int)(4))); + SWIG_Python_SetConstant(d, "QPOL_CEXPR_TYPE_NAMES",SWIG_From_int((int)(5))); + SWIG_Python_SetConstant(d, "QPOL_CEXPR_SYM_USER",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "QPOL_CEXPR_SYM_ROLE",SWIG_From_int((int)(2))); + SWIG_Python_SetConstant(d, "QPOL_CEXPR_SYM_TYPE",SWIG_From_int((int)(4))); + SWIG_Python_SetConstant(d, "QPOL_CEXPR_SYM_TARGET",SWIG_From_int((int)(8))); + SWIG_Python_SetConstant(d, "QPOL_CEXPR_SYM_XTARGET",SWIG_From_int((int)(16))); + SWIG_Python_SetConstant(d, "QPOL_CEXPR_SYM_L1L2",SWIG_From_int((int)(32))); + SWIG_Python_SetConstant(d, "QPOL_CEXPR_SYM_L1H2",SWIG_From_int((int)(64))); + SWIG_Python_SetConstant(d, "QPOL_CEXPR_SYM_H1L2",SWIG_From_int((int)(128))); + SWIG_Python_SetConstant(d, "QPOL_CEXPR_SYM_H1H2",SWIG_From_int((int)(256))); + SWIG_Python_SetConstant(d, "QPOL_CEXPR_SYM_L1H1",SWIG_From_int((int)(512))); + SWIG_Python_SetConstant(d, "QPOL_CEXPR_SYM_L2H2",SWIG_From_int((int)(1024))); + SWIG_Python_SetConstant(d, "QPOL_CEXPR_OP_EQ",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "QPOL_CEXPR_OP_NEQ",SWIG_From_int((int)(2))); + SWIG_Python_SetConstant(d, "QPOL_CEXPR_OP_DOM",SWIG_From_int((int)(3))); + SWIG_Python_SetConstant(d, "QPOL_CEXPR_OP_DOMBY",SWIG_From_int((int)(4))); + SWIG_Python_SetConstant(d, "QPOL_CEXPR_OP_INCOMP",SWIG_From_int((int)(5))); + SWIG_Python_SetConstant(d, "QPOL_RULE_ALLOW",SWIG_From_int((int)(0x0001))); + SWIG_Python_SetConstant(d, "QPOL_RULE_NEVERALLOW",SWIG_From_int((int)(0x0080))); + SWIG_Python_SetConstant(d, "QPOL_RULE_AUDITALLOW",SWIG_From_int((int)(0x0002))); + SWIG_Python_SetConstant(d, "QPOL_RULE_DONTAUDIT",SWIG_From_int((int)(0x0004))); + SWIG_Python_SetConstant(d, "QPOL_RULE_XPERMS_ALLOW",SWIG_From_int((int)(0x0100))); + SWIG_Python_SetConstant(d, "QPOL_RULE_XPERMS_AUDITALLOW",SWIG_From_int((int)(0x0200))); + SWIG_Python_SetConstant(d, "QPOL_RULE_XPERMS_DONTAUDIT",SWIG_From_int((int)(0x0400))); + SWIG_Python_SetConstant(d, "QPOL_RULE_XPERMS_NEVERALLOW",SWIG_From_int((int)(0x0800))); + SWIG_Python_SetConstant(d, "QPOL_RULE_TYPE_TRANS",SWIG_From_int((int)(16))); + SWIG_Python_SetConstant(d, "QPOL_RULE_TYPE_CHANGE",SWIG_From_int((int)(64))); + SWIG_Python_SetConstant(d, "QPOL_RULE_TYPE_MEMBER",SWIG_From_int((int)(32))); + SWIG_Python_SetConstant(d, "QPOL_COND_EXPR_BOOL",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "QPOL_COND_EXPR_NOT",SWIG_From_int((int)(2))); + SWIG_Python_SetConstant(d, "QPOL_COND_EXPR_OR",SWIG_From_int((int)(3))); + SWIG_Python_SetConstant(d, "QPOL_COND_EXPR_AND",SWIG_From_int((int)(4))); + SWIG_Python_SetConstant(d, "QPOL_COND_EXPR_XOR",SWIG_From_int((int)(5))); + SWIG_Python_SetConstant(d, "QPOL_COND_EXPR_EQ",SWIG_From_int((int)(6))); + SWIG_Python_SetConstant(d, "QPOL_COND_EXPR_NEQ",SWIG_From_int((int)(7))); +#if PY_VERSION_HEX >= 0x03000000 + return m; +#else + return; +#endif +} + diff --git a/lib/python2.7/site-packages/setools/policyrep/rbacrule.py b/lib/python2.7/site-packages/setools/policyrep/rbacrule.py index d327775..e923162 100644..100755 --- a/lib/python2.7/site-packages/setools/policyrep/rbacrule.py +++ b/lib/python2.7/site-packages/setools/policyrep/rbacrule.py @@ -45,12 +45,12 @@ def expanded_rbac_rule_factory(original, source, target): target The target type of the expanded rule. """ - if isinstance(original, RoleAllow): + if isinstance(original, (ExpandedRoleAllow, ExpandedRoleTransition)): + return original + elif isinstance(original, RoleAllow): rule = ExpandedRoleAllow(original.policy, original.qpol_symbol) elif isinstance(original, RoleTransition): rule = ExpandedRoleTransition(original.policy, original.qpol_symbol) - elif isinstance(original, (ExpandedRoleAllow, ExpandedRoleTransition)): - return original else: raise TypeError("The original rule must be an RBAC rule class.") diff --git a/lib/python2.7/site-packages/setools/policyrep/role.py b/lib/python2.7/site-packages/setools/policyrep/role.py index 1d9fbe1..1d9fbe1 100644..100755 --- a/lib/python2.7/site-packages/setools/policyrep/role.py +++ b/lib/python2.7/site-packages/setools/policyrep/role.py diff --git a/lib/python2.7/site-packages/setools/policyrep/rule.py b/lib/python2.7/site-packages/setools/policyrep/rule.py index b7a6a9d..be6e8d0 100644..100755 --- a/lib/python2.7/site-packages/setools/policyrep/rule.py +++ b/lib/python2.7/site-packages/setools/policyrep/rule.py @@ -25,6 +25,8 @@ class PolicyRule(symbol.PolicySymbol): """This is base class for policy rules.""" + extended = False + def __str__(self): raise NotImplementedError diff --git a/lib/python2.7/site-packages/setools/policyrep/symbol.py b/lib/python2.7/site-packages/setools/policyrep/symbol.py index 556cc2d..556cc2d 100644..100755 --- a/lib/python2.7/site-packages/setools/policyrep/symbol.py +++ b/lib/python2.7/site-packages/setools/policyrep/symbol.py diff --git a/lib/python2.7/site-packages/setools/policyrep/terule.py b/lib/python2.7/site-packages/setools/policyrep/terule.py index 7fe56cc..fd5b1e1 100644..100755 --- a/lib/python2.7/site-packages/setools/policyrep/terule.py +++ b/lib/python2.7/site-packages/setools/policyrep/terule.py @@ -29,7 +29,10 @@ def te_rule_factory(policy, symbol): """Factory function for creating TE rule objects.""" if isinstance(symbol, qpol.qpol_avrule_t): - return AVRule(policy, symbol) + if symbol.is_extended(policy): + return AVRuleXperm(policy, symbol) + else: + return AVRule(policy, symbol) elif isinstance(symbol, (qpol.qpol_terule_t, qpol.qpol_filename_trans_t)): return TERule(policy, symbol) else: @@ -45,12 +48,14 @@ def expanded_te_rule_factory(original, source, target): target The target type of the expanded rule. """ - if isinstance(original, AVRule): + if isinstance(original, (ExpandedAVRule, ExpandedAVRuleXperm, ExpandedTERule)): + return original + elif isinstance(original, AVRuleXperm): + rule = ExpandedAVRuleXperm(original.policy, original.qpol_symbol) + elif isinstance(original, AVRule): rule = ExpandedAVRule(original.policy, original.qpol_symbol) elif isinstance(original, TERule): rule = ExpandedTERule(original.policy, original.qpol_symbol) - elif isinstance(original, (ExpandedAVRule, ExpandedTERule)): - return original else: raise TypeError("The original rule must be a TE rule class.") @@ -63,7 +68,8 @@ def expanded_te_rule_factory(original, source, target): def validate_ruletype(t): """Validate TE Rule types.""" if t not in ["allow", "auditallow", "dontaudit", "neverallow", - "type_transition", "type_member", "type_change"]: + "type_transition", "type_member", "type_change", + "allowxperm", "auditallowxperm", "dontauditxperm", "neverallowxperm"]: raise exception.InvalidTERuleType("{0} is not a valid TE rule type.".format(t)) return t @@ -92,10 +98,7 @@ class BaseTERule(rule.PolicyRule): """The rule's conditional expression.""" try: return boolcond.condexpr_factory(self.policy, self.qpol_symbol.cond(self.policy)) - except (AttributeError, ValueError): - # AttributeError: name filetrans rules cannot be conditional - # so no member function - # ValueError: The rule is not conditional + except AttributeError: raise exception.RuleNotConditional @property @@ -103,10 +106,7 @@ class BaseTERule(rule.PolicyRule): """The conditional block of the rule (T/F)""" try: return bool(self.qpol_symbol.which_list(self.policy)) - except (AttributeError, ValueError): - # AttributeError: name filetrans rules cannot be conditional - # so no member function - # ValueError: The rule is not conditional + except AttributeError: raise exception.RuleNotConditional def expand(self): @@ -125,9 +125,8 @@ class AVRule(BaseTERule): except AttributeError: self._rule_string = "{0.ruletype} {0.source} {0.target}:{0.tclass} ".format(self) - perms = self.perms - # allow/dontaudit/auditallow/neverallow rules + perms = self.perms if len(perms) > 1: self._rule_string += "{{ {0} }};".format(' '.join(perms)) else: @@ -156,6 +155,96 @@ class AVRule(BaseTERule): raise exception.RuleUseError("{0} rules do not have file names".format(self.ruletype)) +class ioctlSet(set): + + """ + A set with overridden string functions which compresses + the output into ioctl ranges instead of individual elements. + """ + + def __format__(self, spec): + """ + String formating. + + The standard formatting (no specification) will render the + ranges of ioctls, space separated. + + The , option by itself will render the ranges of ioctls, + comma separated + + Any other combination of formatting options will fall back + to set's formatting behavior. + """ + + # generate short permission notation + perms = sorted(self) + shortlist = [] + for _, i in itertools.groupby(perms, key=lambda k, c=itertools.count(): k - next(c)): + group = list(i) + if len(group) > 1: + shortlist.append("{0:#06x}-{1:#06x}".format(group[0], group[-1])) + else: + shortlist.append("{0:#06x}".format(group[0])) + + if not spec: + return " ".join(shortlist) + elif spec == ",": + return ", ".join(shortlist) + else: + return super(ioctlSet, self).__format__(spec) + + def __str__(self): + return "{0}".format(self) + + def __repr__(self): + return "{{ {0:,} }}".format(self) + + def ranges(self): + """ + Return the number of ranges in the set. Main use + is to determine if brackets need to be used in + string output. + """ + return sum(1 for (_a, _b) in itertools.groupby( + sorted(self), key=lambda k, c=itertools.count(): k - next(c))) + + +class AVRuleXperm(AVRule): + + """An extended permission access vector type enforcement rule.""" + + extended = True + + def __hash__(self): + return hash("{0.ruletype}|{0.source}|{0.target}|{0.tclass}|{0.xperm_type}".format(self)) + + def __str__(self): + try: + return self._rule_string + except AttributeError: + self._rule_string = "{0.ruletype} {0.source} {0.target}:{0.tclass} {0.xperm_type} ". \ + format(self) + + # generate short permission notation + perms = self.perms + if perms.ranges() > 1: + self._rule_string += "{{ {0} }};".format(perms) + else: + self._rule_string += "{0};".format(perms) + + return self._rule_string + + @property + def perms(self): + """The rule's extended permission set.""" + return ioctlSet(self.qpol_symbol.xperm_iter(self.policy)) + + @property + def xperm_type(self): + """The standard permission extended by these permissions (e.g. ioctl).""" + return self.qpol_symbol.xperm_type(self.policy) + + class TERule(BaseTERule): """A type_* type enforcement rule.""" @@ -229,6 +318,15 @@ class ExpandedAVRule(AVRule): origin = None +class ExpandedAVRuleXperm(AVRuleXperm): + + """An expanded extended permission access vector type enforcement rule.""" + + source = None + target = None + origin = None + + class ExpandedTERule(TERule): """An expanded type_* type enforcement rule.""" diff --git a/lib/python2.7/site-packages/setools/policyrep/typeattr.py b/lib/python2.7/site-packages/setools/policyrep/typeattr.py index a52c69a..b219c59 100644..100755 --- a/lib/python2.7/site-packages/setools/policyrep/typeattr.py +++ b/lib/python2.7/site-packages/setools/policyrep/typeattr.py @@ -159,16 +159,19 @@ class TypeAttribute(BaseType): def attributes(self): """Generator that yields all attributes for this type.""" - raise TypeError("{0} is an attribute, thus does not have attributes.".format(self)) + raise exception.SymbolUseError("{0} is an attribute, thus does not have attributes.". + format(self)) def aliases(self): """Generator that yields all aliases for this type.""" - raise TypeError("{0} is an attribute, thus does not have aliases.".format(self)) + raise exception.SymbolUseError("{0} is an attribute, thus does not have aliases.". + format(self)) @property def ispermissive(self): """(T/F) the type is permissive.""" - raise TypeError("{0} is an attribute, thus cannot be permissive.".format(self)) + raise exception.SymbolUseError("{0} is an attribute, thus cannot be permissive.". + format(self)) def statement(self): return "attribute {0};".format(self) diff --git a/lib/python2.7/site-packages/setools/policyrep/user.py b/lib/python2.7/site-packages/setools/policyrep/user.py index 94f81bc..94f81bc 100644..100755 --- a/lib/python2.7/site-packages/setools/policyrep/user.py +++ b/lib/python2.7/site-packages/setools/policyrep/user.py diff --git a/lib/python2.7/site-packages/setools/policyrep/xencontext.py b/lib/python2.7/site-packages/setools/policyrep/xencontext.py new file mode 100644 index 0000000..fe78ec7 --- /dev/null +++ b/lib/python2.7/site-packages/setools/policyrep/xencontext.py @@ -0,0 +1,191 @@ +# Derived from netcontext.py +# +# This file is part of SETools. +# +# SETools 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. +# +# SETools 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 SETools. If not, see +# <http://www.gnu.org/licenses/>. +# +from collections import namedtuple + +from . import qpol +from . import symbol +from . import context + +addr_range = namedtuple("memory_range", ["low", "high"]) +port_range = namedtuple("port_range", ["low", "high"]) + + +def iomemcon_factory(policy, name): + """Factory function for creating iomemcon objects.""" + + if not isinstance(name, qpol.qpol_iomemcon_t): + raise NotImplementedError + + return Iomemcon(policy, name) + + +def ioportcon_factory(policy, name): + """Factory function for creating ioportcon objects.""" + + if not isinstance(name, qpol.qpol_ioportcon_t): + raise NotImplementedError + + return Ioportcon(policy, name) + + +def pirqcon_factory(policy, name): + """Factory function for creating pirqcon objects.""" + + if not isinstance(name, qpol.qpol_pirqcon_t): + raise NotImplementedError + + return Pirqcon(policy, name) + + +def pcidevicecon_factory(policy, name): + """Factory function for creating pcidevicecon objects.""" + + if not isinstance(name, qpol.qpol_pcidevicecon_t): + raise NotImplementedError + + return Pcidevicecon(policy, name) + + +def devicetreecon_factory(policy, name): + """Factory function for creating devicetreecon objects.""" + + if not isinstance(name, qpol.qpol_devicetreecon_t): + raise NotImplementedError + + return Devicetreecon(policy, name) + + +class XenContext(symbol.PolicySymbol): + + """Base class for in-policy xen labeling rules.""" + + def __str__(self): + raise NotImplementedError + + @property + def context(self): + """The context for this statement.""" + return context.context_factory(self.policy, self.qpol_symbol.context(self.policy)) + + def statement(self): + return str(self) + + +class Iomemcon(XenContext): + + """A iomemcon statement.""" + + def __str__(self): + low, high = self.addr + + if low == high: + return "iomemcon {0} {1}".format(low, self.context) + else: + return "iomemcon {0}-{1} {2}".format(low, high, self.context) + + @property + def addr(self): + """ + The memory range for this iomemcon. + + Return: Tuple(low, high) + low The low memory of the range. + high The high memory of the range. + """ + low = self.qpol_symbol.low_addr(self.policy) + high = self.qpol_symbol.high_addr(self.policy) + return addr_range(low, high) + + +class Ioportcon(XenContext): + + """A ioportcon statement.""" + + def __str__(self): + low, high = self.ports + + if low == high: + return "ioportcon {0} {1}".format(low, self.context) + else: + return "ioportcon {0}-{1} {2}".format(low, high, self.context) + + @property + def ports(self): + """ + The port range for this ioportcon. + + Return: Tuple(low, high) + low The low port of the range. + high The high port of the range. + """ + + low = self.qpol_symbol.low_port(self.policy) + high = self.qpol_symbol.high_port(self.policy) + return port_range(low, high) + + +class Pcidevicecon(XenContext): + + """A pcidevicecon statement.""" + + def __str__(self): + return "pcidevicecon {0.device} {0.context}".format(self) + + @property + def device(self): + """ + The device for this pcidevicecon. + + Return: The PCI device ID. + """ + return self.qpol_symbol.device(self.policy) + + +class Pirqcon(XenContext): + + """A pirqcon statement.""" + + def __str__(self): + return "pirqcon {0.irq} {0.context}".format(self) + + @property + def irq(self): + """ + The irq for this pirqcon. + + Return: The irq. + """ + return self.qpol_symbol.irq(self.policy) + + +class Devicetreecon(XenContext): + + """A devicetreecon statement.""" + + def __str__(self): + return "devicetreecon {0.path} {0.context}".format(self) + + @property + def path(self): + """ + The path for this devicetreecon. + + Return: The device path name. + """ + return self.qpol_symbol.path(self.policy) diff --git a/lib/python2.7/site-packages/setools/portconquery.py b/lib/python2.7/site-packages/setools/portconquery.py index 798a828..0b9627a 100644..100755 --- a/lib/python2.7/site-packages/setools/portconquery.py +++ b/lib/python2.7/site-packages/setools/portconquery.py @@ -19,11 +19,13 @@ import logging from socket import IPPROTO_TCP, IPPROTO_UDP -from . import contextquery -from .policyrep.netcontext import port_range +from .mixins import MatchContext +from .query import PolicyQuery +from .policyrep import port_range, PortconProtocol +from .util import match_range -class PortconQuery(contextquery.ContextQuery): +class PortconQuery(MatchContext, PolicyQuery): """ Port context query. @@ -105,30 +107,26 @@ class PortconQuery(contextquery.ContextQuery): @protocol.setter def protocol(self, value): if value: - if not (value == IPPROTO_TCP or value == IPPROTO_UDP): - raise ValueError( - "The protocol must be {0} for TCP or {1} for UDP.". - format(IPPROTO_TCP, IPPROTO_UDP)) - - self._protocol = value + self._protocol = PortconProtocol(value) else: self._protocol = None + def __init__(self, policy, **kwargs): + super(PortconQuery, self).__init__(policy, **kwargs) + self.log = logging.getLogger(__name__) + def results(self): """Generator which yields all matching portcons.""" - self.log.info("Generating results from {0.policy}".format(self)) + self.log.info("Generating portcon results from {0.policy}".format(self)) self.log.debug("Ports: {0.ports}, overlap: {0.ports_overlap}, " "subset: {0.ports_subset}, superset: {0.ports_superset}, " "proper: {0.ports_proper}".format(self)) - self.log.debug("User: {0.user!r}, regex: {0.user_regex}".format(self)) - self.log.debug("Role: {0.role!r}, regex: {0.role_regex}".format(self)) - self.log.debug("Type: {0.type_!r}, regex: {0.type_regex}".format(self)) - self.log.debug("Range: {0.range_!r}, subset: {0.range_subset}, overlap: {0.range_overlap}, " - "superset: {0.range_superset}, proper: {0.range_proper}".format(self)) + self.log.debug("Protocol: {0.protocol!r}".format(self)) + self._match_context_debug(self.log) for portcon in self.policy.portcons(): - if self.ports and not self._match_range( + if self.ports and not match_range( portcon.ports, self.ports, self.ports_subset, diff --git a/lib/python2.7/site-packages/setools/query.py b/lib/python2.7/site-packages/setools/query.py index 358a095..4cf589e 100644..100755 --- a/lib/python2.7/site-packages/setools/query.py +++ b/lib/python2.7/site-packages/setools/query.py @@ -24,8 +24,6 @@ class PolicyQuery(object): """Base class for SELinux policy queries.""" def __init__(self, policy, **kwargs): - self.log = logging.getLogger(self.__class__.__name__) - self.policy = policy # keys are sorted in reverse order so regex settings @@ -40,150 +38,6 @@ class PolicyQuery(object): setattr(self, name, kwargs[name]) - @staticmethod - def _match_regex(obj, criteria, regex): - """ - Match the object with optional regular expression. - - Parameters: - obj The object to match. - criteria The criteria to match. - regex If regular expression matching should be used. - """ - - if regex: - return bool(criteria.search(str(obj))) - else: - return obj == criteria - - @staticmethod - def _match_set(obj, criteria, equal): - """ - Match the object (a set) with optional set equality. - - Parameters: - obj The object to match. (a set) - criteria The criteria to match. (a set) - equal If set equality should be used. Otherwise - any set intersection will match. - """ - - if equal: - return obj == criteria - else: - return bool(obj.intersection(criteria)) - - @staticmethod - def _match_in_set(obj, criteria, regex): - """ - Match if the criteria is in the list, with optional - regular expression matching. - - Parameters: - obj The object to match. - criteria The criteria to match. - regex If regular expression matching should be used. - """ - - if regex: - return [m for m in obj if criteria.search(str(m))] - else: - return criteria in obj - - @staticmethod - def _match_indirect_regex(obj, criteria, indirect, regex): - """ - Match the object with optional regular expression and indirection. - - Parameters: - obj The object to match. - criteria The criteria to match. - regex If regular expression matching should be used. - indirect If object indirection should be used, e.g. - expanding an attribute. - """ - - if indirect: - return PolicyQuery._match_in_set((obj.expand()), criteria, regex) - else: - return PolicyQuery._match_regex(obj, criteria, regex) - - @staticmethod - def _match_regex_or_set(obj, criteria, equal, regex): - """ - Match the object (a set) with either set comparisons - (equality or intersection) or by regex matching of the - set members. Regular expression matching will override - the set equality option. - - Parameters: - obj The object to match. (a set) - criteria The criteria to match. - equal If set equality should be used. Otherwise - any set intersection will match. Ignored - if regular expression matching is used. - regex If regular expression matching should be used. - """ - - if regex: - return [m for m in obj if criteria.search(str(m))] - else: - return PolicyQuery._match_set(obj, set(criteria), equal) - - @staticmethod - def _match_range(obj, criteria, subset, overlap, superset, proper): - """ - Match ranges of objects. - - obj An object with attributes named "low" and "high", representing the range. - criteria An object with attributes named "low" and "high", representing the criteria. - subset If true, the criteria will match if it is a subset obj's range. - overlap If true, the criteria will match if it overlaps any of the obj's range. - superset If true, the criteria will match if it is a superset of the obj's range. - proper If true, use proper superset/subset operations. - No effect if not using set operations. - """ - - if overlap: - return ((obj.low <= criteria.low <= obj.high) or ( - obj.low <= criteria.high <= obj.high) or ( - criteria.low <= obj.low and obj.high <= criteria.high)) - elif subset: - if proper: - return ((obj.low < criteria.low and criteria.high <= obj.high) or ( - obj.low <= criteria.low and criteria.high < obj.high)) - else: - return obj.low <= criteria.low and criteria.high <= obj.high - elif superset: - if proper: - return ((criteria.low < obj.low and obj.high <= criteria.high) or ( - criteria.low <= obj.low and obj.high < criteria.high)) - else: - return (criteria.low <= obj.low and obj.high <= criteria.high) - else: - return criteria.low == obj.low and obj.high == criteria.high - - @staticmethod - def _match_level(obj, criteria, dom, domby, incomp): - """ - Match the an MLS level. - - obj The level to match. - criteria The criteria to match. (a level) - dom If true, the criteria will match if it dominates obj. - domby If true, the criteria will match if it is dominated by obj. - incomp If true, the criteria will match if it is incomparable to obj. - """ - - if dom: - return (criteria >= obj) - elif domby: - return (criteria <= obj) - elif incomp: - return (criteria ^ obj) - else: - return (criteria == obj) - def results(self): """ Generator which returns the matches for the query. This method diff --git a/lib/python2.7/site-packages/setools/rbacrulequery.py b/lib/python2.7/site-packages/setools/rbacrulequery.py index 5e9a139..2a8e260 100644..100755 --- a/lib/python2.7/site-packages/setools/rbacrulequery.py +++ b/lib/python2.7/site-packages/setools/rbacrulequery.py @@ -22,6 +22,7 @@ import re from . import mixins, query from .descriptors import CriteriaDescriptor, CriteriaSetDescriptor from .policyrep.exception import InvalidType, RuleUseError +from .util import match_indirect_regex class RBACRuleQuery(mixins.MatchObjClass, query.PolicyQuery): @@ -82,15 +83,19 @@ class RBACRuleQuery(mixins.MatchObjClass, query.PolicyQuery): except InvalidType: self._target = self.policy.lookup_role(value) + def __init__(self, policy, **kwargs): + super(RBACRuleQuery, self).__init__(policy, **kwargs) + self.log = logging.getLogger(__name__) + def results(self): """Generator which yields all matching RBAC rules.""" - self.log.info("Generating results from {0.policy}".format(self)) + self.log.info("Generating RBAC rule results from {0.policy}".format(self)) self.log.debug("Ruletypes: {0.ruletype}".format(self)) self.log.debug("Source: {0.source!r}, indirect: {0.source_indirect}, " "regex: {0.source_regex}".format(self)) self.log.debug("Target: {0.target!r}, indirect: {0.target_indirect}, " "regex: {0.target_regex}".format(self)) - self.log.debug("Class: {0.tclass!r}, regex: {0.tclass_regex}".format(self)) + self._match_object_class_debug(self.log) self.log.debug("Default: {0.default!r}, regex: {0.default_regex}".format(self)) for rule in self.policy.rbacrules(): @@ -104,7 +109,7 @@ class RBACRuleQuery(mixins.MatchObjClass, query.PolicyQuery): # # Matching on source role # - if self.source and not self._match_indirect_regex( + if self.source and not match_indirect_regex( rule.source, self.source, self.source_indirect, @@ -114,7 +119,7 @@ class RBACRuleQuery(mixins.MatchObjClass, query.PolicyQuery): # # Matching on target type (role_transition)/role(allow) # - if self.target and not self._match_indirect_regex( + if self.target and not match_indirect_regex( rule.target, self.target, self.target_indirect, @@ -135,9 +140,13 @@ class RBACRuleQuery(mixins.MatchObjClass, query.PolicyQuery): # if self.default: try: - if not self._match_regex( + # because default role is always a single + # role, hard-code indirect to True + # so the criteria can be an attribute + if not match_indirect_regex( rule.default, self.default, + True, self.default_regex): continue except RuleUseError: diff --git a/lib/python2.7/site-packages/setools/rolequery.py b/lib/python2.7/site-packages/setools/rolequery.py index 37de123..a7e9006 100644..100755 --- a/lib/python2.7/site-packages/setools/rolequery.py +++ b/lib/python2.7/site-packages/setools/rolequery.py @@ -19,11 +19,13 @@ import logging import re -from . import compquery from .descriptors import CriteriaSetDescriptor +from .mixins import MatchName +from .query import PolicyQuery +from .util import match_regex_or_set -class RoleQuery(compquery.ComponentQuery): +class RoleQuery(MatchName, PolicyQuery): """ Query SELinux policy roles. @@ -49,10 +51,14 @@ class RoleQuery(compquery.ComponentQuery): types_equal = False types_regex = False + def __init__(self, policy, **kwargs): + super(RoleQuery, self).__init__(policy, **kwargs) + self.log = logging.getLogger(__name__) + def results(self): """Generator which yields all matching roles.""" - self.log.info("Generating results from {0.policy}".format(self)) - self.log.debug("Name: {0.name!r}, regex: {0.name_regex}".format(self)) + self.log.info("Generating role results from {0.policy}".format(self)) + self._match_name_debug(self.log) self.log.debug("Types: {0.types!r}, regex: {0.types_regex}, " "eq: {0.types_equal}".format(self)) @@ -60,7 +66,7 @@ class RoleQuery(compquery.ComponentQuery): if not self._match_name(r): continue - if self.types and not self._match_regex_or_set( + if self.types and not match_regex_or_set( set(r.types()), self.types, self.types_equal, diff --git a/lib/python2.7/site-packages/setools/sensitivityquery.py b/lib/python2.7/site-packages/setools/sensitivityquery.py index a102836..5b10796 100644..100755 --- a/lib/python2.7/site-packages/setools/sensitivityquery.py +++ b/lib/python2.7/site-packages/setools/sensitivityquery.py @@ -18,12 +18,13 @@ # import logging -from . import compquery -from . import mixins from .descriptors import CriteriaDescriptor +from .mixins import MatchAlias, MatchName +from .query import PolicyQuery +from .util import match_level -class SensitivityQuery(mixins.MatchAlias, compquery.ComponentQuery): +class SensitivityQuery(MatchAlias, MatchName, PolicyQuery): """ Query MLS Sensitivities @@ -49,11 +50,15 @@ class SensitivityQuery(mixins.MatchAlias, compquery.ComponentQuery): sens_dom = False sens_domby = False + def __init__(self, policy, **kwargs): + super(SensitivityQuery, self).__init__(policy, **kwargs) + self.log = logging.getLogger(__name__) + def results(self): """Generator which yields all matching sensitivities.""" - self.log.info("Generating results from {0.policy}".format(self)) - self.log.debug("Name: {0.name!r}, regex: {0.name_regex}".format(self)) - self.log.debug("Alias: {0.alias}, regex: {0.alias_regex}".format(self)) + self.log.info("Generating sensitivity results from {0.policy}".format(self)) + self._match_name_debug(self.log) + self._match_alias_debug(self.log) self.log.debug("Sens: {0.sens!r}, dom: {0.sens_dom}, domby: {0.sens_domby}".format(self)) for s in self.policy.sensitivities(): @@ -63,7 +68,7 @@ class SensitivityQuery(mixins.MatchAlias, compquery.ComponentQuery): if not self._match_alias(s): continue - if self.sens and not self._match_level( + if self.sens and not match_level( s, self.sens, self.sens_dom, diff --git a/lib/python2.7/site-packages/setools/terulequery.py b/lib/python2.7/site-packages/setools/terulequery.py index eff8df1..9935e4e 100644..100755 --- a/lib/python2.7/site-packages/setools/terulequery.py +++ b/lib/python2.7/site-packages/setools/terulequery.py @@ -21,7 +21,9 @@ import re from . import mixins, query from .descriptors import CriteriaDescriptor, CriteriaSetDescriptor +from .policyrep import ioctlSet from .policyrep.exception import RuleUseError, RuleNotConditional +from .util import match_regex, match_indirect_regex, match_regex_or_set class TERuleQuery(mixins.MatchObjClass, mixins.MatchPermission, query.PolicyQuery): @@ -87,23 +89,54 @@ class TERuleQuery(mixins.MatchObjClass, mixins.MatchPermission, query.PolicyQuer target = CriteriaDescriptor("target_regex", "lookup_type_or_attr") target_regex = False target_indirect = True - default = CriteriaDescriptor("default_regex", "lookup_type") + default = CriteriaDescriptor("default_regex", "lookup_type_or_attr") default_regex = False boolean = CriteriaSetDescriptor("boolean_regex", "lookup_boolean") boolean_regex = False boolean_equal = False + _xperms = None + xperms_equal = False + + @property + def xperms(self): + return self._xperms + + @xperms.setter + def xperms(self, value): + if value: + pending_xperms = ioctlSet() + + for low, high in value: + if not (0 <= low <= 0xffff): + raise ValueError("{0:#07x} is not a valid ioctl.".format(low)) + + if not (0 <= high <= 0xffff): + raise ValueError("{0:#07x} is not a valid ioctl.".format(high)) + + if high < low: + high, low = low, high + + pending_xperms.update(i for i in range(low, high+1)) + + self._xperms = pending_xperms + else: + self._xperms = None + + def __init__(self, policy, **kwargs): + super(TERuleQuery, self).__init__(policy, **kwargs) + self.log = logging.getLogger(__name__) def results(self): """Generator which yields all matching TE rules.""" - self.log.info("Generating results from {0.policy}".format(self)) + self.log.info("Generating TE rule results from {0.policy}".format(self)) self.log.debug("Ruletypes: {0.ruletype}".format(self)) self.log.debug("Source: {0.source!r}, indirect: {0.source_indirect}, " "regex: {0.source_regex}".format(self)) self.log.debug("Target: {0.target!r}, indirect: {0.target_indirect}, " "regex: {0.target_regex}".format(self)) - self.log.debug("Class: {0.tclass!r}, regex: {0.tclass_regex}".format(self)) - self.log.debug("Perms: {0.perms!r}, regex: {0.perms_regex}, eq: {0.perms_equal}". - format(self)) + self._match_object_class_debug(self.log) + self._match_perms_debug(self.log) + self.log.debug("Xperms: {0.xperms!r}, eq: {0.xperms_equal}".format(self)) self.log.debug("Default: {0.default!r}, regex: {0.default_regex}".format(self)) self.log.debug("Boolean: {0.boolean!r}, eq: {0.boolean_equal}, " "regex: {0.boolean_regex}".format(self)) @@ -119,7 +152,7 @@ class TERuleQuery(mixins.MatchObjClass, mixins.MatchPermission, query.PolicyQuer # # Matching on source type # - if self.source and not self._match_indirect_regex( + if self.source and not match_indirect_regex( rule.source, self.source, self.source_indirect, @@ -129,7 +162,7 @@ class TERuleQuery(mixins.MatchObjClass, mixins.MatchPermission, query.PolicyQuer # # Matching on target type # - if self.target and not self._match_indirect_regex( + if self.target and not match_indirect_regex( rule.target, self.target, self.target_indirect, @@ -146,19 +179,46 @@ class TERuleQuery(mixins.MatchObjClass, mixins.MatchPermission, query.PolicyQuer # Matching on permission set # try: - if not self._match_perms(rule): + if self.perms and rule.extended: + if self.perms_equal and len(self.perms) > 1: + # if criteria is more than one standard permission, + # extended perm rules can never match if the + # permission set equality option is on. + continue + + if rule.xperm_type not in self.perms: + continue + elif not self._match_perms(rule): continue except RuleUseError: continue # + # Matching on extended permissions + # + try: + if self.xperms and not match_regex_or_set( + rule.perms, + self.xperms, + self.xperms_equal, + False): + continue + + except RuleUseError: + continue + + # # Matching on default type # if self.default: try: - if not self._match_regex( + # because default type is always a single + # type, hard-code indirect to True + # so the criteria can be an attribute + if not match_indirect_regex( rule.default, self.default, + True, self.default_regex): continue except RuleUseError: @@ -169,7 +229,7 @@ class TERuleQuery(mixins.MatchObjClass, mixins.MatchPermission, query.PolicyQuer # if self.boolean: try: - if not self._match_regex_or_set( + if not match_regex_or_set( rule.conditional.booleans, self.boolean, self.boolean_equal, diff --git a/lib/python2.7/site-packages/setools/typeattrquery.py b/lib/python2.7/site-packages/setools/typeattrquery.py index a91026c..6bb3736 100644..100755 --- a/lib/python2.7/site-packages/setools/typeattrquery.py +++ b/lib/python2.7/site-packages/setools/typeattrquery.py @@ -19,11 +19,13 @@ import logging import re -from . import compquery from .descriptors import CriteriaSetDescriptor +from .mixins import MatchName +from .query import PolicyQuery +from .util import match_regex_or_set -class TypeAttributeQuery(compquery.ComponentQuery): +class TypeAttributeQuery(MatchName, PolicyQuery): """ Query SELinux policy type attributes. @@ -49,10 +51,14 @@ class TypeAttributeQuery(compquery.ComponentQuery): types_equal = False types_regex = False + def __init__(self, policy, **kwargs): + super(TypeAttributeQuery, self).__init__(policy, **kwargs) + self.log = logging.getLogger(__name__) + def results(self): """Generator which yields all matching types.""" - self.log.info("Generating results from {0.policy}".format(self)) - self.log.debug("Name: {0.name!r}, regex: {0.name_regex}".format(self)) + self.log.info("Generating type attribute results from {0.policy}".format(self)) + self._match_name_debug(self.log) self.log.debug("Types: {0.types!r}, regex: {0.types_regex}, " "eq: {0.types_equal}".format(self)) @@ -60,7 +66,7 @@ class TypeAttributeQuery(compquery.ComponentQuery): if not self._match_name(attr): continue - if self.types and not self._match_regex_or_set( + if self.types and not match_regex_or_set( set(attr.expand()), self.types, self.types_equal, diff --git a/lib/python2.7/site-packages/setools/typequery.py b/lib/python2.7/site-packages/setools/typequery.py index 6634f76..8152984 100644..100755 --- a/lib/python2.7/site-packages/setools/typequery.py +++ b/lib/python2.7/site-packages/setools/typequery.py @@ -19,12 +19,13 @@ import logging import re -from . import compquery -from . import mixins from .descriptors import CriteriaSetDescriptor +from .mixins import MatchAlias, MatchName +from .query import PolicyQuery +from .util import match_regex_or_set -class TypeQuery(mixins.MatchAlias, compquery.ComponentQuery): +class TypeQuery(MatchAlias, MatchName, PolicyQuery): """ Query SELinux policy types. @@ -67,11 +68,15 @@ class TypeQuery(mixins.MatchAlias, compquery.ComponentQuery): else: self._permissive = bool(value) + def __init__(self, policy, **kwargs): + super(TypeQuery, self).__init__(policy, **kwargs) + self.log = logging.getLogger(__name__) + def results(self): """Generator which yields all matching types.""" - self.log.info("Generating results from {0.policy}".format(self)) - self.log.debug("Name: {0.name!r}, regex: {0.name_regex}".format(self)) - self.log.debug("Alias: {0.alias}, regex: {0.alias_regex}".format(self)) + self.log.info("Generating type results from {0.policy}".format(self)) + self._match_name_debug(self.log) + self._match_alias_debug(self.log) self.log.debug("Attrs: {0.attrs!r}, regex: {0.attrs_regex}, " "eq: {0.attrs_equal}".format(self)) self.log.debug("Permissive: {0.permissive}".format(self)) @@ -83,7 +88,7 @@ class TypeQuery(mixins.MatchAlias, compquery.ComponentQuery): if not self._match_alias(t): continue - if self.attrs and not self._match_regex_or_set( + if self.attrs and not match_regex_or_set( set(t.attributes()), self.attrs, self.attrs_equal, diff --git a/lib/python2.7/site-packages/setools/userquery.py b/lib/python2.7/site-packages/setools/userquery.py index 00910cf..9fa05cb 100644..100755 --- a/lib/python2.7/site-packages/setools/userquery.py +++ b/lib/python2.7/site-packages/setools/userquery.py @@ -19,11 +19,13 @@ import logging import re -from . import compquery from .descriptors import CriteriaDescriptor, CriteriaSetDescriptor +from .mixins import MatchName +from .query import PolicyQuery +from .util import match_regex_or_set, match_level, match_range -class UserQuery(compquery.ComponentQuery): +class UserQuery(MatchName, PolicyQuery): """ Query SELinux policy users. @@ -74,10 +76,14 @@ class UserQuery(compquery.ComponentQuery): roles_equal = False roles_regex = False + def __init__(self, policy, **kwargs): + super(UserQuery, self).__init__(policy, **kwargs) + self.log = logging.getLogger(__name__) + def results(self): """Generator which yields all matching users.""" - self.log.info("Generating results from {0.policy}".format(self)) - self.log.debug("Name: {0.name!r}, regex: {0.name_regex}".format(self)) + self.log.info("Generating user results from {0.policy}".format(self)) + self._match_name_debug(self.log) self.log.debug("Roles: {0.roles!r}, regex: {0.roles_regex}, " "eq: {0.roles_equal}".format(self)) self.log.debug("Level: {0.level!r}, dom: {0.level_dom}, domby: {0.level_domby}, " @@ -89,14 +95,14 @@ class UserQuery(compquery.ComponentQuery): if not self._match_name(user): continue - if self.roles and not self._match_regex_or_set( + if self.roles and not match_regex_or_set( user.roles, self.roles, self.roles_equal, self.roles_regex): continue - if self.level and not self._match_level( + if self.level and not match_level( user.mls_level, self.level, self.level_dom, @@ -104,7 +110,7 @@ class UserQuery(compquery.ComponentQuery): self.level_incomp): continue - if self.range_ and not self._match_range( + if self.range_ and not match_range( user.mls_range, self.range_, self.range_subset, diff --git a/lib/python2.7/site-packages/setools/util.py b/lib/python2.7/site-packages/setools/util.py new file mode 100644 index 0000000..e92ecb2 --- /dev/null +++ b/lib/python2.7/site-packages/setools/util.py @@ -0,0 +1,165 @@ +# Copyright 2016, Tresys Technology, LLC +# +# This file is part of SETools. +# +# SETools 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. +# +# SETools 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 SETools. If not, see +# <http://www.gnu.org/licenses/>. +# + + +def match_regex(obj, criteria, regex): + """ + Match the object with optional regular expression. + + Parameters: + obj The object to match. + criteria The criteria to match. + regex If regular expression matching should be used. + """ + + if regex: + return bool(criteria.search(str(obj))) + else: + return obj == criteria + + +def match_set(obj, criteria, equal): + """ + Match the object (a set) with optional set equality. + + Parameters: + obj The object to match. (a set) + criteria The criteria to match. (a set) + equal If set equality should be used. Otherwise + any set intersection will match. + """ + + if equal: + return obj == criteria + else: + return bool(obj.intersection(criteria)) + + +def match_in_set(obj, criteria, regex): + """ + Match if the criteria is in the list, with optional + regular expression matching. + + Parameters: + obj The object to match. + criteria The criteria to match. + regex If regular expression matching should be used. + """ + + if regex: + return [m for m in obj if criteria.search(str(m))] + else: + return criteria in obj + + +def match_indirect_regex(obj, criteria, indirect, regex): + """ + Match the object with optional regular expression and indirection. + + Parameters: + obj The object to match. + criteria The criteria to match. + regex If regular expression matching should be used. + indirect If object indirection should be used, e.g. + expanding an attribute. + """ + + if indirect: + if regex: + return [o for o in obj.expand() if criteria.search(str(o))] + else: + return set(criteria.expand()).intersection(obj.expand()) + else: + return match_regex(obj, criteria, regex) + + +def match_regex_or_set(obj, criteria, equal, regex): + """ + Match the object (a set) with either set comparisons + (equality or intersection) or by regex matching of the + set members. Regular expression matching will override + the set equality option. + + Parameters: + obj The object to match. (a set) + criteria The criteria to match. + equal If set equality should be used. Otherwise + any set intersection will match. Ignored + if regular expression matching is used. + regex If regular expression matching should be used. + """ + + if regex: + return [m for m in obj if criteria.search(str(m))] + else: + return match_set(obj, set(criteria), equal) + + +def match_range(obj, criteria, subset, overlap, superset, proper): + """ + Match ranges of objects. + + obj An object with attributes named "low" and "high", representing the range. + criteria An object with attributes named "low" and "high", representing the criteria. + subset If true, the criteria will match if it is a subset obj's range. + overlap If true, the criteria will match if it overlaps any of the obj's range. + superset If true, the criteria will match if it is a superset of the obj's range. + proper If true, use proper superset/subset operations. + No effect if not using set operations. + """ + + if overlap: + return ((obj.low <= criteria.low <= obj.high) or ( + obj.low <= criteria.high <= obj.high) or ( + criteria.low <= obj.low and obj.high <= criteria.high)) + elif subset: + if proper: + return ((obj.low < criteria.low and criteria.high <= obj.high) or ( + obj.low <= criteria.low and criteria.high < obj.high)) + else: + return obj.low <= criteria.low and criteria.high <= obj.high + elif superset: + if proper: + return ((criteria.low < obj.low and obj.high <= criteria.high) or ( + criteria.low <= obj.low and obj.high < criteria.high)) + else: + return (criteria.low <= obj.low and obj.high <= criteria.high) + else: + return criteria.low == obj.low and obj.high == criteria.high + + +def match_level(obj, criteria, dom, domby, incomp): + """ + Match the an MLS level. + + obj The level to match. + criteria The criteria to match. (a level) + dom If true, the criteria will match if it dominates obj. + domby If true, the criteria will match if it is dominated by obj. + incomp If true, the criteria will match if it is incomparable to obj. + """ + + if dom: + return (criteria >= obj) + elif domby: + return (criteria <= obj) + elif incomp: + return (criteria ^ obj) + else: + return (criteria == obj) |