mirror of
https://github.com/vel21ripn/nDPI.git
synced 2026-04-28 06:59:40 +00:00
84 lines
1.9 KiB
ReStructuredText
84 lines
1.9 KiB
ReStructuredText
Library Initialization
|
|
=======================
|
|
|
|
|
|
# Library Initialization
|
|
|
|
A simple, common example
|
|
|
|
.. code:: c
|
|
|
|
struct ndpi_detection_module_struct *ndpi_struct;
|
|
ndpi_cfg_error rc;
|
|
int ret;
|
|
|
|
ndpi_struct = ndpi_init_detection_module(NULL);
|
|
if(!ndpi_struct) {
|
|
ERROR;
|
|
}
|
|
|
|
/* Configuration */
|
|
|
|
rc = ndpi_set_config(ndpi_struct, "tls", "certificate_expiration_threshold", "10");
|
|
if(rc != NDPI_CFG_OK) {
|
|
ERROR;
|
|
}
|
|
|
|
/* Finalization */
|
|
ret = ndpi_finalize_initialization(ndpi_struct);
|
|
if(ret != 0) {
|
|
ERROR;
|
|
}
|
|
|
|
|
|
/* Initialization done, now you can feed packets to the library */
|
|
|
|
|
|
|
|
/* Cleanup */
|
|
|
|
ndpi_exit_detection_module(ndpi_struct);
|
|
|
|
|
|
|
|
A more complex example, with global context and a shared Oookla LRU cache (all the others caches are local)
|
|
|
|
.. code:: c
|
|
|
|
struct ndpi_global_context *g_ctx;
|
|
struct ndpi_detection_module_struct *ndpi_structs[num_local_contexts];
|
|
ndpi_cfg_error rc;
|
|
int i, ret;
|
|
|
|
g_ctx = ndpi_global_init();
|
|
if(!g_ctx) {
|
|
ERROR;
|
|
}
|
|
|
|
for(i = 0; i < num_local_contexts; i++) {
|
|
ndpi_structs[i] = ndpi_init_detection_module(g_ctx);
|
|
if(!ndpi_struct[i]) {
|
|
ERROR;
|
|
}
|
|
|
|
rc = ndpi_set_config(ndpi_structs[i], NULL, "lru.ookla.scope", "1");
|
|
if(rc != NDPI_CFG_OK) {
|
|
ERROR;
|
|
}
|
|
|
|
ret = ndpi_finalize_initialization(ndpi_structs[i]);
|
|
if(ret != 0) {
|
|
ERROR;
|
|
}
|
|
}
|
|
|
|
/* Initialization done */
|
|
|
|
/* Cleanup */
|
|
|
|
for(i = 0; i < num_local_contexts; i++) {
|
|
ndpi_exit_detection_module(ndpi_structs[i]);
|
|
}
|
|
|
|
ndpi_global_deinit(g_ctx);
|
|
|