Lines Matching refs:p

269 load_function(plugin_t *p, char *name, auditd_rc_t (**func)())  in load_function()  argument
271 *func = (auditd_rc_t (*)())dlsym(p->plg_dlptr, name); in load_function()
290 load_plugin(plugin_t *p) in load_plugin() argument
299 if ((fd = open(p->plg_path, O_NONBLOCK | O_RDONLY)) != -1) { in load_plugin()
309 p->plg_path, strerror(errno)); in load_plugin()
323 p->plg_path); in load_plugin()
336 p->plg_path); in load_plugin()
346 p->plg_path); in load_plugin()
354 p->plg_dlptr = dlopen(p->plg_path, RTLD_LAZY); in load_plugin()
356 if (p->plg_dlptr == NULL) { in load_plugin()
362 p->plg_path, errmsg != NULL ? errmsg : in load_plugin()
368 if (load_function(p, "auditd_plugin", &(p->plg_fplugin))) in load_plugin()
371 if (load_function(p, "auditd_plugin_open", &(p->plg_fplugin_open))) in load_plugin()
374 if (load_function(p, "auditd_plugin_close", &(p->plg_fplugin_close))) in load_plugin()
388 unload_plugin(plugin_t *p) in unload_plugin() argument
394 DPRINT((dbfp, "unload_plugin: removing %s\n", p->plg_path)); in unload_plugin()
396 _kva_free(p->plg_kvlist); /* _kva_free accepts NULL */ in unload_plugin()
397 qpool_close(p); /* qpool_close accepts NULL pool, queue */ in unload_plugin()
398 DPRINT((dbfp, "unload_plugin: %s structure removed\n", p->plg_path)); in unload_plugin()
400 (void) dlclose(p->plg_dlptr); in unload_plugin()
402 DPRINT((dbfp, "unload_plugin: %s dlclosed\n", p->plg_path)); in unload_plugin()
403 free(p->plg_path); in unload_plugin()
405 (void) pthread_mutex_destroy(&(p->plg_mutex)); in unload_plugin()
406 (void) pthread_cond_destroy(&(p->plg_cv)); in unload_plugin()
411 if (q == p) { in unload_plugin()
412 *r = p->plg_next; in unload_plugin()
413 free(p); in unload_plugin()
429 open_return(plugin_t *p, char *attrval) in open_return() argument
446 plugin_t *p; in auditd_thread_init() local
473 p = plugin_head; in auditd_thread_init()
474 while (p != NULL) { in auditd_thread_init()
475 if (p->plg_removed) { in auditd_thread_init()
476 DPRINT((dbfp, "start removing %s\n", p->plg_path)); in auditd_thread_init()
478 (void) pthread_cond_signal(&(p->plg_cv)); in auditd_thread_init()
479 } else if (!p->plg_initialized) { in auditd_thread_init()
481 p->plg_path)); in auditd_thread_init()
482 if (load_plugin(p)) { in auditd_thread_init()
485 p->plg_path); in auditd_thread_init()
486 p = unload_plugin(p); in auditd_thread_init()
491 if ((rc = p->plg_fplugin_open( in auditd_thread_init()
492 p->plg_kvlist, in auditd_thread_init()
494 report_error(rc, error_string, p->plg_path); in auditd_thread_init()
496 p = unload_plugin(p); in auditd_thread_init()
499 open_return(p, open_params); in auditd_thread_init()
500 p->plg_reopen = 0; in auditd_thread_init()
502 threshold = ((p->plg_qmax * THRESHOLD_PCT) + 99) / 100; in auditd_thread_init()
503 p->plg_qmin = INPUT_MIN; in auditd_thread_init()
507 p->plg_path, p->plg_qmax)); in auditd_thread_init()
509 qpool_init(p, threshold); in auditd_thread_init()
510 audit_queue_init(&(p->plg_queue)); in auditd_thread_init()
511 p->plg_initialized = 1; in auditd_thread_init()
513 (void) pthread_mutex_init(&(p->plg_mutex), NULL); in auditd_thread_init()
514 (void) pthread_cond_init(&(p->plg_cv), NULL); in auditd_thread_init()
515 p->plg_waiting = 0; in auditd_thread_init()
517 if (pthread_create(&(p->plg_tid), NULL, process, p)) { in auditd_thread_init()
520 p->plg_path); in auditd_thread_init()
521 p = unload_plugin(p); in auditd_thread_init()
524 } else if (p->plg_reopen) { in auditd_thread_init()
525 DPRINT((dbfp, "reopen %s\n", p->plg_path)); in auditd_thread_init()
527 if ((rc = p->plg_fplugin_open(p->plg_kvlist, in auditd_thread_init()
529 report_error(rc, error_string, p->plg_path); in auditd_thread_init()
531 p = unload_plugin(p); in auditd_thread_init()
534 open_return(p, open_params); in auditd_thread_init()
535 p->plg_reopen = 0; in auditd_thread_init()
538 p->plg_path, p->plg_qmax)); in auditd_thread_init()
541 p->plg_q_threshold = ((p->plg_qmax * THRESHOLD_PCT) + 99) / 100; in auditd_thread_init()
543 p = p->plg_next; in auditd_thread_init()
584 qpool_init(plugin_t *p, int threshold) in qpool_init() argument
589 audit_queue_init(&(p->plg_pool)); in qpool_init()
592 p->plg_tid, p->plg_qmax, p->plg_qmin, threshold)); in qpool_init()
594 if (p->plg_qmax > largest_queue) in qpool_init()
595 largest_queue = p->plg_qmax; in qpool_init()
597 p->plg_q_threshold = threshold; in qpool_init()
599 for (i = 0; i < p->plg_qmin; i++) { in qpool_init()
605 audit_enqueue(&p->plg_pool, node); in qpool_init()
646 qpool_close(plugin_t *p) in qpool_close() argument
651 if (!p->plg_initialized) in qpool_close()
654 while (audit_dequeue(&(p->plg_pool), (void *)&q_node) == 0) { in qpool_close()
657 audit_queue_destroy(&(p->plg_pool)); in qpool_close()
659 while (audit_dequeue(&(p->plg_queue), (void *)&q_node) == 0) { in qpool_close()
665 audit_queue_destroy(&(p->plg_queue)); in qpool_close()
672 qpool_withdraw(plugin_t *p) in qpool_withdraw() argument
678 rc = audit_dequeue(&(p->plg_pool), (void *)&node); in qpool_withdraw()
766 qpool_return(plugin_t *p, audit_q_t *node) in qpool_return() argument
774 qpool_size = audit_queue_size(&(p->plg_pool)); in qpool_return()
775 q_size = audit_queue_size(&(p->plg_queue)); in qpool_return()
777 if (qpool_size + q_size > p->plg_qmax) in qpool_return()
780 audit_enqueue(&(p->plg_pool), node); in qpool_return()
785 p->plg_tid, sequence, q_size, qpool_size, in qpool_return()
786 q_size + qpool_size, p->plg_q_threshold)); in qpool_return()
819 dump_state(char *src, plugin_t *p, uint64_t count, char *msg) in dump_state() argument
826 (void) pthread_getschedparam(p->plg_tid, &policy, &param); in dump_state()
837 src, p->plg_tid, count, msg, in dump_state()
839 audit_queue_size(&(p->plg_queue)), in dump_state()
840 audit_queue_size(&(p->plg_pool)), in dump_state()
841 p->plg_waiting, p->plg_tossed, in dump_state()
842 p->plg_queued, p->plg_output); in dump_state()
855 plugin_t *p; in policy_is_block() local
858 p = plugin_head; in policy_is_block()
860 while (p != NULL) { in policy_is_block()
861 if (p->plg_cnt == 0) { in policy_is_block()
867 p = p->plg_next; in policy_is_block()
881 plugin_t *p; in policy_update() local
885 p = plugin_head; in policy_update()
886 while (p != NULL) { in policy_update()
887 p->plg_cnt = (newpolicy & AUDIT_CNT) ? 1 : 0; in policy_update()
888 (void) pthread_cond_signal(&(p->plg_cv)); in policy_update()
890 DPRINT((dbfp, "policy changed for thread %d\n", p->plg_tid)); in policy_update()
891 p = p->plg_next; in policy_update()
911 plugin_t *p; in queue_buffer() local
1009 p = plugin_head; in queue_buffer()
1010 while (p != NULL) { in queue_buffer()
1011 if (!p->plg_removed) { in queue_buffer()
1020 q_copy = qpool_withdraw(p); in queue_buffer()
1021 q_copy->aqq_sequence = p->plg_sequence++; in queue_buffer()
1024 p->plg_save_q_copy = q_copy; /* enqueue below */ in queue_buffer()
1027 p->plg_save_q_copy = NULL; in queue_buffer()
1028 p = p->plg_next; in queue_buffer()
1034 p = plugin_head; in queue_buffer()
1035 while ((p != NULL) && (p->plg_save_q_copy != NULL)) { in queue_buffer()
1036 audit_enqueue(&(p->plg_queue), p->plg_save_q_copy); in queue_buffer()
1037 (void) pthread_cond_signal(&(p->plg_cv)); in queue_buffer()
1038 p->plg_queued++; in queue_buffer()
1039 p = p->plg_next; in queue_buffer()
1075 plugin_t *p; in adjust_priority() local
1081 p = plugin_head; in adjust_priority()
1082 while (p != NULL) { in adjust_priority()
1083 queue_size = audit_queue_size(&(p->plg_queue)); in adjust_priority()
1084 if (queue_size > p->plg_q_threshold) { in adjust_priority()
1085 if (p->plg_priority != HIGH_PRIORITY) { in adjust_priority()
1086 p->plg_priority = in adjust_priority()
1089 (void) pthread_setschedparam(p->plg_tid, in adjust_priority()
1092 if (queue_size > p->plg_qmax - p->plg_qmin) { in adjust_priority()
1097 p = p->plg_next; in adjust_priority()
1129 plugin_t *p; in input() local
1178 p = plugin_head; in input()
1179 while (p != NULL) { in input()
1180 (void) pthread_cond_signal(&(p->plg_cv)); in input()
1181 p = p->plg_next; in input()
1193 plugin_t *p = arg; in process() local
1205 DPRINT((dbfp, "%s is thread %d\n", p->plg_path, p->plg_tid)); in process()
1206 p->plg_priority = param.sched_priority = BASE_PRIORITY; in process()
1207 (void) pthread_setschedparam(p->plg_tid, SCHED_OTHER, &param); in process()
1212 while (audit_dequeue(&(p->plg_queue), (void *)&q_node) != 0) { in process()
1213 DUMP("process", p, p->plg_last_seq_out, "blocked"); in process()
1216 (void) pthread_mutex_lock(&(p->plg_mutex)); in process()
1217 p->plg_waiting++; in process()
1218 (void) pthread_cond_wait(&(p->plg_cv), in process()
1219 &(p->plg_mutex)); in process()
1220 p->plg_waiting--; in process()
1221 (void) pthread_mutex_unlock(&(p->plg_mutex)); in process()
1223 if (p->plg_removed) in process()
1226 DUMP("process", p, p->plg_last_seq_out, "unblocked"); in process()
1229 if (q_node->aqq_sequence != p->plg_last_seq_out + 1) in process()
1232 p->plg_tid, q_node->aqq_sequence, in process()
1233 p->plg_last_seq_out); in process()
1239 plugrc = p->plg_fplugin(b_node->abq_buffer, in process()
1242 if (p->plg_removed) in process()
1245 p->plg_last_seq_out = q_node->aqq_sequence; in process()
1250 report_error(plugrc, error_string, p->plg_path); in process()
1258 p->plg_tid, p->plg_cnt)); in process()
1260 if (p->plg_cnt) /* if cnt is on, lose the buffer */ in process()
1263 delay.tv_sec = p->plg_retry_time; in process()
1264 (void) pthread_mutex_lock(&(p->plg_mutex)); in process()
1265 p->plg_waiting++; in process()
1266 (void) pthread_cond_reltimedwait_np(&(p->plg_cv), in process()
1267 &(p->plg_mutex), &delay); in process()
1268 p->plg_waiting--; in process()
1269 (void) pthread_mutex_unlock(&(p->plg_mutex)); in process()
1271 DPRINT((dbfp, "left retry mode for %d\n", p->plg_tid)); in process()
1275 p->plg_output++; in process()
1279 report_error(plugrc, error_string, p->plg_path); in process()
1285 qpool_return(p, q_node); in process()
1288 queue_len = audit_queue_size(&(p->plg_queue)); in process()
1291 if (in_thr.thd_waiting && (queue_len > p->plg_qmin) && in process()
1292 (queue_len < p->plg_q_threshold)) in process()
1306 } else if ((p->plg_priority < BASE_PRIORITY) && in process()
1307 (queue_len < p->plg_q_threshold)) { in process()
1308 p->plg_priority = param.sched_priority = in process()
1310 (void) pthread_setschedparam(p->plg_tid, SCHED_OTHER, in process()
1315 DUMP("process", p, p->plg_last_seq_out, "exit"); in process()
1317 if ((rc = p->plg_fplugin_close(&error_string)) != in process()
1319 report_error(rc, error_string, p->plg_path); in process()
1324 (void) unload_plugin(p); in process()