28 #include "../base/nvti.h"
32 #include <sys/types.h>
37 #ifdef REDIS_SOCKET_PATH
38 #define KB_PATH_DEFAULT REDIS_SOCKET_PATH
40 #define KB_PATH_DEFAULT "/run/redis/redis.sock"
137 char *(*kb_get_str) (
kb_t,
const char *);
153 GSList *(*kb_get_nvt_oids) (
kb_t);
161 char *(*kb_pop_str) (
kb_t,
const char *);
166 struct kb_item *(*kb_get_all) (
kb_t,
const char *);
171 struct kb_item *(*kb_get_pattern) (
kb_t,
const char *);
278 kb_find (
const char *kb_path,
const char *key)
600 static inline GSList *
static nvti_t * kb_nvt_get_all(kb_t kb, const char *oid)
Get a full NVT.
Definition: kb.h:586
static int kb_item_set_int(kb_t kb, const char *name, int val)
Set (replace) a new entry under a given name.
Definition: kb.h:536
static int kb_del_items(kb_t kb, const char *name)
Delete all entries under a given name.
Definition: kb.h:617
static int kb_item_add_str_unique(kb_t kb, const char *name, const char *str, size_t len, int pos)
Insert (append) a new unique entry under a given name.
Definition: kb.h:466
static int kb_nvt_add(kb_t kb, const nvti_t *nvt, const char *filename)
Insert a new nvt.
Definition: kb.h:553
static char * kb_item_get_str(kb_t kb, const char *name)
Get a single KB string item.
Definition: kb.h:326
static int kb_item_add_str(kb_t kb, const char *name, const char *str, size_t len)
Insert (append) a new entry under a given name.
Definition: kb.h:446
static struct kb_item * kb_item_get_all(kb_t kb, const char *name)
Get all items stored under a given name.
Definition: kb.h:359
kb_nvt_pos
Possible positions of nvt values in cache list.
Definition: kb.h:59
@ NVT_FAMILY_POS
Definition: kb.h:73
@ NVT_CATEGORY_POS
Definition: kb.h:71
@ NVT_TIMESTAMP_POS
Definition: kb.h:75
@ NVT_NAME_POS
Definition: kb.h:74
@ NVT_TAGS_POS
Definition: kb.h:67
@ NVT_BIDS_POS
Definition: kb.h:69
@ NVT_TIMEOUT_POS
Definition: kb.h:72
@ NVT_EXCLUDED_KEYS_POS
Definition: kb.h:63
@ NVT_REQUIRED_PORTS_POS
Definition: kb.h:65
@ NVT_REQUIRED_UDP_PORTS_POS
Definition: kb.h:64
@ NVT_FILENAME_POS
Definition: kb.h:60
@ NVT_OID_POS
Definition: kb.h:76
@ NVT_DEPENDENCIES_POS
Definition: kb.h:66
@ NVT_CVES_POS
Definition: kb.h:68
@ NVT_REQUIRED_KEYS_POS
Definition: kb.h:61
@ NVT_XREFS_POS
Definition: kb.h:70
@ NVT_MANDATORY_KEYS_POS
Definition: kb.h:62
static int kb_item_push_str(kb_t kb, const char *name, const char *value)
Push a new value under a given key.
Definition: kb.h:393
static int kb_new(kb_t *kb, const char *kb_path)
Initialize a new Knowledge Base object.
Definition: kb.h:245
static char * kb_nvt_get(kb_t kb, const char *oid, enum kb_nvt_pos position)
Get field of a NVT.
Definition: kb.h:570
static size_t kb_item_count(kb_t kb, const char *pattern)
Count all items stored under a given pattern.
Definition: kb.h:428
static int kb_delete(kb_t kb)
Delete all entries and release ownership on the namespace.
Definition: kb.h:292
static int kb_item_get_int(kb_t kb, const char *name)
Get a single KB integer item.
Definition: kb.h:342
struct kb * kb_t
type abstraction to hide KB internals.
Definition: kb.h:113
static char * kb_item_pop_str(kb_t kb, const char *name)
Pop a single KB string item.
Definition: kb.h:410
static kb_t kb_find(const char *kb_path, const char *key)
Find an existing Knowledge Base object with key.
Definition: kb.h:278
static int kb_item_set_str(kb_t kb, const char *name, const char *str, size_t len)
Set (replace) a new entry under a given name.
Definition: kb.h:485
void kb_item_free(struct kb_item *)
Release a KB item (or a list).
Definition: kb.c:584
static int kb_save(kb_t kb)
Save all the KB's content.
Definition: kb.h:632
static int kb_item_add_int(kb_t kb, const char *name, int val)
Insert (append) a new entry under a given name.
Definition: kb.h:502
static int kb_lnk_reset(kb_t kb)
Reset connection to the KB. This is called after each fork() to make sure connections aren't shared b...
Definition: kb.h:652
const struct kb_operations * KBDefaultOperations
Default KB operations. No selection mechanism is provided yet since there's only one implementation (...
Definition: kb.c:1666
static GSList * kb_nvt_get_oids(kb_t kb)
Get list of NVT OIDs.
Definition: kb.h:601
kb_item_type
Possible type of a kb_item.
Definition: kb.h:47
@ KB_TYPE_INT
Definition: kb.h:49
@ KB_TYPE_CNT
Definition: kb.h:52
@ KB_TYPE_UNSPEC
Definition: kb.h:48
@ KB_TYPE_STR
Definition: kb.h:50
static struct kb_item * kb_item_get_pattern(kb_t kb, const char *pattern)
Get all items stored under a given pattern.
Definition: kb.h:376
static struct kb_item * kb_item_get_single(kb_t kb, const char *name, enum kb_item_type type)
Get a single KB element.
Definition: kb.h:310
static int kb_flush(kb_t kb, const char *except)
Flush all the KB's content. Delete all namespaces.
Definition: kb.h:672
static int kb_item_add_int_unique(kb_t kb, const char *name, int val)
Insert (append) a new unique entry under a given name.
Definition: kb.h:519
static kb_t kb_direct_conn(const char *kb_path, const int kb_index)
Connect to a Knowledge Base object which has the given kb_index.
Definition: kb.h:263
static int kb_get_kb_index(kb_t kb)
Return the kb index.
Definition: kb.h:691
Knowledge base item (defined by name, type (int/char*) and value). Implemented as a singly linked lis...
Definition: kb.h:84
int v_int
Definition: kb.h:90
enum kb_item_type type
Definition: kb.h:85
char * v_str
Definition: kb.h:89
struct kb_item * next
Definition: kb.h:94
char name[0]
Definition: kb.h:97
size_t len
Definition: kb.h:93
size_t namelen
Definition: kb.h:96
KB interface. Functions provided by an implementation. All functions have to be provided,...
Definition: kb.h:122
GSList *(* kb_get_nvt_oids)(kb_t)
Definition: kb.h:153
struct kb_item *(* kb_get_single)(kb_t, const char *, enum kb_item_type)
Definition: kb.h:133
struct kb_item *(* kb_get_pattern)(kb_t, const char *)
Definition: kb.h:171
int(* kb_set_int)(kb_t, const char *, int)
Definition: kb.h:206
int(* kb_flush)(kb_t, const char *)
Definition: kb.h:221
int(* kb_get_int)(kb_t, const char *)
Definition: kb.h:141
int(* kb_add_str)(kb_t, const char *, const char *, size_t)
Definition: kb.h:181
struct kb_item *(* kb_get_all)(kb_t, const char *)
Definition: kb.h:166
int(* kb_add_nvt)(kb_t, const nvti_t *, const char *)
Definition: kb.h:211
int(* kb_lnk_reset)(kb_t)
Definition: kb.h:220
char *(* kb_get_nvt)(kb_t, const char *, enum kb_nvt_pos)
Definition: kb.h:145
int(* kb_new)(kb_t *, const char *)
Definition: kb.h:124
int(* kb_push_str)(kb_t, const char *, const char *)
Definition: kb.h:157
char *(* kb_pop_str)(kb_t, const char *)
Definition: kb.h:161
nvti_t *(* kb_get_nvt_all)(kb_t, const char *)
Definition: kb.h:149
int(* kb_delete)(kb_t)
Definition: kb.h:125
size_t(* kb_count)(kb_t, const char *)
Definition: kb.h:176
int(* kb_add_int_unique)(kb_t, const char *, int)
Definition: kb.h:201
int(* kb_add_str_unique)(kb_t, const char *, const char *, size_t, int)
Definition: kb.h:186
int(* kb_get_kb_index)(kb_t)
Definition: kb.h:222
int(* kb_add_int)(kb_t, const char *, int)
Definition: kb.h:196
kb_t(* kb_direct_conn)(const char *, const int)
Definition: kb.h:127
char *(* kb_get_str)(kb_t, const char *)
Definition: kb.h:137
int(* kb_save)(kb_t)
Definition: kb.h:219
kb_t(* kb_find)(const char *, const char *)
Definition: kb.h:126
int(* kb_set_str)(kb_t, const char *, const char *, size_t)
Definition: kb.h:191
int(* kb_del_items)(kb_t, const char *)
Definition: kb.h:216
Top-level KB. This is to be inherited by KB implementations.
Definition: kb.h:106
const struct kb_operations * kb_ops
Definition: kb.h:107
The structure of a information record that corresponds to a NVT.
Definition: nvti.c:408