.deps/
.libs/
-libsmack.la
+*.la
*.lo
-version-info 2:0:1 \
-Wl,--version-script=$(top_srcdir)/libsmack/libsmack.sym
libsmack_la_SOURCES = libsmack.c init.c
+libsmack_la_LIBADD = libsmackcommon.la
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libsmack.pc
library_includedir=$(includedir)/sys
library_include_HEADERS=sys/smack.h
+noinst_LTLIBRARIES = libsmackcommon.la
+libsmackcommon_la_SOURCES = common.h common.c
*/
#include "sys/smack.h"
+#include "common.h"
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
return new_label;
}
+
+int smack_load_policy(void)
+{
+ if (!smack_smackfs_path()) {
+ fprintf(stderr, "SmackFS is not mounted.\n");
+ return -1;
+ }
+
+ if (clear())
+ return -1;
+
+ if (apply_rules(ACCESSES_D_PATH, 0))
+ return -1;
+
+ if (apply_cipso(CIPSO_D_PATH))
+ return -1;
+
+ return 0;
+}
smack_label_length;
smack_set_label_for_path;
smack_remove_label_for_path;
+ smack_load_policy;
local:
*;
} LIBSMACK_1.0;
*/
ssize_t smack_label_length(const char *label);
+/*!
+ * Perform the initial policy load.
+ * This function loads the Smack policy from default location and loads
+ * it to kernel. Smackfs file system must be alreadt mounted.
+ * It is designed for init process to load the policy at system startup.
+ *
+ * @return Returns 0 on success and negative on failure.
+ */
+int smack_load_policy(void);
+
#ifdef __cplusplus
}
#endif
AM_CPPFLAGS = -I$(top_srcdir)/libsmack
smackaccess_SOURCES = smackaccess.c
-smackaccess_LDADD = ../libsmack/libsmack.la
+smackaccess_LDADD = ../libsmack/libsmack.la ../libsmack/libsmackcommon.la
-smackload_SOURCES = smackload.c common.c
-smackload_LDADD = ../libsmack/libsmack.la
+smackload_SOURCES = smackload.c
+smackload_LDADD = ../libsmack/libsmack.la ../libsmack/libsmackcommon.la
-smackcipso_SOURCES = smackcipso.c common.c
-smackcipso_LDADD = ../libsmack/libsmack.la
+smackcipso_SOURCES = smackcipso.c
+smackcipso_LDADD = ../libsmack/libsmack.la ../libsmack/libsmackcommon.la
-smackctl_SOURCES = smackctl.c common.c
-smackctl_LDADD = ../libsmack/libsmack.la
+smackctl_SOURCES = smackctl.c
+smackctl_LDADD = ../libsmack/libsmack.la ../libsmack/libsmackcommon.la
chsmack_SOURCES = chsmack.c
-chsmack_LDADD = ../libsmack/libsmack.la
-
-EXTRA_DIST = common.h
+chsmack_LDADD = ../libsmack/libsmack.la ../libsmack/libsmackcommon.la
#include <errno.h>
#include <string.h>
-static int apply_all(void)
-{
- if (!smack_smackfs_path()) {
- fprintf(stderr, "SmackFS is not mounted.\n");
- return -1;
- }
-
- if (clear())
- return -1;
-
- if (apply_rules(ACCESSES_D_PATH, 0))
- return -1;
-
- if (apply_cipso(CIPSO_D_PATH))
- return -1;
-
- return 0;
-}
-
int main(int argc, char **argv)
{
const char *tmp = smack_smackfs_path();
}
if (!strcmp(argv[1], "apply")) {
- if (apply_all())
+ if (smack_load_policy())
exit(1);
} else if (!strcmp(argv[1], "clear")) {
if (clear())