initial import from svn trunk revision 2950
diff --git a/libsemanage/man/Makefile b/libsemanage/man/Makefile
new file mode 100644
index 0000000..a84bfb7
--- /dev/null
+++ b/libsemanage/man/Makefile
@@ -0,0 +1,7 @@
+# Installation directories.
+MAN3DIR ?= $(DESTDIR)/usr/share/man/man3
+
+install:
+	mkdir -p $(MAN3DIR)
+	install -m 644 man3/*.3 $(MAN3DIR)
+
diff --git a/libsemanage/man/man3/semanage_bool.3 b/libsemanage/man/man3/semanage_bool.3
new file mode 100644
index 0000000..3e38bf6
--- /dev/null
+++ b/libsemanage/man/man3/semanage_bool.3
@@ -0,0 +1,177 @@
+.TH semanage_bool 3 "16 March 2006" "ivg2@cornell.edu" "Libsemanage API documentation"
+
+.SH "NAME" 
+SELinux Policy Booleans Management API
+
+.SH "SYNOPSIS"
+.B #include <semanage/boolean_record.h>
+.br
+.B #include <semanage/booleans_active.h>
+.br
+.B #include <semanage/booleans_policy.h>
+.br
+.B #include <semanage/booleans_local.h>
+
+.PP
+This object contains properties associated with a SELinux policy boolean
+
+.PP
+For details on a specific function, see its manual page.
+
+.SH "Record API Overview"
+
+.HP 
+.BR semanage_bool_create "(3)" \- 
+.br
+create a boolean
+
+.HP
+.BR semanage_bool_free "(3)" \-
+.br
+release resources for this boolean
+
+.HP
+.BR semanage_bool_key_create "(3)" \-
+.br
+create a key, which can be used to identify a boolean
+
+.HP
+.BR semanage_bool_key_free "(3)" \-
+.br
+release resources for this boolean key
+
+.HP
+.BR semanage_bool_key_extract "(3)" \- 
+.br
+create a key matching this boolean
+
+.HP
+.BR semanage_bool_clone "(3)" \- 
+.br
+create an identical boolean (deep-copy clone)
+
+.HP
+.BR semanage_bool_compare "(3)" \- 
+.br
+compare this boolean to the provided key
+
+.HP
+.BR semanage_bool_compare2 "(3)" \-
+.br
+compare this boolean to another
+
+
+.SH "Properties API Overview"
+
+.HP
+.BR semanage_bool_get_name "(3)" \-
+.br
+return the name of this boolean
+
+.HP
+.BR semanage_bool_set_name "(3)" \-
+.br
+set the name of this boolean
+
+.HP
+.BR semanage_bool_get_value "(3)" \-
+.br
+return the value of this boolean
+
+.HP
+.BR semanage_bool_set_value "(3)" \-
+.br
+set the value of this boolean
+
+
+.SH "Record Store API Overview"
+
+.HP
+.BR semanage_bool_modify_local "(3)" \- 
+.br
+add or update a boolean in the local store
+
+.HP
+.BR semanage_bool_set_active "(3)" \-
+.br
+update a boolean in the currently active policy
+
+.HP
+.BR semanage_bool_del_local "(3)" \-
+.br
+delete a boolean from the local store
+
+.HP
+.BR semanage_bool_exists "(3)" \-
+.br
+check if a boolean is defined in the persistent policy
+
+.HP
+.BR semanage_bool_exists_local "(3)" \-
+.br
+check if a boolean is defined in the local store
+
+.HP
+.BR semanage_bool_exists_active "(3)" \-
+.br
+check if a boolean is defined in the currently active policy
+
+.HP
+.BR semanage_bool_query "(3)" \-
+.br
+query a boolean in the persistent policy
+
+.HP
+.BR semanage_bool_query_local "(3)" \- 
+.br
+query a boolean in the local store
+
+.HP
+.BR semanage_bool_query_active "(3)" \-
+.br
+query a boolean in the currently active policy
+
+.HP
+.BR semanage_bool_count "(3)" \-
+.br
+count the number of booleans defined in the persistent policy
+
+.HP
+.BR semanage_bool_count_local "(3)" \-
+.br
+count the number of booleans defined in the local store
+
+.HP
+.BR semanage_bool_count_active "(3)" \-
+.br
+count the number of booleans defined in the currently active policy
+
+.HP
+.BR semanage_bool_iterate "(3)" \-
+.br
+execute a callback for each boolean in the persistent policy
+
+.HP
+.BR semanage_bool_iterate_local "(3)" \-
+.br
+execute a callback for each boolean in the local store
+
+.HP
+.BR semanage_bool_iterate_active "(3)" \-
+.br
+execute a callback for each boolean in the currently active policy
+
+.HP
+.BR semanage_bool_list "(3)" \-
+.br
+return an array containing all booleans in the persistent policy
+
+.HP
+.BR semanage_bool_list_local "(3)" \-
+.br
+return an array containing all booleans in the local store
+
+.HP
+.BR semanage_bool_list_active "(3)" \-
+.br
+return an array containing all booleans in the currently active policy 
diff --git a/libsemanage/man/man3/semanage_bool_count.3 b/libsemanage/man/man3/semanage_bool_count.3
new file mode 100644
index 0000000..7478bc2
--- /dev/null
+++ b/libsemanage/man/man3/semanage_bool_count.3
@@ -0,0 +1 @@
+.so man3/semanage_count.3
diff --git a/libsemanage/man/man3/semanage_bool_count_active.3 b/libsemanage/man/man3/semanage_bool_count_active.3
new file mode 100644
index 0000000..7478bc2
--- /dev/null
+++ b/libsemanage/man/man3/semanage_bool_count_active.3
@@ -0,0 +1 @@
+.so man3/semanage_count.3
diff --git a/libsemanage/man/man3/semanage_bool_count_local.3 b/libsemanage/man/man3/semanage_bool_count_local.3
new file mode 100644
index 0000000..7478bc2
--- /dev/null
+++ b/libsemanage/man/man3/semanage_bool_count_local.3
@@ -0,0 +1 @@
+.so man3/semanage_count.3
diff --git a/libsemanage/man/man3/semanage_bool_del_local.3 b/libsemanage/man/man3/semanage_bool_del_local.3
new file mode 100644
index 0000000..a01dfcd
--- /dev/null
+++ b/libsemanage/man/man3/semanage_bool_del_local.3
@@ -0,0 +1 @@
+.so man3/semanage_del.3
diff --git a/libsemanage/man/man3/semanage_bool_exists.3 b/libsemanage/man/man3/semanage_bool_exists.3
new file mode 100644
index 0000000..40f3406
--- /dev/null
+++ b/libsemanage/man/man3/semanage_bool_exists.3
@@ -0,0 +1 @@
+.so man3/semanage_exists.3
diff --git a/libsemanage/man/man3/semanage_bool_exists_active.3 b/libsemanage/man/man3/semanage_bool_exists_active.3
new file mode 100644
index 0000000..40f3406
--- /dev/null
+++ b/libsemanage/man/man3/semanage_bool_exists_active.3
@@ -0,0 +1 @@
+.so man3/semanage_exists.3
diff --git a/libsemanage/man/man3/semanage_bool_exists_local.3 b/libsemanage/man/man3/semanage_bool_exists_local.3
new file mode 100644
index 0000000..40f3406
--- /dev/null
+++ b/libsemanage/man/man3/semanage_bool_exists_local.3
@@ -0,0 +1 @@
+.so man3/semanage_exists.3
diff --git a/libsemanage/man/man3/semanage_bool_iterate.3 b/libsemanage/man/man3/semanage_bool_iterate.3
new file mode 100644
index 0000000..7fc9c3d
--- /dev/null
+++ b/libsemanage/man/man3/semanage_bool_iterate.3
@@ -0,0 +1 @@
+.so man3/semanage_iterate.3
diff --git a/libsemanage/man/man3/semanage_bool_iterate_active.3 b/libsemanage/man/man3/semanage_bool_iterate_active.3
new file mode 100644
index 0000000..7fc9c3d
--- /dev/null
+++ b/libsemanage/man/man3/semanage_bool_iterate_active.3
@@ -0,0 +1 @@
+.so man3/semanage_iterate.3
diff --git a/libsemanage/man/man3/semanage_bool_iterate_local.3 b/libsemanage/man/man3/semanage_bool_iterate_local.3
new file mode 100644
index 0000000..7fc9c3d
--- /dev/null
+++ b/libsemanage/man/man3/semanage_bool_iterate_local.3
@@ -0,0 +1 @@
+.so man3/semanage_iterate.3
diff --git a/libsemanage/man/man3/semanage_bool_list.3 b/libsemanage/man/man3/semanage_bool_list.3
new file mode 100644
index 0000000..b7095f8
--- /dev/null
+++ b/libsemanage/man/man3/semanage_bool_list.3
@@ -0,0 +1 @@
+.so man3/semanage_list.3
diff --git a/libsemanage/man/man3/semanage_bool_list_active.3 b/libsemanage/man/man3/semanage_bool_list_active.3
new file mode 100644
index 0000000..b7095f8
--- /dev/null
+++ b/libsemanage/man/man3/semanage_bool_list_active.3
@@ -0,0 +1 @@
+.so man3/semanage_list.3
diff --git a/libsemanage/man/man3/semanage_bool_list_local.3 b/libsemanage/man/man3/semanage_bool_list_local.3
new file mode 100644
index 0000000..b7095f8
--- /dev/null
+++ b/libsemanage/man/man3/semanage_bool_list_local.3
@@ -0,0 +1 @@
+.so man3/semanage_list.3
diff --git a/libsemanage/man/man3/semanage_bool_modify_local.3 b/libsemanage/man/man3/semanage_bool_modify_local.3
new file mode 100644
index 0000000..3a07fe8
--- /dev/null
+++ b/libsemanage/man/man3/semanage_bool_modify_local.3
@@ -0,0 +1 @@
+.so man3/semanage_modify.3
diff --git a/libsemanage/man/man3/semanage_bool_query.3 b/libsemanage/man/man3/semanage_bool_query.3
new file mode 100644
index 0000000..5b5c844
--- /dev/null
+++ b/libsemanage/man/man3/semanage_bool_query.3
@@ -0,0 +1 @@
+.so man3/semanage_query.3
diff --git a/libsemanage/man/man3/semanage_bool_query_active.3 b/libsemanage/man/man3/semanage_bool_query_active.3
new file mode 100644
index 0000000..5b5c844
--- /dev/null
+++ b/libsemanage/man/man3/semanage_bool_query_active.3
@@ -0,0 +1 @@
+.so man3/semanage_query.3
diff --git a/libsemanage/man/man3/semanage_bool_query_local.3 b/libsemanage/man/man3/semanage_bool_query_local.3
new file mode 100644
index 0000000..5b5c844
--- /dev/null
+++ b/libsemanage/man/man3/semanage_bool_query_local.3
@@ -0,0 +1 @@
+.so man3/semanage_query.3
diff --git a/libsemanage/man/man3/semanage_bool_set_active.3 b/libsemanage/man/man3/semanage_bool_set_active.3
new file mode 100644
index 0000000..d5005cb
--- /dev/null
+++ b/libsemanage/man/man3/semanage_bool_set_active.3
@@ -0,0 +1,48 @@
+.TH semanage_bool_set_local 3 "4 January 2006" "ivg2@cornell.edu" "Libsemanage API documentation"
+.SH "NAME"
+.B semanage_bool_set_active \- 
+update an existing SELinux boolean in the currently active policy
+
+.SH "SYNOPSIS"
+.B #include <semanage/booleans_active.h>
+.br
+.sp
+.B extern int semanage_bool_set_active (
+.br
+.BI "	semanage_handle_t *" handle ","
+.br
+.BI "	const semanage_bool_key_t *" key ","
+.br
+.BI "	const semanage_bool_t *" data ");"
+
+.SH "DESCRIPTION"
+.TP
+.B Behavior:
+The set function will fail if no matching key is found in the local store. Otherwise, the provided object will replace the current one. When 
+.BR semanage_commit "(3)" 
+is invoked, changes will be written permanently into the local store, and will be loaded into policy. Validity of the object being added is checked at commit time. 
+
+.TP
+.B Parameters:
+The 
+.I handle
+is used to track persistent state across semanage calls, and for error reporting. The
+.I key 
+identifies the 
+.I data
+object, which will be written into the store. The key are data are properties of the caller, and are not stored or modified internally.
+
+.TP
+.B Requirements:
+This function requires an semanage connection to be established (see 
+.BR semanage_connect "(3)"
+), and must be executed in a transaction (see 
+.BR semanage_begin_transaction "(3)"
+).
+
+.SH "RETURN VALUE"
+In case of failure, -1 is returned, and the semanage error callback is invoked, describing the error.
+Otherwise 0 is returned.
+
+.SH "SEE ALSO"
+.BR semanage_handle_create "(3), " semanage_begin_transaction "(3), " semanage_connect "(3), " semanage_commit "(3). "
diff --git a/libsemanage/man/man3/semanage_count.3 b/libsemanage/man/man3/semanage_count.3
new file mode 100644
index 0000000..09894ac
--- /dev/null
+++ b/libsemanage/man/man3/semanage_count.3
@@ -0,0 +1,40 @@
+.TH semanage_count 3 "16 March 2006" "ivg2@cornell.edu" "Libsemanage API documentation"
+
+.SH "NAME" 
+SELinux Management API
+
+.SH "SYNOPSIS"
+The following count function is supported for any semanage record.
+.br
+Replace the function and object name as necessary.
+
+.B extern int COUNT_FUNCTION (
+.br
+.BI "	semanage_handle_t *" handle ","
+.br
+.BI "	unsigned int* " response ");"
+
+.SH "DESCRIPTION"
+.TP
+.B Behavior:
+The count function will return the number of all objects in the selected location.
+
+.TP
+.B Parameters:
+The 
+.I handle
+is used to track persistent state across semanage calls, and for error reporting. The number of objects will be stored at the location poined by 
+.I response.
+
+.TP
+.B Requirements:
+This function requires an semanage connection to be established (see 
+.BR semanage_connect "(3)"
+)
+
+.SH "RETURN VALUE"
+In case of failure, -1 is returned, and the semanage error callback is invoked, describing the error.
+Otherwise a non-negative integer is returned (a commit number). The same number will be returned by all other semanage object read calls until the next commit.
+
+.SH "SEE ALSO"
+.BR semanage_handle_create "(3), " semanage_connect "(3), "
diff --git a/libsemanage/man/man3/semanage_del.3 b/libsemanage/man/man3/semanage_del.3
new file mode 100644
index 0000000..ce4b46f
--- /dev/null
+++ b/libsemanage/man/man3/semanage_del.3
@@ -0,0 +1,47 @@
+.TH semanage_del 3 "16 March 2006" "ivg2@cornell.edu" "Libsemanage API documentation"
+
+.SH "NAME" 
+SELinux Management API
+
+.SH "SYNOPSIS"
+The following delete function is supported for any semanage record.
+.br
+Replace the function and object name as necessary.
+
+.B extern int DELETE_FUNCTION (
+.br
+.BI "	semanage_handle_t *" handle ","
+.br
+.BI "	const semanage_OBJECT_key_t *" key ");"
+
+.SH "DESCRIPTION"
+.TP
+.B Behavior:
+The delete function will remove the object corresponding to the provided key from the local store. If no match is found, no action is taken. Changes will become permanent when  
+.BR semanage_commit "(3)" 
+is invoked. Additional checks may be performed at that time to ensure the system is left in a valid state. 
+
+.TP
+.B Parameters:
+The 
+.I handle
+is used to track persistent state across semanage calls, and for error reporting. The
+.I key 
+identifies the 
+.I data
+object, which will be deleted from the local store. The key is a property of the caller, and will not be stored or modified internally.
+
+.TP
+.B Requirements:
+This function requires an semanage connection to be established (see 
+.BR semanage_connect "(3)"
+), and must be executed in a transaction (see 
+.BR semanage_begin_transaction "(3)"
+).
+
+.SH "RETURN VALUE"
+In case of failure, -1 is returned, and the semanage error callback is invoked, describing the error.
+Otherwise 0 is returned.
+
+.SH "SEE ALSO"
+.BR semanage_handle_create "(3), " semanage_begin_transaction "(3), " semanage_connect "(3), " semanage_commit "(3). "
diff --git a/libsemanage/man/man3/semanage_exists.3 b/libsemanage/man/man3/semanage_exists.3
new file mode 100644
index 0000000..15f164f
--- /dev/null
+++ b/libsemanage/man/man3/semanage_exists.3
@@ -0,0 +1,45 @@
+.TH semanage_exists 3 "16 March 2006" "ivg2@cornell.edu" "Libsemanage API documentation"
+
+.SH "NAME" 
+SELinux Management API
+
+.SH "SYNOPSIS"
+The following exists function is supported for any semanage record.
+.br
+Replace the function and object name as necessary.
+
+.B extern int EXISTS_FUNCTION (
+.br
+.BI "	semanage_handle_t *" handle ","
+.br
+.BI "	const semanage_OBJECT_key_t *" key ","
+.br
+.BI "	semanage_OBJECT_t **" response ");"
+
+.SH "DESCRIPTION"
+.TP
+.B Behavior:
+The exists function will return 0 if a matching key is not found, and 1 otherwise. 
+
+.TP
+.B Parameters:
+The 
+.I handle
+is used to track persistent state across semanage calls, and for error reporting. The
+.I key 
+identifies the object being checked. The result of the test will be stored in the address pointed by 
+.I response
+The key is a property of the caller, and will not be stored or modified internally. 
+
+.TP
+.B Requirements:
+This function requires an semanage connection to be established (see 
+.BR semanage_connect "(3)"
+)
+
+.SH "RETURN VALUE"
+In case of failure, -1 is returned, and the semanage error callback is invoked, describing the error.
+Otherwise a non-negative integer is returned (a commit number). The same number will be returned by all other read calls to the semanage database until the next commit.
+
+.SH "SEE ALSO"
+.BR semanage_handle_create "(3), " semanage_connect "(3), "
diff --git a/libsemanage/man/man3/semanage_fcontext.3 b/libsemanage/man/man3/semanage_fcontext.3
new file mode 100644
index 0000000..c407899
--- /dev/null
+++ b/libsemanage/man/man3/semanage_fcontext.3
@@ -0,0 +1,160 @@
+.TH semanage_fcontext 3 "16 March 2006" "ivg2@cornell.edu" "Libsemanage API documentation"
+
+.SH "NAME" 
+SELinux File Context Management API
+
+.SH "SYNOPSIS"
+.B #include <semanage/fcontext_record.h>
+.br
+.B #include <semanage/fcontexts_policy.h>
+.br
+.B #include <semanage/fcontexts_local.h>
+
+.PP
+This object contains properties associated with a SELinux file context specification
+
+.PP
+For details on a specific function, see its manual page.
+
+.SH "Record API Overview"
+
+.HP 
+.BR semanage_fcontext_create "(3)" \- 
+.br
+create a file context spec
+
+.HP
+.BR semanage_fcontext_free "(3)" \-
+.br
+release resources for this file context spec 
+
+.HP
+.BR semanage_fcontext_key_create "(3)" \-
+.br
+create a key, which can be used to identify a file context spec
+
+.HP
+.BR semanage_fcontext_key_free "(3)" \-
+.br
+release resources for this file context spec key
+
+.HP
+.BR semanage_fcontext_key_extract "(3)" \- 
+.br
+create a key matching this file context spec 
+
+.HP
+.BR semanage_fcontext_clone "(3)" \- 
+.br
+create an identical file context spec (deep-copy clone)
+
+.HP
+.BR semanage_fcontext_compare "(3)" \- 
+.br
+compare this file context spec to the provided key
+
+.HP
+.BR semanage_fcontext_compare2 "(3)" \-
+.br
+compare this file context spec to another
+
+
+.SH "Properties API Overview"
+
+.HP
+.BR semanage_fcontext_get_expr "(3)" \-
+.br
+return the regular expression for this file context spec
+
+.HP
+.BR semanage_fcontext_set_expr "(3)" \-
+.br
+set the regular expression for this file context spec
+
+.HP
+.BR semanage_fcontext_get_type "(3)" \-
+.br
+return the file type for this file context spec
+
+.HP
+.BR semanage_fcontext_get_type_str "(3)" \-
+.br
+return a string representation for this file context spec type
+
+.HP
+.BR semanage_fcontext_set_type "(3)" \-
+.br
+set the file type for this file context spec
+
+.HP
+.BR semanage_fcontext_get_con "(3)" \-
+.br
+return the SELinux context for this file context spec
+
+.HP
+.BR semanage_fcontext_set_expr "(3)" \-
+.br
+set the SELinux context for this file context spec
+
+
+.SH "Record Store API Overview"
+
+.HP
+.BR semanage_fcontext_modify_local "(3)" \- 
+.br
+add or update a file context spec in the local store
+
+.HP
+.BR semanage_fcontext_del_local "(3)" \-
+.br
+delete a file context spec from the local store
+
+.HP
+.BR semanage_fcontext_exists "(3)" \-
+.br
+check if a file context spec is defined in the persistent policy
+
+.HP
+.BR semanage_fcontext_exists_local "(3)" \-
+.br
+check if a file context spec is defined in the local store
+
+.HP
+.BR semanage_fcontext_query "(3)" \-
+.br
+query a file context spec in the persistent policy
+
+.HP
+.BR semanage_fcontext_query_local "(3)" \- 
+.br
+query a file context spec in the local store
+
+.HP
+.BR semanage_fcontext_count "(3)" \-
+.br
+count the number of file context specs defined in the persistent policy
+
+.HP
+.BR semanage_fcontext_count_local "(3)" \-
+.br
+count the number of file context specs defined in the local store
+
+.HP
+.BR semanage_fcontext_iterate "(3)" \-
+.br
+execute a callback for each file context spec in the persistent policy
+
+.HP
+.BR semanage_fcontext_iterate_local "(3)" \-
+.br
+execute a callback for each file context spec in the local store
+
+.HP
+.BR semanage_fcontext_list "(3)" \-
+.br
+return an array containing all file context specs in the persistent policy
+
+.HP
+.BR semanage_fcontext_list_local "(3)" \-
+.br
+return an array containing all file context specs in the local store
diff --git a/libsemanage/man/man3/semanage_fcontext_count.3 b/libsemanage/man/man3/semanage_fcontext_count.3
new file mode 100644
index 0000000..7478bc2
--- /dev/null
+++ b/libsemanage/man/man3/semanage_fcontext_count.3
@@ -0,0 +1 @@
+.so man3/semanage_count.3
diff --git a/libsemanage/man/man3/semanage_fcontext_count_local.3 b/libsemanage/man/man3/semanage_fcontext_count_local.3
new file mode 100644
index 0000000..7478bc2
--- /dev/null
+++ b/libsemanage/man/man3/semanage_fcontext_count_local.3
@@ -0,0 +1 @@
+.so man3/semanage_count.3
diff --git a/libsemanage/man/man3/semanage_fcontext_del_local.3 b/libsemanage/man/man3/semanage_fcontext_del_local.3
new file mode 100644
index 0000000..a01dfcd
--- /dev/null
+++ b/libsemanage/man/man3/semanage_fcontext_del_local.3
@@ -0,0 +1 @@
+.so man3/semanage_del.3
diff --git a/libsemanage/man/man3/semanage_fcontext_exists.3 b/libsemanage/man/man3/semanage_fcontext_exists.3
new file mode 100644
index 0000000..40f3406
--- /dev/null
+++ b/libsemanage/man/man3/semanage_fcontext_exists.3
@@ -0,0 +1 @@
+.so man3/semanage_exists.3
diff --git a/libsemanage/man/man3/semanage_fcontext_exists_local.3 b/libsemanage/man/man3/semanage_fcontext_exists_local.3
new file mode 100644
index 0000000..40f3406
--- /dev/null
+++ b/libsemanage/man/man3/semanage_fcontext_exists_local.3
@@ -0,0 +1 @@
+.so man3/semanage_exists.3
diff --git a/libsemanage/man/man3/semanage_fcontext_iterate.3 b/libsemanage/man/man3/semanage_fcontext_iterate.3
new file mode 100644
index 0000000..7fc9c3d
--- /dev/null
+++ b/libsemanage/man/man3/semanage_fcontext_iterate.3
@@ -0,0 +1 @@
+.so man3/semanage_iterate.3
diff --git a/libsemanage/man/man3/semanage_fcontext_iterate_local.3 b/libsemanage/man/man3/semanage_fcontext_iterate_local.3
new file mode 100644
index 0000000..7fc9c3d
--- /dev/null
+++ b/libsemanage/man/man3/semanage_fcontext_iterate_local.3
@@ -0,0 +1 @@
+.so man3/semanage_iterate.3
diff --git a/libsemanage/man/man3/semanage_fcontext_list.3 b/libsemanage/man/man3/semanage_fcontext_list.3
new file mode 100644
index 0000000..b7095f8
--- /dev/null
+++ b/libsemanage/man/man3/semanage_fcontext_list.3
@@ -0,0 +1 @@
+.so man3/semanage_list.3
diff --git a/libsemanage/man/man3/semanage_fcontext_list_local.3 b/libsemanage/man/man3/semanage_fcontext_list_local.3
new file mode 100644
index 0000000..b7095f8
--- /dev/null
+++ b/libsemanage/man/man3/semanage_fcontext_list_local.3
@@ -0,0 +1 @@
+.so man3/semanage_list.3
diff --git a/libsemanage/man/man3/semanage_fcontext_modify_local.3 b/libsemanage/man/man3/semanage_fcontext_modify_local.3
new file mode 100644
index 0000000..3a07fe8
--- /dev/null
+++ b/libsemanage/man/man3/semanage_fcontext_modify_local.3
@@ -0,0 +1 @@
+.so man3/semanage_modify.3
diff --git a/libsemanage/man/man3/semanage_fcontext_query.3 b/libsemanage/man/man3/semanage_fcontext_query.3
new file mode 100644
index 0000000..5b5c844
--- /dev/null
+++ b/libsemanage/man/man3/semanage_fcontext_query.3
@@ -0,0 +1 @@
+.so man3/semanage_query.3
diff --git a/libsemanage/man/man3/semanage_fcontext_query_local.3 b/libsemanage/man/man3/semanage_fcontext_query_local.3
new file mode 100644
index 0000000..5b5c844
--- /dev/null
+++ b/libsemanage/man/man3/semanage_fcontext_query_local.3
@@ -0,0 +1 @@
+.so man3/semanage_query.3
diff --git a/libsemanage/man/man3/semanage_iface.3 b/libsemanage/man/man3/semanage_iface.3
new file mode 100644
index 0000000..e4aa631
--- /dev/null
+++ b/libsemanage/man/man3/semanage_iface.3
@@ -0,0 +1,153 @@
+.TH semanage_iface 3 "16 March 2006" "ivg2@cornell.edu" "Libsemanage API documentation"
+
+.SH "NAME" 
+SELinux Network Interfaces Management API
+
+.SH "SYNOPSIS"
+.B #include <semanage/iface_record.h>
+.br
+.B #include <semanage/interfaces_policy.h>
+.br
+.B #include <semanage/interfaces_local.h>
+
+.PP
+This object contains properties associated with a network interface. 
+
+.PP
+For details on a specific function, see its manual page.
+
+.SH "Record API Overview"
+
+.HP 
+.BR semanage_iface_create "(3)" \- 
+.br
+create an interface
+
+.HP
+.BR semanage_iface_free "(3)" \-
+.br
+release resources for this interface
+
+.HP
+.BR semanage_iface_key_create "(3)" \-
+.br
+create a key, which can be used to identify an interface
+
+.HP
+.BR semanage_iface_key_free "(3)" \-
+.br
+release resources for this interface key
+
+.HP
+.BR semanage_iface_key_extract "(3)" \- 
+.br
+create a key matching this interface
+
+.HP
+.BR semanage_iface_clone "(3)" \- 
+.br
+create an identical interface (deep-copy clone)
+
+.HP
+.BR semanage_iface_compare "(3)" \- 
+.br
+compare this interface to the provided key
+
+.HP
+.BR semanage_iface_compare2 "(3)" \-
+.br
+compare this interface to another
+
+.SH "Properties API Overview"
+
+.HP
+.BR semanage_iface_get_name "(3)" \- 
+.br
+return the name of this interface 
+
+.HP
+.BR semanage_iface_set_name "(3)" \-
+.br
+set the name of this interface 
+
+.HP
+.BR semanage_iface_get_ifcon "(3)" \-
+.br
+return the SELinux context associated with this interface
+
+.HP
+.BR semanage_iface_set_ifcon "(3)" \-
+.br
+set the SELinux context associated with this interface
+
+.HP
+.BR semanage_iface_get_msgcon "(3)" \-
+.br
+return the SELinux context associated with packets sent over this interface
+
+.HP
+.BR semanage_iface_set_msgcon "(3)" \-
+.br
+set the SELinux context associated with packets sent over this interface
+
+.SH "Record Store API Overview"
+
+.HP
+.BR semanage_iface_modify_local "(3)" \- 
+.br
+add or update an interface in the local store
+
+.HP
+.BR semanage_iface_del_local "(3)" \-
+.br
+delete an interface from the local store
+
+.HP
+.BR semanage_iface_exists "(3)" \-
+.br
+check if an interface is defined in the persistent policy
+
+.HP
+.BR semanage_iface_exists_local "(3)" \-
+.br
+check if an interface is defined in the local store
+
+.HP
+.BR semanage_iface_query "(3)" \-
+.br
+query an interface in the persistent policy
+
+.HP
+.BR semanage_iface_query_local "(3)" \- 
+.br
+query an interface in the local store
+
+.HP
+.BR semanage_iface_count "(3)" \-
+.br
+count the number of interfaces defined in the persistent policy
+
+.HP
+.BR semanage_iface_count_local "(3)" \-
+.br
+count the number of interfaces defined in the local store
+
+.HP
+.BR semanage_iface_iterate "(3)" \-
+.br
+execute a callback for each interface in the persistent policy
+
+.HP
+.BR semanage_iface_iterate_local "(3)" \-
+.br
+execute a callback for each interface in the local store
+
+.HP
+.BR semanage_iface_list "(3)" \-
+.br
+return an array containing all interfaces in the persistent policy
+
+.HP
+.BR semanage_iface_list_local "(3)" \-
+.br
+return an array containing all interfaces in the local store
diff --git a/libsemanage/man/man3/semanage_iface_count.3 b/libsemanage/man/man3/semanage_iface_count.3
new file mode 100644
index 0000000..7478bc2
--- /dev/null
+++ b/libsemanage/man/man3/semanage_iface_count.3
@@ -0,0 +1 @@
+.so man3/semanage_count.3
diff --git a/libsemanage/man/man3/semanage_iface_count_local.3 b/libsemanage/man/man3/semanage_iface_count_local.3
new file mode 100644
index 0000000..7478bc2
--- /dev/null
+++ b/libsemanage/man/man3/semanage_iface_count_local.3
@@ -0,0 +1 @@
+.so man3/semanage_count.3
diff --git a/libsemanage/man/man3/semanage_iface_del_local.3 b/libsemanage/man/man3/semanage_iface_del_local.3
new file mode 100644
index 0000000..a01dfcd
--- /dev/null
+++ b/libsemanage/man/man3/semanage_iface_del_local.3
@@ -0,0 +1 @@
+.so man3/semanage_del.3
diff --git a/libsemanage/man/man3/semanage_iface_exists.3 b/libsemanage/man/man3/semanage_iface_exists.3
new file mode 100644
index 0000000..40f3406
--- /dev/null
+++ b/libsemanage/man/man3/semanage_iface_exists.3
@@ -0,0 +1 @@
+.so man3/semanage_exists.3
diff --git a/libsemanage/man/man3/semanage_iface_exists_local.3 b/libsemanage/man/man3/semanage_iface_exists_local.3
new file mode 100644
index 0000000..40f3406
--- /dev/null
+++ b/libsemanage/man/man3/semanage_iface_exists_local.3
@@ -0,0 +1 @@
+.so man3/semanage_exists.3
diff --git a/libsemanage/man/man3/semanage_iface_iterate.3 b/libsemanage/man/man3/semanage_iface_iterate.3
new file mode 100644
index 0000000..7fc9c3d
--- /dev/null
+++ b/libsemanage/man/man3/semanage_iface_iterate.3
@@ -0,0 +1 @@
+.so man3/semanage_iterate.3
diff --git a/libsemanage/man/man3/semanage_iface_iterate_local.3 b/libsemanage/man/man3/semanage_iface_iterate_local.3
new file mode 100644
index 0000000..7fc9c3d
--- /dev/null
+++ b/libsemanage/man/man3/semanage_iface_iterate_local.3
@@ -0,0 +1 @@
+.so man3/semanage_iterate.3
diff --git a/libsemanage/man/man3/semanage_iface_list.3 b/libsemanage/man/man3/semanage_iface_list.3
new file mode 100644
index 0000000..b7095f8
--- /dev/null
+++ b/libsemanage/man/man3/semanage_iface_list.3
@@ -0,0 +1 @@
+.so man3/semanage_list.3
diff --git a/libsemanage/man/man3/semanage_iface_list_local.3 b/libsemanage/man/man3/semanage_iface_list_local.3
new file mode 100644
index 0000000..b7095f8
--- /dev/null
+++ b/libsemanage/man/man3/semanage_iface_list_local.3
@@ -0,0 +1 @@
+.so man3/semanage_list.3
diff --git a/libsemanage/man/man3/semanage_iface_modify_local.3 b/libsemanage/man/man3/semanage_iface_modify_local.3
new file mode 100644
index 0000000..3a07fe8
--- /dev/null
+++ b/libsemanage/man/man3/semanage_iface_modify_local.3
@@ -0,0 +1 @@
+.so man3/semanage_modify.3
diff --git a/libsemanage/man/man3/semanage_iface_query.3 b/libsemanage/man/man3/semanage_iface_query.3
new file mode 100644
index 0000000..5b5c844
--- /dev/null
+++ b/libsemanage/man/man3/semanage_iface_query.3
@@ -0,0 +1 @@
+.so man3/semanage_query.3
diff --git a/libsemanage/man/man3/semanage_iface_query_local.3 b/libsemanage/man/man3/semanage_iface_query_local.3
new file mode 100644
index 0000000..5b5c844
--- /dev/null
+++ b/libsemanage/man/man3/semanage_iface_query_local.3
@@ -0,0 +1 @@
+.so man3/semanage_query.3
diff --git a/libsemanage/man/man3/semanage_iterate.3 b/libsemanage/man/man3/semanage_iterate.3
new file mode 100644
index 0000000..0c9d7d0
--- /dev/null
+++ b/libsemanage/man/man3/semanage_iterate.3
@@ -0,0 +1,57 @@
+.TH semanage_iterate 3 "15 March 2006" "ivg2@cornell.edu" "Libsemanage API documentation"
+
+.SH "NAME" 
+SELinux Management API
+
+.SH "SYNOPSIS"
+The following iterate function is supported for any semanage record.
+.br
+Replace the function and object name as necessary.
+
+.B extern int ITERATE_FUNCTION (
+.br
+.BI "	semanage_handle_t *" handle ","
+.br
+.BI "	int (*handler) (
+.br
+.BI "                   const semanage_OBJECT_t *" object ","
+.br
+.BI "                   void *" varg "),"
+.br
+.BI "	void *" handler_arg ");"
+
+.SH "DESCRIPTION"
+.TP
+.B Behavior:
+The iterate function will execute the specified handler over all objects in the selected location. An arbitrary argument can be passed into the handler function along with each object. 
+
+The object passed in is property of the libsemanage library, and may not be modified or preserved - use 
+.B semanage_OBJECT_clone 
+if that is necessary.
+
+The handler code may not invoke any semanage write requests for the same object type (i.e. modifying the underlying store is not allowed). The iterate function is reentrant only while inside a transaction (see
+.B semanage_begin_transaction
+). It is not safe to execute other semanage read or write requests within iterate if not inside a transaction. The handler may return -1 to signal error exit, 0 to signal continue, and 1 to signal successful exit early (the iterate function will stop accordingly). 
+
+.TP
+.B Parameters:
+The 
+.I handle
+is used to track persistent state across semanage calls, and for error reporting. The
+.I handler
+is the function to execute, with 
+.I handler_arg
+as its second parameter, and each object as its first parameter.
+
+.TP
+.B Requirements:
+This function requires an semanage connection to be established (see 
+.BR semanage_connect "(3)"
+)
+
+.SH "RETURN VALUE"
+In case of failure, -1 is returned, and the semanage error callback is invoked, describing the error.
+Otherwise a non-negative integer is returned (a commit number). The same number will be returned by all other semanage object read calls until the next commit.
+
+.SH "SEE ALSO"
+.BR semanage_handle_create "(3), " semanage_connect "(3), "
diff --git a/libsemanage/man/man3/semanage_list.3 b/libsemanage/man/man3/semanage_list.3
new file mode 100644
index 0000000..c4d68ba
--- /dev/null
+++ b/libsemanage/man/man3/semanage_list.3
@@ -0,0 +1,46 @@
+.TH semanage_list 3 "16 March 2006" "ivg2@cornell.edu" "SELinux managent API documentation"
+
+.SH "NAME" 
+SELinux Lists Management API
+
+.SH "SYNOPSIS"
+The following list function is supported for any SELinux managent record.
+.br
+Replace the function and object name as necessary.
+
+.B extern int LIST_FUNCTION (
+.br
+.BI "	semanage_handle_t *" handle ","
+.br
+.BI "	semanage_OBJECT_t ***" objects ","
+.br
+.BI "	unsigned int* " count ");"
+
+.SH "DESCRIPTION"
+.TP
+.B Behavior:
+The list function will return an array of all the objects in the selected location.
+
+.TP
+.B Parameters:
+The 
+.I handle
+is used to track persistent state across semanage calls, and for error reporting. The function will allocate and populate the the array of objects, and store it at the location pointed by  
+.I objects.
+It will write the number of objects at the location pointed by 
+.I count.
+The array, and all its objects become property of the caller. Each object must be freed with 
+.B semanage_OBJECT_free. 
+
+.TP
+.B Requirements:
+This function requires an semanage connection to be established (see 
+.BR semanage_connect "(3)"
+)
+
+.SH "RETURN VALUE"
+In case of failure, -1 is returned, and the semanage error callback is invoked, describing the error.
+Otherwise a non-negative integer is returned (a commit number). The same number will be returned by all other semanage object read calls until the next commit.
+
+.SH "SEE ALSO"
+.BR semanage_handle_create "(3), " semanage_connect "(3), "
diff --git a/libsemanage/man/man3/semanage_modify.3 b/libsemanage/man/man3/semanage_modify.3
new file mode 100644
index 0000000..ddee386
--- /dev/null
+++ b/libsemanage/man/man3/semanage_modify.3
@@ -0,0 +1,49 @@
+.TH semanage_modify 3 "16 March 2006" "ivg2@cornell.edu" "Libsemanage API documentation"
+
+.SH "NAME" 
+SELinux Management API
+
+.SH "SYNOPSIS"
+The following modify function is supported for any semanage record.
+.br
+Replace the function and object name as necessary.
+
+.B extern int MODIFY_FUNCTION (
+.br
+.BI "	semanage_handle_t *" handle ","
+.br
+.BI "	const semanage_OBJECT_key_t *" key ","
+.br
+.BI "	const semanage_OBJECT_t *" data ");"
+
+.SH "DESCRIPTION"
+.TP
+.B Behavior:
+If a matching key is found in the local store, the provided object will replace the current one. Otherwise, it will be added to the store. When
+.BR semanage_commit "(3)" 
+is invoked, changes will be permanently written into the local store, and then loaded into policy. Validity of the object being added is checked at commit time. Adding new objects with respect to policy is allowed, except in the case of booleans. Attempt to add new booleans with respect to policy will fail at commit time.
+
+.TP
+.B Parameters:
+The 
+.I handle
+is used to track persistent state across semanage calls, and for error reporting. The
+.I key 
+identifies the 
+.I data
+object, which will be written into the store. The key are data are properties of the caller, and are not stored or modified internally.
+
+.TP
+.B Requirements:
+This function requires an semanage connection to be established (see 
+.BR semanage_connect "(3)"
+), and must be executed in a transaction (see 
+.BR semanage_begin_transaction "(3)"
+).
+
+.SH "RETURN VALUE"
+In case of failure, -1 is returned, and the semanage error callback is invoked, describing the error.
+Otherwise 0 is returned.
+
+.SH "SEE ALSO"
+.BR semanage_handle_create "(3), " semanage_begin_transaction "(3), " semanage_connect "(3), " semanage_commit "(3). "
diff --git a/libsemanage/man/man3/semanage_node.3 b/libsemanage/man/man3/semanage_node.3
new file mode 100644
index 0000000..1098be5
--- /dev/null
+++ b/libsemanage/man/man3/semanage_node.3
@@ -0,0 +1,188 @@
+.TH semanage_node 3 "16 March 2006" "ivg2@cornell.edu" "Libsemanage API documentation"
+
+.SH "NAME" 
+SELinux Network Nodes Management API
+
+.SH "SYNOPSIS"
+.B #include <semanage/node_record.h>
+.br
+.B #include <semanage/nodes_policy.h>
+.br
+.B #include <semanage/nodes_local.h>
+
+.PP
+This object contains properties associated with a network node. 
+
+.PP
+For details on a specific function, see its manual page.
+
+.SH "Record API Overview"
+
+.HP 
+.BR semanage_node_create "(3)" \- 
+.br
+create a node 
+
+.HP
+.BR semanage_node_free "(3)" \-
+.br
+release resources for this node 
+
+.HP
+.BR semanage_node_key_create "(3)" \-
+.br
+create a key, which can be used to identify a node 
+
+.HP
+.BR semanage_node_key_free "(3)" \-
+.br
+release resources for this node key
+
+.HP
+.BR semanage_node_key_extract "(3)" \- 
+.br
+create a key matching this node 
+
+.HP
+.BR semanage_node_clone "(3)" \- 
+.br
+create an identical node (deep-copy clone)
+
+.HP
+.BR semanage_node_compare "(3)" \- 
+.br
+compare this node to the provided key
+
+.HP
+.BR semanage_node_compare2 "(3)" \-
+.br
+compare this node to another
+
+.SH "Properties API Overview"
+
+.HP
+.BR semanage_node_get_addr "(3)" \- 
+.br
+return the IP address of this node in string representation
+
+.HP
+.BR semanage_node_set_addr "(3)" \-
+.br
+set the IP address of this node from the provided string representation and protocol
+
+.HP
+.BR semanage_node_get_addr_bytes "(3)" \-
+.br
+return the IP address of this node as a byte array in network byte order
+
+.HP
+.BR semanage_node_set_addr_bytes "(3)" \-
+.br
+set the IP address of this node from the provided byte array in network byte order
+
+.HP
+.BR semanage_node_get_mask "(3)" \-
+.br
+return the IP mask of this node in string representation
+
+.HP
+.BR semanage_node_set_mask "(3)" \-
+.br
+set the IP mask of this node from the provided string representation and protocol version
+
+.HP
+.BR semanage_node_get_mask_bytes "(3)" \-
+.br
+return the IP mask of this node as a byte array in network byte order
+
+.HP
+.BR semanage_node_set_mask_bytes "(3)" \-
+.br
+set the IP mask of this node from the provided byte array in network byte order
+
+.HP
+.BR semanage_node_get_proto "(3)" \-
+.br
+return the IP protocol version for this node
+
+.HP
+.BR semanage_node_get_proto_str "(3)" \-
+.br
+return a string representation of the given node protocol
+
+.HP
+.BR semanage_node_set_proto "(3)" \-
+.br
+set the IP protocol version for this node
+
+.HP
+.BR semanage_node_get_con "(3)" \-
+.br
+return the SELinux context associated with this node 
+
+.HP
+.BR semanage_node_set_con "(3)" \-
+.br
+set the SELinux context associated with this node 
+
+.SH "Record Store API Overview"
+
+.HP
+.BR semanage_node_modify_local "(3)" \- 
+.br
+add or update an interface in the local store
+
+.HP
+.BR semanage_node_del_local "(3)" \-
+.br
+delete an interface from the local store
+
+.HP
+.BR semanage_node_exists "(3)" \-
+.br
+check if an interface is defined in the persistent policy
+
+.HP
+.BR semanage_node_exists_local "(3)" \-
+.br
+check if an interface is defined in the local store
+
+.HP
+.BR semanage_node_query "(3)" \-
+.br
+query an interface in the persistent policy
+
+.HP
+.BR semanage_node_query_local "(3)" \- 
+.br
+query an interface in the local store
+
+.HP
+.BR semanage_node_count "(3)" \-
+.br
+count the number of nodes defined in the persistent policy
+
+.HP
+.BR semanage_node_count_local "(3)" \-
+.br
+count the number of nodes defined in the local store
+
+.HP
+.BR semanage_node_iterate "(3)" \-
+.br
+execute a callback for each interface in the persistent policy
+
+.HP
+.BR semanage_node_iterate_local "(3)" \-
+.br
+execute a callback for each interface in the local store
+
+.HP
+.BR semanage_node_list "(3)" \-
+.br
+return an array containing all nodes in the persistent policy
+
+.HP
+.BR semanage_node_list_local "(3)" \-
+.br
+return an array containing all nodes in the local store
diff --git a/libsemanage/man/man3/semanage_node_count.3 b/libsemanage/man/man3/semanage_node_count.3
new file mode 100644
index 0000000..7478bc2
--- /dev/null
+++ b/libsemanage/man/man3/semanage_node_count.3
@@ -0,0 +1 @@
+.so man3/semanage_count.3
diff --git a/libsemanage/man/man3/semanage_node_count_local.3 b/libsemanage/man/man3/semanage_node_count_local.3
new file mode 100644
index 0000000..7478bc2
--- /dev/null
+++ b/libsemanage/man/man3/semanage_node_count_local.3
@@ -0,0 +1 @@
+.so man3/semanage_count.3
diff --git a/libsemanage/man/man3/semanage_node_del_local.3 b/libsemanage/man/man3/semanage_node_del_local.3
new file mode 100644
index 0000000..a01dfcd
--- /dev/null
+++ b/libsemanage/man/man3/semanage_node_del_local.3
@@ -0,0 +1 @@
+.so man3/semanage_del.3
diff --git a/libsemanage/man/man3/semanage_node_exists.3 b/libsemanage/man/man3/semanage_node_exists.3
new file mode 100644
index 0000000..40f3406
--- /dev/null
+++ b/libsemanage/man/man3/semanage_node_exists.3
@@ -0,0 +1 @@
+.so man3/semanage_exists.3
diff --git a/libsemanage/man/man3/semanage_node_exists_local.3 b/libsemanage/man/man3/semanage_node_exists_local.3
new file mode 100644
index 0000000..40f3406
--- /dev/null
+++ b/libsemanage/man/man3/semanage_node_exists_local.3
@@ -0,0 +1 @@
+.so man3/semanage_exists.3
diff --git a/libsemanage/man/man3/semanage_node_iterate.3 b/libsemanage/man/man3/semanage_node_iterate.3
new file mode 100644
index 0000000..7fc9c3d
--- /dev/null
+++ b/libsemanage/man/man3/semanage_node_iterate.3
@@ -0,0 +1 @@
+.so man3/semanage_iterate.3
diff --git a/libsemanage/man/man3/semanage_node_iterate_local.3 b/libsemanage/man/man3/semanage_node_iterate_local.3
new file mode 100644
index 0000000..7fc9c3d
--- /dev/null
+++ b/libsemanage/man/man3/semanage_node_iterate_local.3
@@ -0,0 +1 @@
+.so man3/semanage_iterate.3
diff --git a/libsemanage/man/man3/semanage_node_list.3 b/libsemanage/man/man3/semanage_node_list.3
new file mode 100644
index 0000000..b7095f8
--- /dev/null
+++ b/libsemanage/man/man3/semanage_node_list.3
@@ -0,0 +1 @@
+.so man3/semanage_list.3
diff --git a/libsemanage/man/man3/semanage_node_list_local.3 b/libsemanage/man/man3/semanage_node_list_local.3
new file mode 100644
index 0000000..b7095f8
--- /dev/null
+++ b/libsemanage/man/man3/semanage_node_list_local.3
@@ -0,0 +1 @@
+.so man3/semanage_list.3
diff --git a/libsemanage/man/man3/semanage_node_modify_local.3 b/libsemanage/man/man3/semanage_node_modify_local.3
new file mode 100644
index 0000000..3a07fe8
--- /dev/null
+++ b/libsemanage/man/man3/semanage_node_modify_local.3
@@ -0,0 +1 @@
+.so man3/semanage_modify.3
diff --git a/libsemanage/man/man3/semanage_node_query.3 b/libsemanage/man/man3/semanage_node_query.3
new file mode 100644
index 0000000..5b5c844
--- /dev/null
+++ b/libsemanage/man/man3/semanage_node_query.3
@@ -0,0 +1 @@
+.so man3/semanage_query.3
diff --git a/libsemanage/man/man3/semanage_node_query_local.3 b/libsemanage/man/man3/semanage_node_query_local.3
new file mode 100644
index 0000000..5b5c844
--- /dev/null
+++ b/libsemanage/man/man3/semanage_node_query_local.3
@@ -0,0 +1 @@
+.so man3/semanage_query.3
diff --git a/libsemanage/man/man3/semanage_port.3 b/libsemanage/man/man3/semanage_port.3
new file mode 100644
index 0000000..b5f3441
--- /dev/null
+++ b/libsemanage/man/man3/semanage_port.3
@@ -0,0 +1,169 @@
+.TH semanage_port 3 "16 March 2006" "ivg2@cornell.edu" "Libsemanage API documentation"
+
+.SH "NAME" 
+SELinux Network Ports Management API
+
+.SH "SYNOPSIS"
+.B #include <semanage/port_record.h>
+.br
+.B #include <semanage/ports_policy.h>
+.br
+.B #include <semanage/ports_local.h>
+
+.PP
+This object contains properties associated with a range of network ports.
+
+.PP
+For details on a specific function, see its manual page.
+
+.SH "Record API Overview"
+
+.HP 
+.BR semanage_port_create "(3)" \- 
+.br
+create a port range
+
+.HP
+.BR semanage_port_free "(3)" \-
+.br
+release resources for this port range
+
+.HP
+.BR semanage_port_key_create "(3)" \-
+.br
+create a key, which can be used to identify a port range
+
+.HP
+.BR semanage_port_key_free "(3)" \-
+.br
+release resources for this port range key
+
+.HP
+.BR semanage_port_key_extract "(3)" \- 
+.br
+create a key matching this port range
+
+.HP
+.BR semanage_port_clone "(3)" \- 
+.br
+create an identical port range (deep-copy clone)
+
+.HP
+.BR semanage_port_compare "(3)" \- 
+.br
+compare this port range to the provided key
+
+.HP
+.BR semanage_port_compare2 "(3)" \-
+.br
+compare this port range to another
+
+.SH "Properties API Overview"
+
+.HP
+.BR semanage_port_get_proto "(3)" \-
+.br
+return the protocol for this port range
+
+.HP
+.BR semanage_port_get_proto_str "(3)" \-
+.br
+return a string representation of the given port protocol
+
+.HP
+.BR semanage_port_set_proto "(3)" \-
+.br
+set the protocol for this port range
+
+.HP
+.BR semanage_port_get_low "(3)" \-
+.br
+return the low port number for this port range
+
+.HP
+.BR semanage_port_get_high "(3)" \-
+.br
+return the high port number for this port range
+
+.HP
+.BR semanage_port_set_port "(3)" \-
+.br
+set the port number (same low and high) for this port range
+
+.HP
+.BR semanage_port_set_range "(3)" \-
+.br
+set the low and high port number for this port range
+
+.HP
+.BR semanage_port_get_con "(3)" \-
+.br
+return the SELinux context for this port range
+
+.HP
+.BR semanage_port_set_con "(3)" \-
+.br
+set the SELinux context for this port range
+
+
+.SH "Record Store API Overview"
+
+.HP
+.BR semanage_port_modify_local "(3)" \- 
+.br
+add or update a port range in the local store
+
+.HP
+.BR semanage_port_del_local "(3)" \-
+.br
+delete a port range from the local store
+
+.HP
+.BR semanage_port_exists "(3)" \-
+.br
+check if a port range is defined in the persistent policy
+
+.HP
+.BR semanage_port_exists_local "(3)" \-
+.br
+check if a port range is defined in the local store
+
+.HP
+.BR semanage_port_query "(3)" \-
+.br
+query a port range in the persistent policy
+
+.HP
+.BR semanage_port_query_local "(3)" \- 
+.br
+query a port range in the local store
+
+.HP
+.BR semanage_port_count "(3)" \-
+.br
+count the number of port ranges defined in the persistent policy
+
+.HP
+.BR semanage_port_count_local "(3)" \-
+.br
+count the number of port ranges defined in the local store
+
+.HP
+.BR semanage_port_iterate "(3)" \-
+.br
+execute a callback for each port range in the persistent policy
+
+.HP
+.BR semanage_port_iterate_local "(3)" \-
+.br
+execute a callback for each port range in the local store
+
+.HP
+.BR semanage_port_list "(3)" \-
+.br
+return an array containing all port ranges in the persistent policy
+
+.HP
+.BR semanage_port_list_local "(3)" \-
+.br
+return an array containing all port ranges in the local store 
diff --git a/libsemanage/man/man3/semanage_port_count.3 b/libsemanage/man/man3/semanage_port_count.3
new file mode 100644
index 0000000..7478bc2
--- /dev/null
+++ b/libsemanage/man/man3/semanage_port_count.3
@@ -0,0 +1 @@
+.so man3/semanage_count.3
diff --git a/libsemanage/man/man3/semanage_port_count_local.3 b/libsemanage/man/man3/semanage_port_count_local.3
new file mode 100644
index 0000000..7478bc2
--- /dev/null
+++ b/libsemanage/man/man3/semanage_port_count_local.3
@@ -0,0 +1 @@
+.so man3/semanage_count.3
diff --git a/libsemanage/man/man3/semanage_port_del_local.3 b/libsemanage/man/man3/semanage_port_del_local.3
new file mode 100644
index 0000000..a01dfcd
--- /dev/null
+++ b/libsemanage/man/man3/semanage_port_del_local.3
@@ -0,0 +1 @@
+.so man3/semanage_del.3
diff --git a/libsemanage/man/man3/semanage_port_exists.3 b/libsemanage/man/man3/semanage_port_exists.3
new file mode 100644
index 0000000..40f3406
--- /dev/null
+++ b/libsemanage/man/man3/semanage_port_exists.3
@@ -0,0 +1 @@
+.so man3/semanage_exists.3
diff --git a/libsemanage/man/man3/semanage_port_exists_local.3 b/libsemanage/man/man3/semanage_port_exists_local.3
new file mode 100644
index 0000000..40f3406
--- /dev/null
+++ b/libsemanage/man/man3/semanage_port_exists_local.3
@@ -0,0 +1 @@
+.so man3/semanage_exists.3
diff --git a/libsemanage/man/man3/semanage_port_iterate.3 b/libsemanage/man/man3/semanage_port_iterate.3
new file mode 100644
index 0000000..7fc9c3d
--- /dev/null
+++ b/libsemanage/man/man3/semanage_port_iterate.3
@@ -0,0 +1 @@
+.so man3/semanage_iterate.3
diff --git a/libsemanage/man/man3/semanage_port_iterate_local.3 b/libsemanage/man/man3/semanage_port_iterate_local.3
new file mode 100644
index 0000000..7fc9c3d
--- /dev/null
+++ b/libsemanage/man/man3/semanage_port_iterate_local.3
@@ -0,0 +1 @@
+.so man3/semanage_iterate.3
diff --git a/libsemanage/man/man3/semanage_port_list.3 b/libsemanage/man/man3/semanage_port_list.3
new file mode 100644
index 0000000..b7095f8
--- /dev/null
+++ b/libsemanage/man/man3/semanage_port_list.3
@@ -0,0 +1 @@
+.so man3/semanage_list.3
diff --git a/libsemanage/man/man3/semanage_port_list_local.3 b/libsemanage/man/man3/semanage_port_list_local.3
new file mode 100644
index 0000000..b7095f8
--- /dev/null
+++ b/libsemanage/man/man3/semanage_port_list_local.3
@@ -0,0 +1 @@
+.so man3/semanage_list.3
diff --git a/libsemanage/man/man3/semanage_port_modify_local.3 b/libsemanage/man/man3/semanage_port_modify_local.3
new file mode 100644
index 0000000..3a07fe8
--- /dev/null
+++ b/libsemanage/man/man3/semanage_port_modify_local.3
@@ -0,0 +1 @@
+.so man3/semanage_modify.3
diff --git a/libsemanage/man/man3/semanage_port_query.3 b/libsemanage/man/man3/semanage_port_query.3
new file mode 100644
index 0000000..5b5c844
--- /dev/null
+++ b/libsemanage/man/man3/semanage_port_query.3
@@ -0,0 +1 @@
+.so man3/semanage_query.3
diff --git a/libsemanage/man/man3/semanage_port_query_local.3 b/libsemanage/man/man3/semanage_port_query_local.3
new file mode 100644
index 0000000..5b5c844
--- /dev/null
+++ b/libsemanage/man/man3/semanage_port_query_local.3
@@ -0,0 +1 @@
+.so man3/semanage_query.3
diff --git a/libsemanage/man/man3/semanage_query.3 b/libsemanage/man/man3/semanage_query.3
new file mode 100644
index 0000000..b899595
--- /dev/null
+++ b/libsemanage/man/man3/semanage_query.3
@@ -0,0 +1,46 @@
+.TH semanage_query 3 "15 March 2006" "ivg2@cornell.edu" "Libsemanage API documentation"
+
+.SH "NAME" 
+SELinux Management API
+
+.SH "SYNOPSIS"
+The following query function is supported for any semanage record.
+.br
+Replace the function and object name as necessary.
+
+.B extern int QUERY_FUNCTION (
+.br
+.BI "	semanage_handle_t *" handle ","
+.br
+.BI "	const semanage_OBJECT_key_t *" key ","
+.br
+.BI "	semanage_OBJECT_t **" response ");"
+
+.SH "DESCRIPTION"
+.TP
+.B Behavior:
+The query function will fail if a matching key is not found. Otherwise, the corresponding object is returned. 
+
+.TP
+.B Parameters:
+The 
+.I handle
+is used to track persistent state across semanage calls, and for error reporting. The
+.I key 
+identifies the object being queried, which will be stored in the address pointed by 
+.I response
+The key is a property of the caller, and will not be stored or modified internally. The object returned becomes a property of the caller, and must be freed with 
+.B semanage_OBJECT_free. 
+
+.TP
+.B Requirements:
+This function requires an semanage connection to be established (see 
+.BR semanage_connect "(3)"
+)
+
+.SH "RETURN VALUE"
+In case of failure, -1 is returned, and the semanage error callback is invoked, describing the error.
+Otherwise a non-negative integer is returned (a commit number). The same number will be returned by all other semanage object read calls until the next commit.
+
+.SH "SEE ALSO"
+.BR semanage_handle_create "(3), " semanage_connect "(3), "
diff --git a/libsemanage/man/man3/semanage_seuser.3 b/libsemanage/man/man3/semanage_seuser.3
new file mode 100644
index 0000000..9011724
--- /dev/null
+++ b/libsemanage/man/man3/semanage_seuser.3
@@ -0,0 +1,155 @@
+.TH semanage_seuser 3 "16 March 2006" "ivg2@cornell.edu" "Libsemanage API documentation"
+
+.SH "NAME" 
+Linux UID to SELinux User Management API
+
+.SH "SYNOPSIS"
+.B #include <semanage/seuser_record.h>
+.br
+.B #include <semanage/seusers_policy.h>
+.br
+.B #include <semanage/seusers_local.h>
+
+.PP
+This object contains properties associated with a Unix user. Typically many Unix users are mapped to the same SELinux user. See 
+.BR semanage_user "(3)"
+for overview of the SELinux user API. 
+
+.PP
+For details on a specific function, see its manual page.
+
+.SH "Record API Overview"
+
+.HP 
+.BR semanage_seuser_create "(3)" \- 
+.br
+create a seuser
+
+.HP
+.BR semanage_seuser_free "(3)" \-
+.br
+release resources for this seuser
+
+.HP
+.BR semanage_seuser_key_create "(3)" \-
+.br
+create a key, which can be used to identify a seuser 
+
+.HP
+.BR semanage_seuser_key_free "(3)" \-
+.br
+release resources for this seuser key
+
+.HP
+.BR semanage_seuser_key_extract "(3)" \- 
+.br
+create a key matching this seuser 
+
+.HP
+.BR semanage_seuser_clone "(3)" \- 
+.br
+create an identical seuser (deep-copy clone)
+
+.HP
+.BR semanage_seuser_compare "(3)" \- 
+.br
+compare this seuser to the provided key
+
+.HP
+.BR semanage_seuser_compare2 "(3)" \-
+.br
+compare this seuser to another
+
+.SH "Properties API Overview"
+
+.HP
+.BR semanage_seuser_get_name "(3)" \- 
+.br
+return the name of this seuser
+
+.HP
+.BR semanage_user_set_name "(3)" \-
+.br
+set the name of this seuser
+
+.HP
+.BR semanage_seuser_get_sename "(3)" \-
+.br
+return the name of the (SELinux) user mapped to this seuser
+
+.HP
+.BR semanage_user_set_sename "(3)" \-
+.br
+set the name of the (SELinux) user mapped to this seuser
+
+.HP
+.BR semanage_user_get_mlsrange "(3)" \-
+.br
+return a the range of valid MLS sensitivities and categories for this user
+
+.HP
+.BR semanage_user_set_mlsrange "(3)" \-
+.br
+set the range of valid MLS sensitivities and categories for this user
+
+.SH "Record Store API Overview"
+
+.HP
+.BR semanage_seuser_modify_local "(3)" \- 
+.br
+add or update a seuser in the local store
+
+.HP
+.BR semanage_seuser_del_local "(3)" \-
+.br
+delete a seuser from the local store
+
+.HP
+.BR semanage_seuser_exists "(3)" \-
+.br
+check if a seuser is defined in the persistent policy
+
+.HP
+.BR semanage_seuser_exists_local "(3)" \-
+.br
+check if a seuser is defined in the local store
+
+.HP
+.BR semanage_seuser_query "(3)" \-
+.br
+query a seuser in the persistent policy
+
+.HP
+.BR semanage_seuser_query_local "(3)" \- 
+.br
+query a seuser in the local store
+
+.HP
+.BR semanage_seuser_count "(3)" \-
+.br
+count the number of seusers defined in the persistent policy
+
+.HP
+.BR semanage_seuser_count_local "(3)" \-
+.br
+count the number of seusers defined in the local store
+
+.HP
+.BR semanage_seuser_iterate "(3)" \-
+.br
+execute a callback for each seuser in the persistent policy
+
+.HP
+.BR semanage_seuser_iterate_local "(3)" \-
+.br
+execute a callback for each seuser in the local store
+
+.HP
+.BR semanage_seuser_list "(3)" \-
+.br
+return an array containing all seusers in the persistent policy
+
+.HP
+.BR semanage_seuser_list_local "(3)" \-
+.br
+return an array containing all seusers in the local store
diff --git a/libsemanage/man/man3/semanage_seuser_count.3 b/libsemanage/man/man3/semanage_seuser_count.3
new file mode 100644
index 0000000..7478bc2
--- /dev/null
+++ b/libsemanage/man/man3/semanage_seuser_count.3
@@ -0,0 +1 @@
+.so man3/semanage_count.3
diff --git a/libsemanage/man/man3/semanage_seuser_count_local.3 b/libsemanage/man/man3/semanage_seuser_count_local.3
new file mode 100644
index 0000000..7478bc2
--- /dev/null
+++ b/libsemanage/man/man3/semanage_seuser_count_local.3
@@ -0,0 +1 @@
+.so man3/semanage_count.3
diff --git a/libsemanage/man/man3/semanage_seuser_del_local.3 b/libsemanage/man/man3/semanage_seuser_del_local.3
new file mode 100644
index 0000000..a01dfcd
--- /dev/null
+++ b/libsemanage/man/man3/semanage_seuser_del_local.3
@@ -0,0 +1 @@
+.so man3/semanage_del.3
diff --git a/libsemanage/man/man3/semanage_seuser_exists.3 b/libsemanage/man/man3/semanage_seuser_exists.3
new file mode 100644
index 0000000..40f3406
--- /dev/null
+++ b/libsemanage/man/man3/semanage_seuser_exists.3
@@ -0,0 +1 @@
+.so man3/semanage_exists.3
diff --git a/libsemanage/man/man3/semanage_seuser_exists_local.3 b/libsemanage/man/man3/semanage_seuser_exists_local.3
new file mode 100644
index 0000000..40f3406
--- /dev/null
+++ b/libsemanage/man/man3/semanage_seuser_exists_local.3
@@ -0,0 +1 @@
+.so man3/semanage_exists.3
diff --git a/libsemanage/man/man3/semanage_seuser_iterate.3 b/libsemanage/man/man3/semanage_seuser_iterate.3
new file mode 100644
index 0000000..7fc9c3d
--- /dev/null
+++ b/libsemanage/man/man3/semanage_seuser_iterate.3
@@ -0,0 +1 @@
+.so man3/semanage_iterate.3
diff --git a/libsemanage/man/man3/semanage_seuser_iterate_local.3 b/libsemanage/man/man3/semanage_seuser_iterate_local.3
new file mode 100644
index 0000000..7fc9c3d
--- /dev/null
+++ b/libsemanage/man/man3/semanage_seuser_iterate_local.3
@@ -0,0 +1 @@
+.so man3/semanage_iterate.3
diff --git a/libsemanage/man/man3/semanage_seuser_list.3 b/libsemanage/man/man3/semanage_seuser_list.3
new file mode 100644
index 0000000..b7095f8
--- /dev/null
+++ b/libsemanage/man/man3/semanage_seuser_list.3
@@ -0,0 +1 @@
+.so man3/semanage_list.3
diff --git a/libsemanage/man/man3/semanage_seuser_list_local.3 b/libsemanage/man/man3/semanage_seuser_list_local.3
new file mode 100644
index 0000000..b7095f8
--- /dev/null
+++ b/libsemanage/man/man3/semanage_seuser_list_local.3
@@ -0,0 +1 @@
+.so man3/semanage_list.3
diff --git a/libsemanage/man/man3/semanage_seuser_modify_local.3 b/libsemanage/man/man3/semanage_seuser_modify_local.3
new file mode 100644
index 0000000..3a07fe8
--- /dev/null
+++ b/libsemanage/man/man3/semanage_seuser_modify_local.3
@@ -0,0 +1 @@
+.so man3/semanage_modify.3
diff --git a/libsemanage/man/man3/semanage_seuser_query.3 b/libsemanage/man/man3/semanage_seuser_query.3
new file mode 100644
index 0000000..5b5c844
--- /dev/null
+++ b/libsemanage/man/man3/semanage_seuser_query.3
@@ -0,0 +1 @@
+.so man3/semanage_query.3
diff --git a/libsemanage/man/man3/semanage_seuser_query_local.3 b/libsemanage/man/man3/semanage_seuser_query_local.3
new file mode 100644
index 0000000..5b5c844
--- /dev/null
+++ b/libsemanage/man/man3/semanage_seuser_query_local.3
@@ -0,0 +1 @@
+.so man3/semanage_query.3
diff --git a/libsemanage/man/man3/semanage_user.3 b/libsemanage/man/man3/semanage_user.3
new file mode 100644
index 0000000..5ba60b2
--- /dev/null
+++ b/libsemanage/man/man3/semanage_user.3
@@ -0,0 +1,195 @@
+.TH semanage_user 3 "16 March 2006" "ivg2@cornell.edu" "Libsemanage API documentation"
+
+.SH "NAME" 
+SELinux User Management API
+
+.SH "SYNOPSIS"
+.B #include <semanage/user_record.h>
+.br
+.B #include <semanage/users_policy.h>
+.br
+.B #include <semanage/users_local.h>
+
+.PP
+This object contains properties associated with a SELinux user. 
+Typically many Unix users are mapped to the same SELinux user. See 
+.BR semanage_seuser "(3)"
+for overview of the Unix user API. 
+
+.PP
+For details on a specific function, see its manual page.
+
+.SH "Record API Overview"
+
+.HP 
+.BR semanage_user_create "(3)" \- 
+.br
+create a user 
+
+.HP
+.BR semanage_user_free "(3)" \-
+.br
+release resources for this user
+
+.HP
+.BR semanage_user_key_create "(3)" \-
+.br
+create a key, which can be used to identify a user
+
+.HP
+.BR semanage_user_key_free "(3)" \-
+.br
+release resources for this user key
+
+.HP
+.BR semanage_user_key_extract "(3)" \- 
+.br
+create a key matching this user
+
+.HP
+.BR semanage_user_clone "(3)" \- 
+.br
+create an identical user (deep-copy clone)
+
+.HP
+.BR semanage_user_compare "(3)" \- 
+.br
+compare this user to the provided key
+
+.HP
+.BR semanage_user_compare2 "(3)" \-
+.br
+compare this user to another
+
+.SH "Properties API Overview"
+
+.HP
+.BR semanage_user_get_name "(3)" \- 
+.br
+return the name of this user
+
+.HP
+.BR semanage_user_set_name "(3)" \-
+.br
+set the name of this user
+
+.HP
+.BR semanage_user_get_prefix "(3)" \-
+.br
+return the labeling prefix for this user, used to control the contexts of user directories
+
+.HP
+.BR semanage_user_set_prefix "(3)" \-
+.br
+set the labeling prefix for this user
+
+.HP
+.BR semanage_user_get_mlslevel "(3)" \-
+.br
+return the default MLS level, which is assigned to this user at login time
+
+.HP
+.BR semanage_user_set_mlslevel "(3)" \-
+.br
+set the default MLS level
+
+.HP
+.BR semanage_user_get_mlsrange "(3)" \-
+.br
+return the range of valid MLS sensitivities and categories for this user
+
+.HP
+.BR semanage_user_set_mlsrange "(3)" \-
+.br
+set the range of valid MLS sensitivities and categories for this user
+
+.HP
+.BR semanage_user_add_role "(3)" \-
+.br
+add a role to the user's list of valid roles
+
+.HP
+.BR semanage_user_del_role "(3)" \-
+.br
+remove a role from the user's list of valid roles
+
+.HP
+.BR semanage_user_has_role "(3)" \-
+.br
+check if a role is valid for this user
+
+.HP
+.BR semanage_user_get_num_roles "(3)" \-
+.br
+return the number of valid roles for this user
+
+.HP
+.BR semanage_user_get_roles "(3)" \-
+.br
+return an array containing the roles for this user
+
+.HP
+.BR semanage_user_set_roles "(3)" \-
+set the roles for this user
+
+.SH "Record Store API Overview"
+
+.HP
+.BR semanage_user_modify_local "(3)" \- 
+.br
+add or update a user in the local store
+
+.HP
+.BR semanage_user_del_local "(3)" \-
+.br
+delete a user from the local store
+
+.HP
+.BR semanage_user_exists "(3)" \-
+.br
+check if a user is defined in the persistent policy
+
+.HP
+.BR semanage_user_exists_local "(3)" \-
+.br
+check if a user is defined in the local store
+
+.HP
+.BR semanage_user_query "(3)" \-
+.br
+query a user in the persistent policy
+
+.HP
+.BR semanage_user_query_local "(3)" \- 
+.br
+query a user in the local store
+
+.HP
+.BR semanage_user_count "(3)" \-
+.br
+count the number of users defined in the persistent policy
+
+.HP
+.BR semanage_user_count_local "(3)" \-
+.br
+count the number of users defined in the local store
+
+.HP
+.BR semanage_user_iterate "(3)" \-
+.br
+execute a callback for each user in the persistent policy
+
+.HP
+.BR semanage_user_iterate_local "(3)" \-
+.br
+execute a callback for each user in the local store
+
+.HP
+.BR semanage_user_list "(3)" \-
+.br
+return an array containing all users in the persistent policy
+
+.HP
+.BR semanage_user_list_local "(3)" \-
+.br
+return an array containing all users in the local store
diff --git a/libsemanage/man/man3/semanage_user_count.3 b/libsemanage/man/man3/semanage_user_count.3
new file mode 100644
index 0000000..7478bc2
--- /dev/null
+++ b/libsemanage/man/man3/semanage_user_count.3
@@ -0,0 +1 @@
+.so man3/semanage_count.3
diff --git a/libsemanage/man/man3/semanage_user_count_local.3 b/libsemanage/man/man3/semanage_user_count_local.3
new file mode 100644
index 0000000..7478bc2
--- /dev/null
+++ b/libsemanage/man/man3/semanage_user_count_local.3
@@ -0,0 +1 @@
+.so man3/semanage_count.3
diff --git a/libsemanage/man/man3/semanage_user_del_local.3 b/libsemanage/man/man3/semanage_user_del_local.3
new file mode 100644
index 0000000..a01dfcd
--- /dev/null
+++ b/libsemanage/man/man3/semanage_user_del_local.3
@@ -0,0 +1 @@
+.so man3/semanage_del.3
diff --git a/libsemanage/man/man3/semanage_user_exists.3 b/libsemanage/man/man3/semanage_user_exists.3
new file mode 100644
index 0000000..40f3406
--- /dev/null
+++ b/libsemanage/man/man3/semanage_user_exists.3
@@ -0,0 +1 @@
+.so man3/semanage_exists.3
diff --git a/libsemanage/man/man3/semanage_user_exists_local.3 b/libsemanage/man/man3/semanage_user_exists_local.3
new file mode 100644
index 0000000..40f3406
--- /dev/null
+++ b/libsemanage/man/man3/semanage_user_exists_local.3
@@ -0,0 +1 @@
+.so man3/semanage_exists.3
diff --git a/libsemanage/man/man3/semanage_user_iterate.3 b/libsemanage/man/man3/semanage_user_iterate.3
new file mode 100644
index 0000000..7fc9c3d
--- /dev/null
+++ b/libsemanage/man/man3/semanage_user_iterate.3
@@ -0,0 +1 @@
+.so man3/semanage_iterate.3
diff --git a/libsemanage/man/man3/semanage_user_iterate_local.3 b/libsemanage/man/man3/semanage_user_iterate_local.3
new file mode 100644
index 0000000..7fc9c3d
--- /dev/null
+++ b/libsemanage/man/man3/semanage_user_iterate_local.3
@@ -0,0 +1 @@
+.so man3/semanage_iterate.3
diff --git a/libsemanage/man/man3/semanage_user_list.3 b/libsemanage/man/man3/semanage_user_list.3
new file mode 100644
index 0000000..b7095f8
--- /dev/null
+++ b/libsemanage/man/man3/semanage_user_list.3
@@ -0,0 +1 @@
+.so man3/semanage_list.3
diff --git a/libsemanage/man/man3/semanage_user_list_local.3 b/libsemanage/man/man3/semanage_user_list_local.3
new file mode 100644
index 0000000..b7095f8
--- /dev/null
+++ b/libsemanage/man/man3/semanage_user_list_local.3
@@ -0,0 +1 @@
+.so man3/semanage_list.3
diff --git a/libsemanage/man/man3/semanage_user_modify_local.3 b/libsemanage/man/man3/semanage_user_modify_local.3
new file mode 100644
index 0000000..3a07fe8
--- /dev/null
+++ b/libsemanage/man/man3/semanage_user_modify_local.3
@@ -0,0 +1 @@
+.so man3/semanage_modify.3
diff --git a/libsemanage/man/man3/semanage_user_query.3 b/libsemanage/man/man3/semanage_user_query.3
new file mode 100644
index 0000000..5b5c844
--- /dev/null
+++ b/libsemanage/man/man3/semanage_user_query.3
@@ -0,0 +1 @@
+.so man3/semanage_query.3
diff --git a/libsemanage/man/man3/semanage_user_query_local.3 b/libsemanage/man/man3/semanage_user_query_local.3
new file mode 100644
index 0000000..5b5c844
--- /dev/null
+++ b/libsemanage/man/man3/semanage_user_query_local.3
@@ -0,0 +1 @@
+.so man3/semanage_query.3