improved control when an attribute request is sent
[strongswan.git] / src / libimcv / plugins / imv_os / imv_os_state.h
index bde5c23..d3e3191 100644 (file)
 #include <library.h>
 
 typedef struct imv_os_state_t imv_os_state_t;
+typedef enum os_settings_t os_settings_t;
+
+enum os_settings_t {
+       OS_SETTINGS_FWD_ENABLED =         1,
+       OS_SETTINGS_DEFAULT_PWD_ENABLED = 2,
+       OS_SETTINGS_NON_MARKET_APPS =     4
+};
 
 /**
  * Internal state of an imv_os_t connection instance
@@ -41,9 +48,9 @@ struct imv_os_state_t {
        /**
         * Set OS Product Information
         *
-        * @param type          OS type (enumerated)
-        * @param name          OS name (string)
-        * @param version       OS version
+        * @param type                  OS type (enumerated)
+        * @param name                  OS name (string)
+        * @param version               OS version
         */
        void (*set_info)(imv_os_state_t *this, os_type_t os_type,
                                         chunk_t name, chunk_t version);
@@ -51,29 +58,93 @@ struct imv_os_state_t {
        /**
         * Get OS Product Information
         *
-        * @param type          OS type (enumerated)
-        * @param name          OS name (string)
-        * @param version       OS version
-        * @result                      OS name & version as a concatenated string 
+        * @param type                  OS type (enumerated)
+        * @param name                  OS name (string)
+        * @param version               OS version
+        * @return                              OS name & version as a concatenated string 
         */
        char* (*get_info)(imv_os_state_t *this, os_type_t *os_type,
                                          chunk_t *name, chunk_t *version);
 
        /**
+        * Set [or with multiple attributes increment] package counters
+        *
+        * @param count                         Number of processed packages
+        * @param count_update          Number of not updated packages
+        * @param count_blacklist       Number of blacklisted packages
+        * @param count_ok                      Number of whitelisted packages
+        */
+       void (*set_count)(imv_os_state_t *this, int count, int count_update,
+                                         int count_blacklist, int count_ok);
+
+       /**
+        * Set [or with multiple attributes increment] package counters
+        *
+        * @param count                         Number of processed packages
+        * @param count_update          Number of not updated packages
+        * @param count_blacklist       Number of blacklisted packages
+        * @param count_ok                      Number of whitelisted packages
+        */
+       void (*get_count)(imv_os_state_t *this, int *count, int *count_update,
+                                         int *count_blacklist, int *count_ok);
+
+       /**
+        * Set/reset attribute request status
+        *
+        * @param set                   TRUE to set, FALSE to clear
+        */
+       void (*set_attribute_request)(imv_os_state_t *this, bool set);
+
+       /**
+        * Get attribute request status
+        *
+        * @return                              TRUE if set, FALSE if unset
+        */
+       bool (*get_attribute_request)(imv_os_state_t *this);
+
+       /**
         * Set/reset OS Installed Packages request status
         *
-        * @param set           TRUE to set, FALSE to clear
+        * @param set                   TRUE to set, FALSE to clear
         */
        void (*set_package_request)(imv_os_state_t *this, bool set);
 
        /**
         * Get OS Installed Packages request status
         *
-        * @result                      TRUE if set, FALSE if unset
+        * @return                              TRUE if set, FALSE if unset
         */
        bool (*get_package_request)(imv_os_state_t *this);
 
        /**
+        * Set device ID
+        *
+        * @param device_id             Device ID primary database key
+        */
+       void (*set_device_id)(imv_os_state_t *this, int id);
+
+       /**
+        * Get device ID
+        *
+        * @return                              Device ID primary database key
+        */
+       int (*get_device_id)(imv_os_state_t *this);
+
+       /**
+        * Set OS settings
+        *
+        * @param settings              OS settings
+        */
+       void (*set_os_settings)(imv_os_state_t *this, u_int settings);
+
+       /**
+        * Get OS settings
+        *
+        * @return                              OS settings
+        */
+       u_int (*get_os_settings)(imv_os_state_t *this);
+
+       /**
         * Increase/Decrease the ITA Angel count
         *
         * @param start                 TRUE increases and FALSE decreases count by one
@@ -83,10 +154,19 @@ struct imv_os_state_t {
        /**
         * Get the ITA Angel count
         *
-        * @result                      ITA Angel count
+        * @return                              ITA Angel count
         */
        int (*get_angel_count)(imv_os_state_t *this);
 
+       /**
+        * Store a bad package that has to be updated or removed
+        *
+        * @param package               Name of software package
+        * @param package_state Security state of software package
+        */
+       void (*add_bad_package)(imv_os_state_t *this, char *package,
+                                                       os_package_state_t package_state);
+
 };
 
 /**