[libvirt] [java] [PATCH 6/6] Implement Connect.getSecurityModel and add SecurityModel class

Claudio Bley claudio.bley at gmail.com
Wed Jan 28 20:45:47 UTC 2015


---
 src/main/java/org/libvirt/Connect.java       | 15 +++++++++++
 src/main/java/org/libvirt/SecurityModel.java | 37 ++++++++++++++++++++++++++++
 src/main/java/org/libvirt/jna/Libvirt.java   | 16 +++++++++++-
 3 files changed, 67 insertions(+), 1 deletion(-)
 create mode 100644 src/main/java/org/libvirt/SecurityModel.java

diff --git a/src/main/java/org/libvirt/Connect.java b/src/main/java/org/libvirt/Connect.java
index 1d37c22..04de4fd 100644
--- a/src/main/java/org/libvirt/Connect.java
+++ b/src/main/java/org/libvirt/Connect.java
@@ -1062,6 +1062,21 @@ public class Connect {
     }
 
     /**
+     * Returns the security model of the connected node.
+     */
+    public SecurityModel getSecurityModel() throws LibvirtException {
+        Libvirt.SecurityModel secmodel = new Libvirt.SecurityModel();
+
+        processError(libvirt.virNodeGetSecurityModel(this.VCP, secmodel));
+
+        if (secmodel.model[0] == 0)
+            return null;
+        else
+            return new SecurityModel(secmodel);
+
+    }
+
+    /**
      * Returns the XML description of the sysinfo details for the host
      * on which the hypervisor is running.
      * <p>
diff --git a/src/main/java/org/libvirt/SecurityModel.java b/src/main/java/org/libvirt/SecurityModel.java
new file mode 100644
index 0000000..b41835f
--- /dev/null
+++ b/src/main/java/org/libvirt/SecurityModel.java
@@ -0,0 +1,37 @@
+package org.libvirt;
+
+import org.libvirt.jna.Libvirt;
+import com.sun.jna.Native;
+
+/**
+ * A security model used for mandatory access control.
+ *
+ * @see Connect#getSecurityModel
+ */
+public final class SecurityModel {
+    private String model;
+    private String doi;
+
+    SecurityModel(Libvirt.SecurityModel secmodel) {
+        model = Native.toString(secmodel.model, "UTF-8");
+        doi = Native.toString(secmodel.doi, "UTF-8");
+    }
+
+    /**
+     * Returns the model of this SecurityModel.
+     *
+     * @return the model string
+     */
+    public String getModel() {
+        return model;
+    }
+
+    /**
+     * Returns the DOI, domain of interpretation of this security model.
+     *
+     * @return the DOI
+     */
+    public String getDomainOfInterpretation() {
+        return doi;
+    }
+}
diff --git a/src/main/java/org/libvirt/jna/Libvirt.java b/src/main/java/org/libvirt/jna/Libvirt.java
index 2958233..024e268 100644
--- a/src/main/java/org/libvirt/jna/Libvirt.java
+++ b/src/main/java/org/libvirt/jna/Libvirt.java
@@ -40,7 +40,6 @@ import java.util.List;
  * LIBVIRT_0.6.1
  * virFreeError
  * virSaveLastError
- * virNodeGetSecurityModel;
  *
  * LIBVIRT_0.6.4
  * virInterfaceRef
@@ -172,6 +171,20 @@ public interface Libvirt extends Library {
         }
     };
 
+    static class SecurityModel extends Structure {
+        private static final int VIR_SECURITY_MODEL_BUFLEN = 256 + 1;
+        private static final int VIR_SECURITY_DOI_BUFLEN = 256 + 1;
+
+        private static final List<String> fields = Arrays.asList("model", "doi");
+
+        public byte model[] = new byte[VIR_SECURITY_MODEL_BUFLEN];
+        public byte doi[] = new byte[VIR_SECURITY_DOI_BUFLEN];
+
+        @Override
+        protected List<String> getFieldOrder() {
+            return fields;
+        }
+    }
 
     /**
      * @deprecated as of libvirt 0.6.0, all errors reported in the
@@ -362,6 +375,7 @@ public interface Libvirt extends Library {
     int virNodeGetCellsFreeMemory(ConnectionPointer virConnectPtr, LongByReference freeMems, int startCell,
             int maxCells);
     long virNodeGetFreeMemory(ConnectionPointer virConnectPtr);
+    int virNodeGetSecurityModel(ConnectionPointer virConnectPtr, SecurityModel secmodel);
 
     // Node/Device functions
     int virNodeNumOfDevices(ConnectionPointer virConnectPtr, String capabilityName, int flags);
-- 
2.2.2




More information about the libvir-list mailing list