File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / strongswan / src / sw-collector / sw_collector_db.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Jun 3 09:46:44 2020 UTC (4 years, 1 month ago) by misho
Branches: strongswan, MAIN
CVS tags: v5_9_2p0, v5_8_4p7, HEAD
Strongswan

    1: /*
    2:  * Copyright (C) 2017 Andreas Steffen
    3:  * HSR Hochschule fuer Technik Rapperswil
    4:  *
    5:  * This program is free software; you can redistribute it and/or modify it
    6:  * under the terms of the GNU General Public License as published by the
    7:  * Free Software Foundation; either version 2 of the License, or (at your
    8:  * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
    9:  *
   10:  * This program is distributed in the hope that it will be useful, but
   11:  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
   12:  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
   13:  * for more details.
   14:  */
   15: 
   16: /**
   17:  * @defgroup sw_collector_db_t sw_collector_db
   18:  * @{ @ingroup sw_collector
   19:  */
   20: 
   21: #ifndef SW_COLLECTOR_DB_H_
   22: #define SW_COLLECTOR_DB_H_
   23: 
   24: #include <library.h>
   25: 
   26: typedef struct sw_collector_db_t sw_collector_db_t;
   27: typedef enum sw_collector_db_query_t sw_collector_db_query_t;
   28: 
   29: /**
   30:  * Type of software identifier queries
   31:  */
   32: enum sw_collector_db_query_t {
   33: 	SW_QUERY_ALL,
   34: 	SW_QUERY_INSTALLED,
   35: 	SW_QUERY_REMOVED
   36: };
   37: 
   38: /**
   39:  * Software collector database object
   40:  */
   41: struct sw_collector_db_t {
   42: 
   43: 	/**
   44: 	 * bAdd event to database
   45: 	 *
   46: 	 * @param timestamp		Timestamp in 20 octet RFC 3339 format
   47: 	 * @return				Primary key pointing to event ID or 0 if failed
   48: 	 */
   49: 	uint32_t (*add_event)(sw_collector_db_t *this, char *timestamp);
   50: 
   51: 	/**
   52: 	 * Get last event, zero EID if none exists
   53: 	 *
   54: 	 * @param eid			Primary key pointing to last event
   55: 	 * @param epoch			Epoch
   56: 	 * @param last_time		Timestamp in 20 octet RFC 3339 format of last event
   57: 	 * @return
   58: 	 */
   59: 	bool (*get_last_event)(sw_collector_db_t *this, uint32_t *eid,
   60: 							   uint32_t *epoch, char **last_time);
   61: 
   62: 	/**
   63: 	 * Add software identifier event to database
   64: 	 *
   65: 	 * @param eid			Foreign key pointing to an event ID
   66: 	 * @param sw_id			Foreign key pointing to a software identifier
   67: 	 * @param action		1 for CREATION, 2 for deletion
   68: 	 * @return				TRUE if successful
   69: 	 */
   70: 	bool (*add_sw_event)(sw_collector_db_t *this, uint32_t eid, uint32_t sw_id,
   71: 						 uint8_t action);
   72: 
   73: 	/**
   74: 	 * Set software_identifier, checking if the identifier already exists
   75: 	 *
   76: 	 * @param name			Software identifier
   77: 	 * @param package		Software package
   78: 	 * @param version		Version of software package
   79: 	 * @param source		Source ID of the software collector
   80: 	 * @param installed		Installation status to be set, TRUE if installed
   81: 	 * @return				Primary key pointing to SW ID or 0 if failed
   82: 	 */
   83: 	uint32_t (*set_sw_id)(sw_collector_db_t *this, char *name, char *package,
   84: 						  char *version, uint8_t source, bool installed);
   85: 
   86: 	/**
   87: 	 * Get software_identifier record
   88: 	 *
   89: 	 * @param name			Software identifier
   90: 	 * @param package		Software package
   91: 	 * @param version		Version of software package
   92: 	 * @param source		Source ID of the software collector
   93: 	 * @param installed		Installation status
   94: 	 * @return				Primary key pointing to SW ID or 0 if failed
   95: 	 */
   96: 	uint32_t (*get_sw_id)(sw_collector_db_t *this, char *name, char **package,
   97: 						  char **version, uint8_t *source, bool *installed);
   98: 
   99: 	/**
  100: 	 * Get number of installed or removed software identifiers
  101: 	 *
  102: 	 * @param type			Query type (ALL, INSTALLED, REMOVED)
  103: 	 * @return				Count
  104: 	 */
  105: 	uint32_t (*get_sw_id_count)(sw_collector_db_t *this,
  106: 								sw_collector_db_query_t type);
  107: 
  108: 	/**
  109: 	 * Update the software identifier version
  110: 	 *
  111: 	 * @param sw_id			Primary key of software identifier
  112: 	 * @param name			Software identifier
  113: 	 * @param version		Package version
  114: 	 * @param installed		Installation status
  115: 	 * @return				TRUE if update successful
  116: 	 */
  117: 	bool (*update_sw_id)(sw_collector_db_t *this, uint32_t sw_id, char *name,
  118: 						 char *version, bool installed);
  119: 
  120: 	/**
  121: 	 * Update the package name
  122: 	 *
  123: 	 * @param package_filter	Package name[s] to be changed
  124: 	 * @param package			New package name
  125: 	 * @return					TRUE if update successful
  126: 	 */
  127: 	int (*update_package)(sw_collector_db_t *this, char *package_filter,
  128: 												   char *package);
  129: 
  130: 	/**
  131: 	 * Enumerate over all collected [installed] software identities
  132: 	 *
  133: 	 * @param type			Query type (ALL, INSTALLED, REMOVED)
  134: 	 * @param package		If not NULL enumerate over all package versions
  135: 	 * @return				Enumerator
  136: 	 */
  137: 	enumerator_t* (*create_sw_enumerator)(sw_collector_db_t *this,
  138: 										  sw_collector_db_query_t type,
  139: 										  char *package);
  140: 
  141: 	/**
  142: 	 * Destroy sw_collector_db_t object
  143: 	 */
  144: 	void (*destroy)(sw_collector_db_t *this);
  145: 
  146: };
  147: 
  148: /**
  149:  * Create an sw_collector_db_t instance
  150:  *
  151:  * @param uri				database URI
  152:  */
  153: sw_collector_db_t* sw_collector_db_create(char *uri);
  154: 
  155: #endif /** SW_COLLECTOR_DB_H_ @}*/

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>