Convert etx_lq_fpm plugin to new plugin interface
[olsrd.git] / lib / lq_etx_ff / src / lq_plugin_etx_ff.c
index d7de9cc..b3c197d 100644 (file)
 #include "scheduler.h"
 #include "olsr_logging.h"
 
+#define PLUGIN_DESCR "Freifunk ETX metric based on the original design of Elektra and Thomas Lopatic"
+#define PLUGIN_AUTHOR "Henning Rogge"
+
+#define LQ_ALGORITHM_ETX_FF_NAME "etx_ff"
+
+#define LQ_FF_QUICKSTART_INIT 4
+
 #define LQ_PLUGIN_RELEVANT_COSTCHANGE_FF 16
 
+static int lq_etxff_post_init(void);
+
 static void lq_etxff_initialize(void);
 static void lq_etxff_deinitialize(void);
 
@@ -83,6 +92,8 @@ static char *lq_etxff_print_cost(olsr_linkcost cost, struct lqtextbuffer *buffer
 
 static struct olsr_cookie_info *default_lq_ff_timer_cookie = NULL;
 
+DEFINE_PLUGIN6_NP(PLUGIN_DESCR, PLUGIN_AUTHOR, NULL, lq_etxff_post_init, NULL, NULL, false)
+
 /* etx lq plugin (freifunk fpm version) settings */
 struct lq_handler lq_etxff_handler = {
   "etx (freifunk)",
@@ -127,6 +138,11 @@ struct lq_handler lq_etxff_handler = {
   LQ_TC_MESSAGE
 };
 
+static int lq_etxff_post_init(void) {
+  active_lq_handler = &lq_etxff_handler;
+  return 0;
+}
+
 static void
 lq_etxff_packet_parser(struct olsr *olsr, struct interface *in_if, union olsr_ip_addr *from_addr)
 {
@@ -238,7 +254,7 @@ lq_etxff_initialize(void)
   /* Some cookies for stats keeping */
   olsr_packetparser_add_function(&lq_etxff_packet_parser);
   default_lq_ff_timer_cookie = olsr_alloc_cookie("Default Freifunk LQ", OLSR_COOKIE_TYPE_TIMER);
-  lq_etxff_timer_struct = olsr_start_timer(1000, 0, OLSR_TIMER_PERIODIC, &lq_etxff_timer, NULL, default_lq_ff_timer_cookie->ci_id);
+  lq_etxff_timer_struct = olsr_start_timer(1000, 0, OLSR_TIMER_PERIODIC, &lq_etxff_timer, NULL, default_lq_ff_timer_cookie);
 }
 
 static void