]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
security: Add virSecurityDomainSetDirLabel
authorMartin Kletzander <mkletzan@redhat.com>
Mon, 17 Aug 2015 17:43:43 +0000 (10:43 -0700)
committerCole Robinson <crobinso@redhat.com>
Tue, 22 Sep 2015 00:18:05 +0000 (20:18 -0400)
That function can be used for setting security labels on arbitrary
directories.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
(cherry picked from commit f65a2a12f4b9ab6144a979774f0486cdc4f7a60a)

src/libvirt_private.syms
src/security/security_driver.h
src/security/security_manager.c
src/security/security_manager.h

index c72c2f9d4c09d4507098373916108e55ffe1acf3..bb34cbaa576d4b1741ef25c2af1f4831b1557b1a 100644 (file)
@@ -1021,6 +1021,7 @@ virSecurityDriverLookup;
 # security/security_manager.h
 virSecurityManagerCheckAllLabel;
 virSecurityManagerClearSocketLabel;
+virSecurityManagerDomainSetDirLabel;
 virSecurityManagerGenLabel;
 virSecurityManagerGetBaseLabel;
 virSecurityManagerGetDOI;
index f0dca09177e5d91511117616d9e77b7f0f3e37e0..784b0dee65eaa38db5b933ca5ce82f569c450e25 100644 (file)
@@ -118,6 +118,9 @@ typedef int (*virSecurityDomainSetImageLabel) (virSecurityManagerPtr mgr,
 typedef int (*virSecurityDomainRestoreImageLabel) (virSecurityManagerPtr mgr,
                                                    virDomainDefPtr def,
                                                    virStorageSourcePtr src);
+typedef int (*virSecurityDomainSetDirLabel) (virSecurityManagerPtr mgr,
+                                             virDomainDefPtr def,
+                                             const char *path);
 
 
 struct _virSecurityDriver {
@@ -168,6 +171,8 @@ struct _virSecurityDriver {
     virSecurityDomainSetHugepages domainSetSecurityHugepages;
 
     virSecurityDriverGetBaseLabel getBaseLabel;
+
+    virSecurityDomainSetDirLabel domainSetDirLabel;
 };
 
 virSecurityDriverPtr virSecurityDriverLookup(const char *name,
index f533571e393f76d9f6a955d14e227045c7a5d97f..28d7dfd0c0b2d697cc19adbc7f5227993d94cd72 100644 (file)
@@ -1006,3 +1006,20 @@ virSecurityManagerSetHugepages(virSecurityManagerPtr mgr,
 
     return 0;
 }
+
+
+int
+virSecurityManagerDomainSetDirLabel(virSecurityManagerPtr mgr,
+                                    virDomainDefPtr vm,
+                                    const char *path)
+{
+    if (mgr->drv->domainSetDirLabel) {
+        int ret;
+        virObjectLock(mgr);
+        ret = mgr->drv->domainSetDirLabel(mgr, vm, path);
+        virObjectUnlock(mgr);
+        return ret;
+    }
+
+    return 0;
+}
index 2b4353e56d45488a83de389c264609e748791fae..53e56f684a7d35f293140e55948e38dfb4570270 100644 (file)
@@ -153,4 +153,8 @@ int virSecurityManagerRestoreImageLabel(virSecurityManagerPtr mgr,
                                         virDomainDefPtr vm,
                                         virStorageSourcePtr src);
 
+int virSecurityManagerDomainSetDirLabel(virSecurityManagerPtr mgr,
+                                        virDomainDefPtr vm,
+                                        const char *path);
+
 #endif /* VIR_SECURITY_MANAGER_H__ */