static PT_THREAD(generate_plugins(struct httpd_state *s)) { static sixlbr_plugin_info_t const *info; PSOCK_BEGIN(&s->sout); add("<h2>Plugins</h2>"); add ("<table>" "<theader><tr class=\"row_first\"><td>Plugin ID</td><td>Description</td><td>Status</td><td>Version</td><td>Init</td><td>Status</td></tr></theader>" "<tbody>"); SEND_STRING(&s->sout, buf); reset_buf(); info = plugins_list_head(); while(info != NULL) { add("<tr><td>%s</td><td>%s</td>", info->plugin->id, info->plugin->description); if(info->status == 0) { add("<td>Loaded</td><td>%s</td><td>%s</td><td>%s</td></tr>", info->plugin->version ? info->plugin->version() : "Unknown", info->init_status == 0 ? "Successful" : "Failed", info->plugin->status ? info->plugin->status() : "Unknown"); } else { add("<td>Not loaded</td><td></td><td></td><td></td></tr>"); } info = info->next; SEND_STRING(&s->sout, buf); reset_buf(); } add("</tbody></table><br />"); SEND_STRING(&s->sout, buf); reset_buf(); PSOCK_END(&s->sout); }
sixlbr_plugin_info_t * plugins_get_plugin_by_name(char const * name) { sixlbr_plugin_info_t *info = plugins_list_head(); while(info != NULL) { if(strcmp(info->plugin->id, name) == 0) { return info; } info = info->next; } return NULL; }
void plugins_init(void) { sixlbr_plugin_info_t *info = plugins_list_head(); while(info != NULL) { if (info->status == 0 && info->init_status == 0 && info->plugin->init != NULL) { LOG6LBR_INFO("Initialising %s\n", info->plugin->id); info->init_status = info->plugin->init(); if (info->init_status != 0) { LOG6LBR_ERROR("Initialisation failed, error code is %d\n", info->init_status); } } info = info->next; } }