Esempio n. 1
0
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);
}
Esempio n. 2
0
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;
}
Esempio n. 3
0
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;
  }
}