Lines Matching refs:am

75 auditfilter_module_free(struct auditfilter_module *am)
78 if (am->am_modulename != NULL)
79 free(am->am_modulename);
80 if (am->am_arg_buffer != NULL)
81 free(am->am_arg_buffer);
82 if (am->am_argv != NULL)
83 free(am->am_argv);
94 struct auditfilter_module *am;
97 am = TAILQ_FIRST(list);
98 TAILQ_REMOVE(list, am, am_list);
99 auditfilter_module_free(am);
108 auditfilter_module_detach(struct auditfilter_module *am)
111 if (am->am_detach != NULL)
112 am->am_detach(am);
113 am->am_cookie = NULL;
114 (void)dlclose(am->am_dlhandle);
115 am->am_dlhandle = NULL;
125 struct auditfilter_module *am;
127 TAILQ_FOREACH(am, list, am_list)
128 auditfilter_module_detach(am);
138 auditfilter_module_attach(struct auditfilter_module *am)
141 am->am_dlhandle = dlopen(am->am_modulename, RTLD_NOW);
142 if (am->am_dlhandle == NULL) {
143 warnx("auditfilter_module_attach: %s: %s", am->am_modulename,
153 am->am_attach = dlsym(am->am_dlhandle, AUDIT_FILTER_ATTACH_STRING);
154 am->am_reinit = dlsym(am->am_dlhandle, AUDIT_FILTER_REINIT_STRING);
155 am->am_record = dlsym(am->am_dlhandle, AUDIT_FILTER_RECORD_STRING);
156 am->am_rawrecord = dlsym(am->am_dlhandle,
158 am->am_detach = dlsym(am->am_dlhandle, AUDIT_FILTER_DETACH_STRING);
160 if (am->am_attach != NULL) {
161 if (am->am_attach(am, am->am_argc, am->am_argv)
164 am->am_modulename);
165 dlclose(am->am_dlhandle);
166 am->am_dlhandle = NULL;
167 am->am_cookie = NULL;
168 am->am_attach = NULL;
169 am->am_reinit = NULL;
170 am->am_record = NULL;
171 am->am_rawrecord = NULL;
172 am->am_detach = NULL;
186 auditfilter_module_reinit(struct auditfilter_module *am)
189 if (am->am_reinit == NULL)
192 if (am->am_reinit(am, am->am_argc, am->am_argv) !=
195 am->am_modulename);
217 struct auditfilter_module *am;
219 am = malloc(sizeof(*am));
220 if (am == NULL) {
224 bzero(am, sizeof(*am));
240 am->am_modulename = strdup(module);
241 if (am->am_modulename == NULL) {
243 auditfilter_module_free(am);
247 am->am_arg_buffer = strdup(buffer);
248 if (am->am_arg_buffer == NULL) {
250 auditfilter_module_free(am);
259 am->am_argv = malloc(sizeof(char *) * AUDITFILTERD_CONF_MAXARGS);
260 if (am->am_argv == NULL) {
262 auditfilter_module_free(am);
265 bzero(am->am_argv, sizeof(char *) * AUDITFILTERD_CONF_MAXARGS);
266 am->am_argc = 0;
267 for (ap = am->am_argv; (*ap = strsep(&arguments, " \t")) != NULL;) {
269 am->am_argc++;
270 if (++ap >= &am->am_argv[AUDITFILTERD_CONF_MAXARGS])
274 if (ap >= &am->am_argv[AUDITFILTERD_CONF_MAXARGS]) {
277 auditfilter_module_free(am);
281 return (am);
294 struct auditfilter_module *am;
306 am = auditfilter_module_parse(filename, linenumber, buffer);
307 if (am == NULL) {
311 TAILQ_INSERT_HEAD(list, am, am_list);
498 struct auditfilter_module *am;
500 am = (struct auditfilter_module *)instance;
501 *cookie = am->am_cookie;
507 struct auditfilter_module *am;
509 am = (struct auditfilter_module *)instance;
510 am->am_cookie = cookie;