Lines Matching refs:p

260 load_function(plugin_t *p, char *name, auditd_rc_t (**func)())  in load_function()  argument
262 *func = (auditd_rc_t (*)())dlsym(p->plg_dlptr, name); in load_function()
281 load_plugin(plugin_t *p) in load_plugin() argument
290 if ((fd = open(p->plg_path, O_NONBLOCK | O_RDONLY)) != -1) { in load_plugin()
300 p->plg_path, strerror(errno)); in load_plugin()
314 p->plg_path); in load_plugin()
327 p->plg_path); in load_plugin()
337 p->plg_path); in load_plugin()
345 p->plg_dlptr = dlopen(p->plg_path, RTLD_LAZY); in load_plugin()
347 if (p->plg_dlptr == NULL) { in load_plugin()
353 p->plg_path, errmsg != NULL ? errmsg : in load_plugin()
359 if (load_function(p, "auditd_plugin", &(p->plg_fplugin))) in load_plugin()
362 if (load_function(p, "auditd_plugin_open", &(p->plg_fplugin_open))) in load_plugin()
365 if (load_function(p, "auditd_plugin_close", &(p->plg_fplugin_close))) in load_plugin()
379 unload_plugin(plugin_t *p) in unload_plugin() argument
385 DPRINT((dbfp, "unload_plugin: removing %s\n", p->plg_path)); in unload_plugin()
387 _kva_free(p->plg_kvlist); /* _kva_free accepts NULL */ in unload_plugin()
388 qpool_close(p); /* qpool_close accepts NULL pool, queue */ in unload_plugin()
389 DPRINT((dbfp, "unload_plugin: %s structure removed\n", p->plg_path)); in unload_plugin()
391 (void) dlclose(p->plg_dlptr); in unload_plugin()
393 DPRINT((dbfp, "unload_plugin: %s dlclosed\n", p->plg_path)); in unload_plugin()
394 free(p->plg_path); in unload_plugin()
396 (void) pthread_mutex_destroy(&(p->plg_mutex)); in unload_plugin()
397 (void) pthread_cond_destroy(&(p->plg_cv)); in unload_plugin()
402 if (q == p) { in unload_plugin()
403 *r = p->plg_next; in unload_plugin()
404 free(p); in unload_plugin()
420 open_return(plugin_t *p, char *attrval) in open_return() argument
437 plugin_t *p; in auditd_thread_init() local
464 p = plugin_head; in auditd_thread_init()
465 while (p != NULL) { in auditd_thread_init()
466 if (p->plg_removed) { in auditd_thread_init()
467 DPRINT((dbfp, "start removing %s\n", p->plg_path)); in auditd_thread_init()
469 (void) pthread_cond_signal(&(p->plg_cv)); in auditd_thread_init()
470 } else if (!p->plg_initialized) { in auditd_thread_init()
472 p->plg_path)); in auditd_thread_init()
473 if (load_plugin(p)) { in auditd_thread_init()
476 p->plg_path); in auditd_thread_init()
477 p = unload_plugin(p); in auditd_thread_init()
482 if ((rc = p->plg_fplugin_open( in auditd_thread_init()
483 p->plg_kvlist, in auditd_thread_init()
485 report_error(rc, error_string, p->plg_path); in auditd_thread_init()
487 p = unload_plugin(p); in auditd_thread_init()
490 open_return(p, open_params); in auditd_thread_init()
491 p->plg_reopen = 0; in auditd_thread_init()
493 threshold = ((p->plg_qmax * THRESHOLD_PCT) + 99) / 100; in auditd_thread_init()
494 p->plg_qmin = INPUT_MIN; in auditd_thread_init()
498 p->plg_path, p->plg_qmax)); in auditd_thread_init()
500 qpool_init(p, threshold); in auditd_thread_init()
501 audit_queue_init(&(p->plg_queue)); in auditd_thread_init()
502 p->plg_initialized = 1; in auditd_thread_init()
504 (void) pthread_mutex_init(&(p->plg_mutex), NULL); in auditd_thread_init()
505 (void) pthread_cond_init(&(p->plg_cv), NULL); in auditd_thread_init()
506 p->plg_waiting = 0; in auditd_thread_init()
508 if (pthread_create(&(p->plg_tid), NULL, in auditd_thread_init()
509 (void *(*)(void *))process, p)) { in auditd_thread_init()
512 p->plg_path); in auditd_thread_init()
513 p = unload_plugin(p); in auditd_thread_init()
516 } else if (p->plg_reopen) { in auditd_thread_init()
517 DPRINT((dbfp, "reopen %s\n", p->plg_path)); in auditd_thread_init()
519 if ((rc = p->plg_fplugin_open(p->plg_kvlist, in auditd_thread_init()
521 report_error(rc, error_string, p->plg_path); in auditd_thread_init()
523 p = unload_plugin(p); in auditd_thread_init()
526 open_return(p, open_params); in auditd_thread_init()
527 p->plg_reopen = 0; in auditd_thread_init()
530 p->plg_path, p->plg_qmax)); in auditd_thread_init()
533 p->plg_q_threshold = ((p->plg_qmax * THRESHOLD_PCT) + 99) / 100; in auditd_thread_init()
535 p = p->plg_next; in auditd_thread_init()
576 qpool_init(plugin_t *p, int threshold) in qpool_init() argument
581 audit_queue_init(&(p->plg_pool)); in qpool_init()
584 p->plg_tid, p->plg_qmax, p->plg_qmin, threshold)); in qpool_init()
586 if (p->plg_qmax > largest_queue) in qpool_init()
587 largest_queue = p->plg_qmax; in qpool_init()
589 p->plg_q_threshold = threshold; in qpool_init()
591 for (i = 0; i < p->plg_qmin; i++) { in qpool_init()
597 audit_enqueue(&p->plg_pool, node); in qpool_init()
638 qpool_close(plugin_t *p) { in qpool_close() argument
642 if (!p->plg_initialized) in qpool_close()
645 while (audit_dequeue(&(p->plg_pool), (void *)&q_node) == 0) { in qpool_close()
648 audit_queue_destroy(&(p->plg_pool)); in qpool_close()
650 while (audit_dequeue(&(p->plg_queue), (void *)&q_node) == 0) { in qpool_close()
656 audit_queue_destroy(&(p->plg_queue)); in qpool_close()
663 qpool_withdraw(plugin_t *p) in qpool_withdraw() argument
669 rc = audit_dequeue(&(p->plg_pool), (void *)&node); in qpool_withdraw()
757 qpool_return(plugin_t *p, audit_q_t *node) in qpool_return() argument
765 qpool_size = audit_queue_size(&(p->plg_pool)); in qpool_return()
766 q_size = audit_queue_size(&(p->plg_queue)); in qpool_return()
768 if (qpool_size + q_size > p->plg_qmax) in qpool_return()
771 audit_enqueue(&(p->plg_pool), node); in qpool_return()
776 p->plg_tid, sequence, q_size, qpool_size, in qpool_return()
777 q_size + qpool_size, p->plg_q_threshold)); in qpool_return()
810 dump_state(char *src, plugin_t *p, uint64_t count, char *msg) in dump_state() argument
817 (void) pthread_getschedparam(p->plg_tid, &policy, &param); in dump_state()
828 src, p->plg_tid, count, msg, in dump_state()
830 audit_queue_size(&(p->plg_queue)), in dump_state()
831 audit_queue_size(&(p->plg_pool)), in dump_state()
832 p->plg_waiting, p->plg_tossed, in dump_state()
833 p->plg_queued, p->plg_output); in dump_state()
846 plugin_t *p; in policy_is_block() local
849 p = plugin_head; in policy_is_block()
851 while (p != NULL) { in policy_is_block()
852 if (p->plg_cnt == 0) { in policy_is_block()
858 p = p->plg_next; in policy_is_block()
872 plugin_t *p; in policy_update() local
876 p = plugin_head; in policy_update()
877 while (p != NULL) { in policy_update()
878 p->plg_cnt = (newpolicy & AUDIT_CNT) ? 1 : 0; in policy_update()
879 (void) pthread_cond_signal(&(p->plg_cv)); in policy_update()
881 DPRINT((dbfp, "policy changed for thread %d\n", p->plg_tid)); in policy_update()
882 p = p->plg_next; in policy_update()
902 plugin_t *p; in queue_buffer() local
1000 p = plugin_head; in queue_buffer()
1001 while (p != NULL) { in queue_buffer()
1002 if (!p->plg_removed) { in queue_buffer()
1011 q_copy = qpool_withdraw(p); in queue_buffer()
1012 q_copy->aqq_sequence = p->plg_sequence++; in queue_buffer()
1015 p->plg_save_q_copy = q_copy; /* enqueue below */ in queue_buffer()
1018 p->plg_save_q_copy = NULL; in queue_buffer()
1019 p = p->plg_next; in queue_buffer()
1025 p = plugin_head; in queue_buffer()
1026 while ((p != NULL) && (p->plg_save_q_copy != NULL)) { in queue_buffer()
1027 audit_enqueue(&(p->plg_queue), p->plg_save_q_copy); in queue_buffer()
1028 (void) pthread_cond_signal(&(p->plg_cv)); in queue_buffer()
1029 p->plg_queued++; in queue_buffer()
1030 p = p->plg_next; in queue_buffer()
1066 plugin_t *p; in adjust_priority() local
1072 p = plugin_head; in adjust_priority()
1073 while (p != NULL) { in adjust_priority()
1074 queue_size = audit_queue_size(&(p->plg_queue)); in adjust_priority()
1075 if (queue_size > p->plg_q_threshold) { in adjust_priority()
1076 if (p->plg_priority != HIGH_PRIORITY) { in adjust_priority()
1077 p->plg_priority = in adjust_priority()
1080 (void) pthread_setschedparam(p->plg_tid, in adjust_priority()
1083 if (queue_size > p->plg_qmax - p->plg_qmin) { in adjust_priority()
1088 p = p->plg_next; in adjust_priority()
1120 plugin_t *p; in input() local
1169 p = plugin_head; in input()
1170 while (p != NULL) { in input()
1171 (void) pthread_cond_signal(&(p->plg_cv)); in input()
1172 p = p->plg_next; in input()
1182 process(plugin_t *p) in process() argument
1195 DPRINT((dbfp, "%s is thread %d\n", p->plg_path, p->plg_tid)); in process()
1196 p->plg_priority = param.sched_priority = BASE_PRIORITY; in process()
1197 (void) pthread_setschedparam(p->plg_tid, SCHED_OTHER, &param); in process()
1202 while (audit_dequeue(&(p->plg_queue), (void *)&q_node) != 0) { in process()
1203 DUMP("process", p, p->plg_last_seq_out, "blocked"); in process()
1206 (void) pthread_mutex_lock(&(p->plg_mutex)); in process()
1207 p->plg_waiting++; in process()
1208 (void) pthread_cond_wait(&(p->plg_cv), in process()
1209 &(p->plg_mutex)); in process()
1210 p->plg_waiting--; in process()
1211 (void) pthread_mutex_unlock(&(p->plg_mutex)); in process()
1213 if (p->plg_removed) in process()
1216 DUMP("process", p, p->plg_last_seq_out, "unblocked"); in process()
1219 if (q_node->aqq_sequence != p->plg_last_seq_out + 1) in process()
1222 p->plg_tid, q_node->aqq_sequence, in process()
1223 p->plg_last_seq_out); in process()
1229 plugrc = p->plg_fplugin(b_node->abq_buffer, in process()
1232 if (p->plg_removed) in process()
1235 p->plg_last_seq_out = q_node->aqq_sequence; in process()
1240 report_error(plugrc, error_string, p->plg_path); in process()
1248 p->plg_tid, p->plg_cnt)); in process()
1250 if (p->plg_cnt) /* if cnt is on, lose the buffer */ in process()
1253 delay.tv_sec = p->plg_retry_time; in process()
1254 (void) pthread_mutex_lock(&(p->plg_mutex)); in process()
1255 p->plg_waiting++; in process()
1256 (void) pthread_cond_reltimedwait_np(&(p->plg_cv), in process()
1257 &(p->plg_mutex), &delay); in process()
1258 p->plg_waiting--; in process()
1259 (void) pthread_mutex_unlock(&(p->plg_mutex)); in process()
1261 DPRINT((dbfp, "left retry mode for %d\n", p->plg_tid)); in process()
1265 p->plg_output++; in process()
1269 report_error(plugrc, error_string, p->plg_path); in process()
1275 qpool_return(p, q_node); in process()
1278 queue_len = audit_queue_size(&(p->plg_queue)); in process()
1281 if (in_thr.thd_waiting && (queue_len > p->plg_qmin) && in process()
1282 (queue_len < p->plg_q_threshold)) in process()
1296 } else if ((p->plg_priority < BASE_PRIORITY) && in process()
1297 (queue_len < p->plg_q_threshold)) { in process()
1298 p->plg_priority = param.sched_priority = in process()
1300 (void) pthread_setschedparam(p->plg_tid, SCHED_OTHER, in process()
1305 DUMP("process", p, p->plg_last_seq_out, "exit"); in process()
1307 if ((rc = p->plg_fplugin_close(&error_string)) != in process()
1309 report_error(rc, error_string, p->plg_path); in process()
1314 (void) unload_plugin(p); in process()