Namespace cleanup of scheduler, remove "polling" sockets
authorHenning Rogge <hrogge@googlemail.com>
Mon, 14 Feb 2011 20:07:18 +0000 (21:07 +0100)
committerHenning Rogge <hrogge@googlemail.com>
Mon, 14 Feb 2011 20:07:18 +0000 (21:07 +0100)
46 files changed:
lib/arprefresh/src/olsrd_arprefresh.c
lib/arproaming/src/olsrd_arproaming.c
lib/bmf/src/PacketHistory.c
lib/bmf/src/olsrd_plugin.c
lib/cl_roam/src/cl_roam.c
lib/debuginfo/src/olsrd_debuginfo.c
lib/dot_draw/src/olsrd_dot_draw.c
lib/dyn_gw/src/olsrd_dyn_gw.c
lib/dyn_gw_plain/src/olsrd_dyn_gw_plain.c
lib/httpinfo/src/olsrd_httpinfo.c
lib/lq_etx_ff/src/lq_plugin_etx_ff.c
lib/mdns/src/NetworkInterfaces.c
lib/mdns/src/olsrd_plugin.c
lib/nameservice/src/mapwrite.c
lib/nameservice/src/nameservice.c
lib/nameservice/src/nameservice.h
lib/obamp/src/obamp.c
lib/obamp/src/olsrd_plugin.c
lib/quagga/src/olsrd_plugin.c
lib/secure/src/olsrd_secure.c
lib/txtinfo/src/olsrd_txtinfo.c
lib/watchdog/src/olsrd_plugin.c
src/duplicate_set.c
src/duplicate_set.h
src/hna_set.c
src/hna_set.h
src/interfaces.c
src/interfaces.h
src/link_set.c
src/link_set.h
src/linux/kernel_routes.c
src/main.c
src/mid_set.c
src/mid_set.h
src/neighbor_table.c
src/neighbor_table.h
src/net_olsr.c
src/olsr.c
src/olsr_comport.c
src/olsr_comport.h
src/olsr_comport_txt.c
src/olsr_spf.c
src/scheduler.c
src/scheduler.h
src/tc_set.c
src/tc_set.h

index d15b5fc..8673594 100644 (file)
@@ -167,7 +167,7 @@ int
 olsrd_plugin_init(void)
 {
   int ret = 0;
-  arp_event_timer_info = olsr_alloc_timerinfo("Arprefresh: event", &olsr_arp_event, true);
+  arp_event_timer_info = olsr_timer_add("Arprefresh: event", &olsr_arp_event, true);
 
   if (AF_INET == olsr_cnf->ip_version) {
     struct sock_fprog filter;
@@ -197,7 +197,7 @@ olsrd_plugin_init(void)
         0 <= os_socket_set_nonblocking(arprefresh_sockfd) &&
         0 <= setsockopt(arprefresh_sockfd, SOL_SOCKET, SO_ATTACH_FILTER, &filter, sizeof(filter))) {
       /* Register the ARP refresh event */
-      olsr_start_timer(2 * MSEC_PER_SEC, 0, NULL, arp_event_timer_info);
+      olsr_timer_start(2 * MSEC_PER_SEC, 0, NULL, arp_event_timer_info);
       ret = 1;
     } else {
       OLSR_WARN(LOG_PLUGINS, "*** ARPREFRESH: Cannot create non-blocking filtering packet socket: %s\n", strerror(errno));
index fad0ac4..b5c47e1 100644 (file)
@@ -84,7 +84,7 @@ struct arproaming_nodes {
 };
 
 static struct olsr_timer_info *timer_info;
-static struct timer_entry *event_timer;
+static struct olsr_timer_entry *event_timer;
 
 static char arproaming_parameter_interface[25];
 static int arproaming_parameter_timeout;
@@ -403,8 +403,8 @@ arproaming_init(void)
 
        arproaming_systemconf(arproaming_socketfd_system);
 
-  timer_info = olsr_alloc_timerinfo("arproaming", &arproaming_schedule_event, true);
-  event_timer = olsr_start_timer(MSEC_PER_SEC/3, 0, NULL, timer_info);
+  timer_info = olsr_timer_add("arproaming", &arproaming_schedule_event, true);
+  event_timer = olsr_timer_start(MSEC_PER_SEC/3, 0, NULL, timer_info);
 
        close(arproaming_socketfd_system);
        return 0;
@@ -413,7 +413,7 @@ arproaming_init(void)
 static int
 arproaming_exit(void)
 {
-  olsr_stop_timer(event_timer);
+  olsr_timer_stop(event_timer);
 
        if (arproaming_socketfd_netlink >= 0) {
                OLSR_DEBUG(LOG_PLUGINS, "[ARPROAMING] Closing netlink socket.\n");
index f2d596f..4787fc6 100644 (file)
@@ -247,7 +247,7 @@ CheckAndMarkRecentPacket(u_int32_t crc32)
       /* Found duplicate entry */
 
       /* Always mark as "seen recently": refresh time-out */
-      walker->timeOut = GET_TIMESTAMP(HISTORY_HOLD_TIME);
+      walker->timeOut = olsr_timer_getAbsolute(HISTORY_HOLD_TIME);
 
       return 1;
     }                           /* if */
@@ -257,7 +257,7 @@ CheckAndMarkRecentPacket(u_int32_t crc32)
   newEntry = malloc(sizeof(struct TDupEntry));
   if (newEntry != NULL) {
     newEntry->crc32 = crc32;
-    newEntry->timeOut = GET_TIMESTAMP(HISTORY_HOLD_TIME);
+    newEntry->timeOut = olsr_timer_getAbsolute(HISTORY_HOLD_TIME);
 
     /* Add new entry at the front of the list */
     newEntry->next = PacketHistory[idx];
@@ -287,7 +287,7 @@ PrunePacketHistory(void *useless __attribute__ ((unused)))
         struct TDupEntry *entry = nextEntry;
         nextEntry = entry->next;
 
-        if (TIMED_OUT(entry->timeOut)) {
+        if (olsr_timer_isTimedOut(entry->timeOut)) {
           /* De-queue */
           if (prevEntry != NULL) {
             prevEntry->next = entry->next;
index 53b9140..9f397d0 100644 (file)
@@ -46,7 +46,7 @@
 #include "plugin.h"
 #include "plugin_util.h"
 #include "defs.h"               /* uint8_t, olsr_cnf */
-#include "scheduler.h"          /* olsr_start_timer() */
+#include "scheduler.h"          /* olsr_timer_start() */
 #include "olsr_cfg.h"           /* olsr_cnf() */
 #include "olsr_memcookie.h"        /* olsr_memcookie_add() */
 #include "olsr_logging.h"
@@ -106,10 +106,10 @@ olsrd_plugin_init(void)
 
   /* create the cookie */
   prune_packet_history_timer_info =
-      olsr_alloc_timerinfo("BMF: Prune Packet History", &PrunePacketHistory, true);
+      olsr_timer_add("BMF: Prune Packet History", &PrunePacketHistory, true);
 
   /* Register the duplicate registration pruning process */
-  olsr_start_timer(3 * MSEC_PER_SEC, 0, NULL, prune_packet_history_timer_info);
+  olsr_timer_start(3 * MSEC_PER_SEC, 0, NULL, prune_packet_history_timer_info);
 
 
   return InitBmf(NULL);
index 3f51922..239b2a1 100644 (file)
@@ -102,7 +102,7 @@ struct guest_client {
   pthread_t ping_thread_add;
   struct olsr_memcookie_info *arping_timer_cookie;
   char ping_thread_done;
-  struct timer_entry *arping_timer;
+  struct olsr_timer_entry *arping_timer;
   int remaing_announcements;
   //who is in charge of this client
   union olsr_ip_addr master_ip;
@@ -315,13 +315,13 @@ int olsrd_plugin_init(void) {
   has_inet_gateway = 0;
 
   /* create the cookie */
-  event_timer_info1 = olsr_alloc_timerinfo("cl roam: Event1", &olsr_event1, true);
-  event_timer_info2 = olsr_alloc_timerinfo("cl roam: Event2", &olsr_event2, true);
-  arping_timer_info = olsr_alloc_timerinfo("cl roam: Maybe add something", &check_ping_result, true);
+  event_timer_info1 = olsr_timer_add("cl roam: Event1", &olsr_event1, true);
+  event_timer_info2 = olsr_timer_add("cl roam: Event2", &olsr_event2, true);
+  arping_timer_info = olsr_timer_add("cl roam: Maybe add something", &check_ping_result, true);
 
   /* Register the GW check */
-  olsr_start_timer(1 * MSEC_PER_SEC, 0, NULL, event_timer_info1);
-  olsr_start_timer(20 * MSEC_PER_SEC, 0, NULL, event_timer_info2);
+  olsr_timer_start(1 * MSEC_PER_SEC, 0, NULL, event_timer_info1);
+  olsr_timer_start(20 * MSEC_PER_SEC, 0, NULL, event_timer_info2);
 
   /* register functions with olsrd */
   // somehow my cool new message.....
@@ -382,7 +382,7 @@ static void check_ping_result(void *foo) {
     /* should be same size as (void*) */
     ssize_t ping_res;
 
-    olsr_stop_timer(host->arping_timer);
+    olsr_timer_stop(host->arping_timer);
     pthread_join(host->ping_thread_add, (void*) &ping_res);
     host->arping_timer = NULL;
     host->ping_thread_done = 0;
@@ -423,7 +423,7 @@ static void check_for_route(struct guest_client * host) {
     //printf("maybe add something\n");
     if (host->arping_timer_cookie == NULL)
     //printf("timer started\n");
-    host->arping_timer = olsr_start_timer(250, 5, host, arping_timer_info);
+    host->arping_timer = olsr_timer_start(250, 5, host, arping_timer_info);
     rc = pthread_create(&(host->ping_thread_add), NULL, ping_thread, (void *) host);
   } else if ((host->last_seen > 60.0) && host->is_announced) {
     char route_command[50];
index 34156c8..c636a13 100644 (file)
@@ -189,8 +189,8 @@ debuginfo_enable(void)
     commands[i].cmd->acl = &allowed_nets;
   }
 
-  statistics_timer = olsr_alloc_timerinfo("debuginfo timer", &update_statistics_ptr, true);
-  olsr_start_timer(traffic_interval * 1000, 0, NULL, statistics_timer);
+  statistics_timer = olsr_timer_add("debuginfo timer", &update_statistics_ptr, true);
+  olsr_timer_start(traffic_interval * 1000, 0, NULL, statistics_timer);
 
   statistics_msg_mem = olsr_memcookie_add("debuginfo msgstat",
       sizeof(struct debug_msgtraffic) + sizeof(struct debug_msgtraffic_count) * traffic_slots);
index f37cf6b..9a731ae 100644 (file)
@@ -228,7 +228,7 @@ dotdraw_enable(void) {
   }
 
   /* Register socket with olsrd */
-  add_olsr_socket(ipc_socket, &ipc_action, NULL, NULL, SP_PR_READ);
+  olsr_socket_add(ipc_socket, &ipc_action, NULL, OLSR_SOCKET_READ);
 
   return 0;
 }
index b2c420a..63d2dca 100644 (file)
@@ -223,10 +223,10 @@ olsrd_plugin_init(void)
   pthread_create(&ping_thread, NULL, (void *(*)(void *))looped_checks, NULL);
 
   /* create the cookie */
-  doing_hna_timer_info = olsr_alloc_timerinfo("DynGW: Doing HNS", &olsr_event_doing_hna, true);
+  doing_hna_timer_info = olsr_timer_add("DynGW: Doing HNS", &olsr_event_doing_hna, true);
 
   /* Register the GW check */
-  olsr_start_timer(3 * MSEC_PER_SEC, 0, NULL, doing_hna_timer_info);
+  olsr_timer_start(3 * MSEC_PER_SEC, 0, NULL, doing_hna_timer_info);
 
   return 1;
 }
index 30b0b45..0f75a00 100644 (file)
@@ -102,10 +102,10 @@ olsrd_plugin_init(void)
   }
 
   /* create the cookie */
-  event_timer_info = olsr_alloc_timerinfo("DynGW Plain: Event", &olsr_event, true);
+  event_timer_info = olsr_timer_add("DynGW Plain: Event", &olsr_event, true);
 
   /* Register the GW check */
-  olsr_start_timer(3 * MSEC_PER_SEC, 0, NULL, event_timer_info);
+  olsr_timer_start(3 * MSEC_PER_SEC, 0, NULL, event_timer_info);
 
   return 1;
 }
index 731f94e..f3901d2 100644 (file)
@@ -344,7 +344,7 @@ olsrd_plugin_init(void)
   }
 
   /* Register socket */
-  add_olsr_socket(http_socket, &parse_http_request, NULL, NULL, SP_PR_READ);
+  olsr_socket_add(http_socket, &parse_http_request, NULL, OLSR_SOCKET_READ);
 
   return 1;
 }
index e2dce90..8831d91 100644 (file)
@@ -264,21 +264,21 @@ lq_etxff_timer(void __attribute__ ((unused)) * context)
   }
 }
 
-static struct timer_entry *lq_etxff_timer_struct = NULL;
+static struct olsr_timer_entry *lq_etxff_timer_struct = NULL;
 
 static void
 lq_etxff_initialize(void)
 {
   /* Some cookies for stats keeping */
   olsr_packetparser_add_function(&lq_etxff_packet_parser);
-  default_lq_ff_timer_info = olsr_alloc_timerinfo("Default Freifunk LQ",  &lq_etxff_timer, true);
-  lq_etxff_timer_struct = olsr_start_timer(1000, 0, NULL, default_lq_ff_timer_info);
+  default_lq_ff_timer_info = olsr_timer_add("Default Freifunk LQ",  &lq_etxff_timer, true);
+  lq_etxff_timer_struct = olsr_timer_start(1000, 0, NULL, default_lq_ff_timer_info);
 }
 
 static void
 lq_etxff_deinitialize(void)
 {
-  olsr_stop_timer(lq_etxff_timer_struct);
+  olsr_timer_stop(lq_etxff_timer_struct);
   olsr_packetparser_remove_function(&lq_etxff_packet_parser);
 }
 
index a7403b5..ff7dbda 100644 (file)
@@ -162,7 +162,7 @@ CreateCaptureSocket(const char *ifName)
     return -1;
   }
   //AddDescriptorToInputSet(skfd);
-  add_olsr_socket(skfd, &DoMDNS, NULL, NULL, SP_PR_READ);
+  olsr_socket_add(skfd, &DoMDNS, NULL, OLSR_SOCKET_READ);
 
   return skfd;
 }                               /* CreateCaptureSocket */
index dcd7a33..0393a21 100644 (file)
@@ -46,7 +46,7 @@
 #include "plugin.h"
 #include "plugin_util.h"
 #include "defs.h"               /* uint8_t, olsr_cnf */
-#include "scheduler.h"          /* olsr_start_timer() */
+#include "scheduler.h"          /* olsr_timer_start() */
 #include "olsr_cfg.h"           /* olsr_cnf() */
 #include "olsr_memcookie.h"        /* olsr_memcookie_add() */
 
@@ -100,7 +100,7 @@ olsrd_plugin_init(void)
   //prune_packet_history_timer_cookie = olsr_memcookie_add("BMF: Prune Packet History", OLSR_COOKIE_TYPE_TIMER);
 
   /* Register the duplicate registration pruning process */
-  //olsr_start_timer(3 * MSEC_PER_SEC, 0, OLSR_TIMER_PERIODIC,
+  //olsr_timer_start(3 * MSEC_PER_SEC, 0, OLSR_TIMER_PERIODIC,
   //                 &PrunePacketHistory, NULL, prune_packet_history_timer_cookie->ci_id);
 
 
index 62ad50f..0c0f1d0 100644 (file)
@@ -233,8 +233,8 @@ mapwrite_init(const char *fifoname)
       OLSR_WARN(LOG_PLUGINS, "mkfifo(%s): %s", fifoname, strerror(errno));
       return false;
     } else {
-      map_poll_timer_info = olsr_alloc_timerinfo("Nameservice: mapwrite", &mapwrite_poll, true);
-      olsr_start_timer(800, 5, NULL, map_poll_timer_info);
+      map_poll_timer_info = olsr_timer_add("Nameservice: mapwrite", &mapwrite_poll, true);
+      olsr_timer_start(800, 5, NULL, map_poll_timer_info);
     }
   }
   return true;
index 77052ec..4272e6b 100644 (file)
@@ -126,10 +126,10 @@ struct list_entity latlon_list[HASHSIZE];
 static bool latlon_table_changed = true;
 
 /* backoff timer for writing changes into a file */
-struct timer_entry *write_file_timer = NULL;
+struct olsr_timer_entry *write_file_timer = NULL;
 
 /* periodic message generation */
-struct timer_entry *msg_gen_timer = NULL;
+struct olsr_timer_entry *msg_gen_timer = NULL;
 
 /* regular expression to be matched by valid hostnames, compiled in name_init() */
 static regex_t regex_t_name;
@@ -201,11 +201,11 @@ name_constructor(void)
   }
 
   msg_gen_timer_cookie =
-      olsr_alloc_timerinfo("Nameservice: message gen", &olsr_namesvc_gen, true);
+      olsr_timer_add("Nameservice: message gen", &olsr_namesvc_gen, true);
   write_file_timer_cookie =
-      olsr_alloc_timerinfo("Nameservice: write file", &olsr_expire_write_file_timer, false);
+      olsr_timer_add("Nameservice: write file", &olsr_expire_write_file_timer, false);
   db_timer_cookie =
-      olsr_alloc_timerinfo("Nameservice: DB", &olsr_nameservice_expire_db_timer, false);
+      olsr_timer_add("Nameservice: DB", &olsr_nameservice_expire_db_timer, false);
 }
 
 
@@ -427,7 +427,7 @@ name_init(void)
   olsr_parser_add_function(&olsr_parser, PARSER_TYPE);
 
   /* periodic message generation */
-  msg_gen_timer = olsr_start_timer(my_interval * MSEC_PER_SEC, EMISSION_JITTER,
+  msg_gen_timer = olsr_timer_start(my_interval * MSEC_PER_SEC, EMISSION_JITTER,
                                    NULL, msg_gen_timer_cookie);
 
   mapwrite_init(my_latlon_file);
@@ -511,9 +511,9 @@ name_destructor(void)
   free_all_listold_entries(forwarder_list);
   free_all_listold_entries(latlon_list);
 
-  olsr_stop_timer(write_file_timer);
+  olsr_timer_stop(write_file_timer);
   write_file_timer = NULL;
-  olsr_stop_timer(msg_gen_timer);
+  olsr_timer_stop(msg_gen_timer);
   msg_gen_timer = NULL;
 
   regfree(&regex_t_name);
@@ -569,7 +569,7 @@ olsr_start_write_file_timer(void)
     return;
   }
 
-  write_file_timer = olsr_start_timer(5 * MSEC_PER_SEC, 5, NULL, write_file_timer_cookie);
+  write_file_timer = olsr_timer_start(5 * MSEC_PER_SEC, 5, NULL, write_file_timer_cookie);
 }
 
 /*
@@ -584,7 +584,7 @@ olsr_namesvc_delete_db_entry(struct db_entry *db)
   OLSR_DEBUG(LOG_PLUGINS, "NAME PLUGIN: %s timed out... deleting\n", olsr_ip_to_string(&strbuf, &db->originator));
 
   olsr_start_write_file_timer();
-  olsr_stop_timer(db->db_timer);        /* stop timer if running */
+  olsr_timer_stop(db->db_timer);        /* stop timer if running */
   db->db_timer = NULL;
 
   /* Delete */
@@ -953,7 +953,7 @@ insert_new_name_in_list(union olsr_ip_addr *originator,
       //delegate to function for parsing the packet and linking it to entry->names
       decap_namemsg(from_packet, &entry->names, this_table_changed);
 
-      olsr_set_timer(&entry->db_timer, vtime,
+      olsr_timer_set(&entry->db_timer, vtime,
                      OLSR_NAMESVC_DB_JITTER, entry, db_timer_cookie);
 
       entry_found = true;
@@ -972,7 +972,7 @@ insert_new_name_in_list(union olsr_ip_addr *originator,
 
     entry->originator = *originator;
 
-    olsr_set_timer(&entry->db_timer, vtime,
+    olsr_timer_set(&entry->db_timer, vtime,
                    OLSR_LINK_LOSS_JITTER, entry, db_timer_cookie);
 
     entry->names = NULL;
index 2e6db22..718af19 100644 (file)
@@ -109,7 +109,7 @@ struct name_entry {
  * */
 struct db_entry {
   union olsr_ip_addr originator;       /* IP address of the node this entry describes */
-  struct timer_entry *db_timer;        /* Validity time */
+  struct olsr_timer_entry *db_timer;        /* Validity time */
   struct name_entry *names;            /* list of names this originator declares */
   struct list_entity db_list;            /* linked list of db entries per hash container */
 };
index 82e1206..0174a2b 100644 (file)
@@ -234,7 +234,7 @@ CreateCaptureSocket(const char *ifName)
     return -1;
   }
 
-  add_olsr_socket(skfd, &EncapFlowInObamp, NULL, NULL, SP_PR_READ);
+  olsr_socket_add(skfd, &EncapFlowInObamp, NULL, OLSR_SOCKET_READ);
 
   return skfd;
 }                               /* CreateCaptureSocket */
@@ -715,7 +715,7 @@ UdpServer(void)
     return (-1);
   }
 
-  add_olsr_socket(sdudp, &ObampSignalling, NULL, NULL, SP_PR_READ);
+  olsr_socket_add(sdudp, &ObampSignalling, NULL, OLSR_SOCKET_READ);
 
   return 0;
 
@@ -1590,12 +1590,12 @@ InitOBAMP(void)
 
 //Structs necessary for timers
 
-  struct timer_entry *OBAMP_alive_timer;
-  struct timer_entry *purge_nodes_timer;
-  struct timer_entry *mesh_create_timer;
-  struct timer_entry *tree_create_timer;
-  struct timer_entry *outer_tree_create_timer;
-  struct timer_entry *unsolicited_tree_destroy_timer;
+  struct olsr_timer_entry *OBAMP_alive_timer;
+  struct olsr_timer_entry *purge_nodes_timer;
+  struct olsr_timer_entry *mesh_create_timer;
+  struct olsr_timer_entry *tree_create_timer;
+  struct olsr_timer_entry *outer_tree_create_timer;
+  struct olsr_timer_entry *unsolicited_tree_destroy_timer;
 
 
 
@@ -1632,17 +1632,17 @@ InitOBAMP(void)
 
 //OLSR cookies stuff for timers
   OBAMP_alive_gen_timer_cookie =
-      olsr_alloc_timerinfo("OBAMP Alive Generation", &obamp_alive_gen, true);
+      olsr_timer_add("OBAMP Alive Generation", &obamp_alive_gen, true);
   purge_nodes_timer_cookie =
-      olsr_alloc_timerinfo("purge nodes Generation", &purge_nodes, true);
+      olsr_timer_add("purge nodes Generation", &purge_nodes, true);
   mesh_create_timer_cookie =
-      olsr_alloc_timerinfo("mesh create Generation", &mesh_create, true);
+      olsr_timer_add("mesh create Generation", &mesh_create, true);
   tree_create_timer_cookie =
-      olsr_alloc_timerinfo("tree create Generation", &tree_create, true);
+      olsr_timer_add("tree create Generation", &tree_create, true);
   outer_tree_create_timer_cookie =
-      olsr_alloc_timerinfo("outer tree create Generation", &outer_tree_create, true);
+      olsr_timer_add("outer tree create Generation", &outer_tree_create, true);
   unsolicited_tree_destroy_timer_cookie =
-      olsr_alloc_timerinfo("tree destroy Generation", &unsolicited_tree_destroy, true);
+      olsr_timer_add("tree destroy Generation", &unsolicited_tree_destroy, true);
 
 
 //Tells OLSR to launch olsr_parser when the packets for this plugin arrive
@@ -1650,32 +1650,32 @@ InitOBAMP(void)
 
 // start to send alive messages to appear in other joined lists
   OBAMP_alive_timer =
-    olsr_start_timer(OBAMP_ALIVE_EIVAL * MSEC_PER_SEC, OBAMP_JITTER, NULL,
+    olsr_timer_start(OBAMP_ALIVE_EIVAL * MSEC_PER_SEC, OBAMP_JITTER, NULL,
                      OBAMP_alive_gen_timer_cookie);
 
 // start timer to purge nodes from list in softstate fashion
   purge_nodes_timer =
-    olsr_start_timer(_Texpire_timer_ * MSEC_PER_SEC, OBAMP_JITTER, NULL,
+    olsr_timer_start(_Texpire_timer_ * MSEC_PER_SEC, OBAMP_JITTER, NULL,
                      purge_nodes_timer_cookie);
 
 //start timer to create mesh
   mesh_create_timer =
-    olsr_start_timer(OBAMP_MESH_CREATE_IVAL * MSEC_PER_SEC, OBAMP_JITTER, NULL,
+    olsr_timer_start(OBAMP_MESH_CREATE_IVAL * MSEC_PER_SEC, OBAMP_JITTER, NULL,
                      mesh_create_timer_cookie);
 
 //start timer for tree create procedure
   tree_create_timer =
-    olsr_start_timer(OBAMP_TREE_CREATE_IVAL * MSEC_PER_SEC, OBAMP_JITTER, NULL,
+    olsr_timer_start(OBAMP_TREE_CREATE_IVAL * MSEC_PER_SEC, OBAMP_JITTER, NULL,
                      tree_create_timer_cookie);
 
 //start timer for tree create procedure
   outer_tree_create_timer =
-    olsr_start_timer(OBAMP_OUTER_TREE_CREATE_IVAL * MSEC_PER_SEC, OBAMP_JITTER, NULL,
+    olsr_timer_start(OBAMP_OUTER_TREE_CREATE_IVAL * MSEC_PER_SEC, OBAMP_JITTER, NULL,
                      tree_create_timer_cookie);
 
 //start timer for tree create procedure
   unsolicited_tree_destroy_timer =
-    olsr_start_timer(30 * MSEC_PER_SEC, OBAMP_JITTER, NULL,
+    olsr_timer_start(30 * MSEC_PER_SEC, OBAMP_JITTER, NULL,
                      unsolicited_tree_destroy_timer_cookie);
 
 //Create udp server socket for OBAMP signalling and register it to the scheduler
index a4b0508..57f1b48 100644 (file)
@@ -50,7 +50,7 @@
 #include "plugin_loader.h"
 #include "plugin_util.h"
 #include "defs.h"               /* uint8_t, olsr_cnf */
-#include "scheduler.h"          /* olsr_start_timer() */
+#include "scheduler.h"          /* olsr_timer_start() */
 #include "olsr_cfg.h"           /* olsr_cnf() */
 #include "olsr_memcookie.h"        /* olsr_memcookie_add() */
 
index b732818..e2a9fd1 100644 (file)
@@ -138,9 +138,9 @@ olsrd_plugin_init(void)
     return 1;
   }
 
-  event_timer_info = olsr_alloc_timerinfo("Quagga: Event", &zebra_parse, true);
+  event_timer_info = olsr_timer_add("Quagga: Event", &zebra_parse, true);
 
-  olsr_start_timer(1 * MSEC_PER_SEC, 0, NULL, event_timer_info);
+  olsr_timer_start(1 * MSEC_PER_SEC, 0, NULL, event_timer_info);
 
   return 0;
 }
index 22173f3..571de60 100644 (file)
@@ -204,10 +204,10 @@ secure_plugin_init(void)
   olsr_preprocessor_add_function(&secure_preprocessor);
 
   /* create the cookie */
-  timeout_timestamps_timer_info = olsr_alloc_timerinfo("Secure: Timeout Timestamps", &timeout_timestamps, true);
+  timeout_timestamps_timer_info = olsr_timer_add("Secure: Timeout Timestamps", &timeout_timestamps, true);
 
   /* Register timeout - poll every 2 seconds */
-  olsr_start_timer(2 * MSEC_PER_SEC, 0, NULL, timeout_timestamps_timer_info);
+  olsr_timer_start(2 * MSEC_PER_SEC, 0, NULL, timeout_timestamps_timer_info);
 
   return 1;
 }
@@ -556,7 +556,7 @@ check_timestamp(struct interface *olsr_if_config, const union olsr_ip_addr *orig
 
   /* update validtime */
 
-  entry->valtime = GET_TIMESTAMP(TIMESTAMP_HOLD_TIME * 1000);
+  entry->valtime = olsr_timer_getAbsolute(TIMESTAMP_HOLD_TIME * 1000);
 
   return 1;
 }
@@ -632,7 +632,7 @@ send_challenge(struct interface *olsr_if_config, const union olsr_ip_addr *new_h
   memcpy(&entry->addr, new_host, olsr_cnf->ipsize);
 
   /* update validtime - not validated */
-  entry->conftime = GET_TIMESTAMP(EXCHANGE_HOLD_TIME * 1000);
+  entry->conftime = olsr_timer_getAbsolute(EXCHANGE_HOLD_TIME * 1000);
 
   hash = olsr_ip_hashing(new_host);
 
@@ -729,7 +729,7 @@ parse_cres(struct interface *olsr_if_config, uint8_t *in_msg)
   entry->diff = now.tv_sec - msg->timestamp;
 
   /* update validtime - validated entry */
-  entry->valtime = GET_TIMESTAMP(TIMESTAMP_HOLD_TIME * 1000);
+  entry->valtime = olsr_timer_getAbsolute(TIMESTAMP_HOLD_TIME * 1000);
 
   OLSR_DEBUG(LOG_PLUGINS, "[ENC]%s registered with diff %d!\n",
              olsr_ip_to_string(&buf, (union olsr_ip_addr *)&msg->originator), entry->diff);
@@ -821,7 +821,7 @@ parse_rres(uint8_t *in_msg)
   entry->diff = now.tv_sec - msg->timestamp;
 
   /* update validtime - validated entry */
-  entry->valtime = GET_TIMESTAMP(TIMESTAMP_HOLD_TIME * 1000);
+  entry->valtime = olsr_timer_getAbsolute(TIMESTAMP_HOLD_TIME * 1000);
 
   OLSR_DEBUG(LOG_PLUGINS, "[ENC]%s registered with diff %d!\n",
              olsr_ip_to_string(&buf, (union olsr_ip_addr *)&msg->originator), entry->diff);
@@ -865,7 +865,7 @@ parse_challenge(struct interface *olsr_if_config, uint8_t *in_msg)
     entry->prev = &timestamps[hash];
   } else {
     /* Check configuration timeout */
-    if (!TIMED_OUT(entry->conftime)) {
+    if (!olsr_timer_isTimedOut(entry->conftime)) {
       /* If registered - do not accept! */
       OLSR_DEBUG(LOG_PLUGINS, "[ENC]Challenge from registered node...dropping!\n");
       return 0;
@@ -901,7 +901,7 @@ parse_challenge(struct interface *olsr_if_config, uint8_t *in_msg)
   entry->validated = 0;
 
   /* update validtime - not validated */
-  entry->conftime = GET_TIMESTAMP(EXCHANGE_HOLD_TIME * 1000);
+  entry->conftime = olsr_timer_getAbsolute(EXCHANGE_HOLD_TIME * 1000);
 
   /* Build and send response */
 
@@ -1116,7 +1116,7 @@ timeout_timestamps(void *foo __attribute__ ((unused)))
     /*Traverse MID list */
     while (tmp_list != &timestamps[idx]) {
       /*Check if the entry is timed out */
-      if ((TIMED_OUT(tmp_list->valtime)) && (TIMED_OUT(tmp_list->conftime))) {
+      if ((olsr_timer_isTimedOut(tmp_list->valtime)) && (olsr_timer_isTimedOut(tmp_list->conftime))) {
 #if !defined REMOVE_LOG_DEBUG
         struct ipaddr_str buf;
 #endif
index cbae295..c1743ee 100644 (file)
@@ -432,7 +432,7 @@ txtinfo_link(struct comport_connection *con,
     olsr_ip_to_string(&buf_neighip, &lnk->neighbor_iface_addr);
     strscpy(buf_sym, lnk->status == SYM_LINK ? OLSR_YES : OLSR_NO, sizeof(buf_sym));
     strscpy(buf_mrp, lnk->is_mpr ? OLSR_YES : OLSR_NO, sizeof(buf_mrp));
-    olsr_milli_to_txt(&buf_vtime, lnk->link_sym_timer == NULL ? 0 : lnk->link_sym_timer->timer_clock - now_times);
+    olsr_milli_to_txt(&buf_vtime, lnk->link_sym_timer == NULL ? 0 : lnk->link_sym_timer->timer_clock - olsr_timer_getNow());
     snprintf(buf_rawlinkcost, sizeof(buf_rawlinkcost), "%ud", lnk->linkcost);
 
     olsr_get_linkcost_text(lnk->linkcost, false, buf_linkcost, sizeof(buf_linkcost));
@@ -528,7 +528,7 @@ txtinfo_topology(struct comport_connection *con,
     struct tc_edge_entry *tc_edge, *edge_iterator;
     olsr_ip_to_string(&buf_localip, &tc->addr);
     if (tc->validity_timer) {
-      olsr_milli_to_txt(&buf_vtime, tc->validity_timer->timer_clock - now_times);
+      olsr_milli_to_txt(&buf_vtime, tc->validity_timer->timer_clock - olsr_timer_getNow());
     }
     else {
       strscpy(buf_vtime.buf, "0.0", sizeof(buf_vtime));
@@ -654,7 +654,7 @@ txtinfo_hna(struct comport_connection *con,
 
     olsr_ip_to_string(&buf_localip, &tc->addr);
     if (tc->validity_timer) {
-      olsr_milli_to_txt(&buf_vtime, tc->validity_timer->timer_clock - now_times);
+      olsr_milli_to_txt(&buf_vtime, tc->validity_timer->timer_clock - olsr_timer_getNow());
     }
     else {
       strscpy(buf_vtime.buf, "0.0", sizeof(buf_vtime));
@@ -717,7 +717,7 @@ txtinfo_mid(struct comport_connection *con,
     olsr_ip_to_string(&buf_localip, &tc->addr);
     if (tc->validity_timer) {
       if (tc->validity_timer) {
-        olsr_milli_to_txt(&buf_vtime, tc->validity_timer->timer_clock - now_times);
+        olsr_milli_to_txt(&buf_vtime, tc->validity_timer->timer_clock - olsr_timer_getNow());
       }
       else {
         strscpy(buf_vtime.buf, "0.0", sizeof(buf_vtime));
index 3a02d1a..3d2b484 100644 (file)
@@ -129,11 +129,11 @@ int
 olsrd_plugin_init(void)
 {
   /* create the cookie */
-  watchdog_timer_info = olsr_alloc_timerinfo("Watchdog: write alive-file",
+  watchdog_timer_info = olsr_timer_add("Watchdog: write alive-file",
       &olsr_watchdog_write_alivefile, true);
 
   /* Register the watchdog check */
-  olsr_start_timer(watchdog_interval * MSEC_PER_SEC, 0, NULL, watchdog_timer_info);
+  olsr_timer_start(watchdog_interval * MSEC_PER_SEC, 0, NULL, watchdog_timer_info);
 
   return 1;
 }
index bd1f3ea..da70725 100644 (file)
@@ -94,7 +94,7 @@ olsr_delete_duplicate_entry(struct dup_entry *entry)
 {
   avl_delete(entry->tree, &entry->avl);
   entry->tree = NULL;
-  olsr_stop_timer(entry->validity_timer);
+  olsr_timer_stop(entry->validity_timer);
   entry->validity_timer = NULL;
   olsr_memcookie_free(duplicate_mem_cookie, entry);
 }
@@ -119,7 +119,7 @@ olsr_init_duplicate_set(void)
   /*
    * Get some cookies for getting stats to ease troubleshooting.
    */
-  duplicate_timer_info = olsr_alloc_timerinfo("Duplicate Set", &olsr_expire_duplicate_entry, false);
+  duplicate_timer_info = olsr_timer_add("Duplicate Set", &olsr_expire_duplicate_entry, false);
 
   duplicate_mem_cookie = olsr_memcookie_add("dup_entry", sizeof(struct dup_entry));
 }
@@ -147,7 +147,6 @@ olsr_is_duplicate_message(struct olsr_message *m, bool forwarding, enum duplicat
   struct avl_tree *tree;
   struct dup_entry *entry;
   int diff;
-  uint32_t valid_until;
   enum duplicate_status dummy = 0;
 
 #if !defined(REMOVE_LOG_DEBUG)
@@ -160,8 +159,6 @@ olsr_is_duplicate_message(struct olsr_message *m, bool forwarding, enum duplicat
 
   tree = forwarding ? &forward_set : &processing_set;
 
-  valid_until = GET_TIMESTAMP(DUPLICATE_VTIME);
-
   /* Check if entry exists */
   entry = (struct dup_entry *)avl_find(tree, &m->originator);
   if (entry == NULL) {
@@ -169,7 +166,7 @@ olsr_is_duplicate_message(struct olsr_message *m, bool forwarding, enum duplicat
     if (entry != NULL) {
       avl_insert(tree, &entry->avl);
       entry->tree = tree;
-      entry->validity_timer = olsr_start_timer(DUPLICATE_CLEANUP_INTERVAL, DUPLICATE_CLEANUP_JITTER,
+      entry->validity_timer = olsr_timer_start(DUPLICATE_CLEANUP_INTERVAL, DUPLICATE_CLEANUP_JITTER,
                                                entry, duplicate_timer_info);
     }
 
@@ -180,7 +177,7 @@ olsr_is_duplicate_message(struct olsr_message *m, bool forwarding, enum duplicat
   /*
    * Refresh timer.
    */
-  olsr_change_timer(entry->validity_timer, DUPLICATE_CLEANUP_INTERVAL, DUPLICATE_CLEANUP_JITTER);
+  olsr_timer_change(entry->validity_timer, DUPLICATE_CLEANUP_INTERVAL, DUPLICATE_CLEANUP_JITTER);
 
   diff = olsr_seqno_diff(m->seqno, entry->seqnr);
 
@@ -245,25 +242,25 @@ olsr_print_duplicate_table(void)
   const int ipwidth = olsr_cnf->ip_version == AF_INET ? 15 : 30;
 
   OLSR_INFO(LOG_DUPLICATE_SET, "\n--- %s ------------------------------------------------- DUPLICATE SET (forwarding)\n\n",
-            olsr_wallclock_string());
+            olsr_timer_getWallclockString());
   OLSR_INFO_NH(LOG_DUPLICATE_SET, "%-*s %8s %s\n", ipwidth, "Node IP", "DupArray", "VTime");
 
   OLSR_FOR_ALL_FORWARD_DUP_ENTRIES(entry, iterator) {
     struct ipaddr_str addrbuf;
     OLSR_INFO_NH(LOG_DUPLICATE_SET, "%-*s %08x %s\n",
                  ipwidth, olsr_ip_to_string(&addrbuf, entry->avl.key), entry->array,
-                 olsr_clock_string(entry->validity_timer->timer_clock));
+                 olsr_timer_getClockString(entry->validity_timer->timer_clock));
   }
 
     OLSR_INFO(LOG_DUPLICATE_SET, "\n--- %s ------------------------------------------------- DUPLICATE SET (processing)\n\n",
-              olsr_wallclock_string());
+              olsr_timer_getWallclockString());
   OLSR_INFO_NH(LOG_DUPLICATE_SET, "%-*s %8s %s\n", ipwidth, "Node IP", "DupArray", "VTime");
 
   OLSR_FOR_ALL_PROCESS_DUP_ENTRIES(entry, iterator) {
     struct ipaddr_str addrbuf;
     OLSR_INFO_NH(LOG_DUPLICATE_SET, "%-*s %08x %s\n",
                  ipwidth, olsr_ip_to_string(&addrbuf, entry->avl.key), entry->array,
-                 olsr_clock_string(entry->validity_timer->timer_clock));
+                 olsr_timer_getClockString(entry->validity_timer->timer_clock));
   }
 #endif
 }
index 366edb0..92669ae 100644 (file)
@@ -57,7 +57,7 @@ struct dup_entry {
   uint16_t seqnr;
   uint16_t too_low_counter;
   uint32_t array;
-  struct timer_entry *validity_timer;
+  struct olsr_timer_entry *validity_timer;
   struct avl_tree *tree;               /* backpointer to owning tree */
 };
 
index d7f9029..00bff88 100644 (file)
@@ -64,7 +64,7 @@ olsr_init_hna_set(void)
 {
   OLSR_INFO(LOG_HNA, "Initialize HNA set...\n");
 
-  hna_net_timer_info = olsr_alloc_timerinfo("HNA Network", &olsr_expire_hna_net_entry, false);
+  hna_net_timer_info = olsr_timer_add("HNA Network", &olsr_expire_hna_net_entry, false);
 
   hna_net_mem_cookie = olsr_memcookie_add("hna_net", sizeof(struct hna_net));
 }
@@ -137,7 +137,7 @@ olsr_delete_hna_net(struct hna_net *hna_net)
   avl_delete(&tc->hna_tree, &hna_net->hna_tc_node);
 
   if (hna_net->hna_net_timer) {
-    olsr_stop_timer(hna_net->hna_net_timer);
+    olsr_timer_stop(hna_net->hna_net_timer);
     hna_net->hna_net_timer = NULL;
   }
   /*
@@ -222,7 +222,7 @@ olsr_update_hna_entry(const union olsr_ip_addr *gw, const struct olsr_ip_prefix
   /*
    * Start, or refresh the timer, whatever is appropriate.
    */
-  olsr_set_timer(&net_entry->hna_net_timer, vtime,
+  olsr_timer_set(&net_entry->hna_net_timer, vtime,
                  OLSR_HNA_NET_JITTER, net_entry, hna_net_timer_info);
 }
 
@@ -241,7 +241,7 @@ olsr_print_hna_set(void)
   struct ipprefix_str prefixstr;
   struct hna_net *hna_net, *hna_iterator;
 
-  OLSR_INFO(LOG_HNA, "\n--- %s ------------------------------------------------- HNA\n\n", olsr_wallclock_string());
+  OLSR_INFO(LOG_HNA, "\n--- %s ------------------------------------------------- HNA\n\n", olsr_timer_getWallclockString());
 
   OLSR_FOR_ALL_TC_ENTRIES(tc, tc_iterator) {
     OLSR_INFO_NH(LOG_HNA, "HNA-gw %s:\n", olsr_ip_to_string(&buf, &tc->addr));
index 5f78192..6afa9fe 100644 (file)
@@ -51,7 +51,7 @@
 struct hna_net {
   struct avl_node hna_tc_node;         /* node in the per-tc hna tree */
   struct olsr_ip_prefix hna_prefix;    /* the prefix, key */
-  struct timer_entry *hna_net_timer;   /* expiration timer */
+  struct olsr_timer_entry *hna_net_timer;   /* expiration timer */
   struct tc_entry *hna_tc;             /* backpointer to the owning tc entry */
   uint16_t tc_entry_seqno;             /* sequence number for cleanup */
 };
index b2107d2..0c5b30b 100644 (file)
@@ -103,8 +103,8 @@ init_interfaces(void)
 
   interface_lost_mem_cookie = olsr_memcookie_add("Interface lost", sizeof(struct interface_lost));
 
-  interface_poll_timerinfo = olsr_alloc_timerinfo("Interface Polling", &check_interface_updates, true);
-  hello_gen_timerinfo = olsr_alloc_timerinfo("Hello Generation", &generate_hello, true);
+  interface_poll_timerinfo = olsr_timer_add("Interface Polling", &check_interface_updates, true);
+  hello_gen_timerinfo = olsr_timer_add("Hello Generation", &generate_hello, true);
 
   OLSR_INFO(LOG_INTERFACE, "\n ---- Interface configuration ---- \n\n");
 
@@ -114,7 +114,7 @@ init_interfaces(void)
   }
 
   /* Kick a periodic timer for the network interface update function */
-  olsr_start_timer(olsr_cnf->nic_chgs_pollrate, 5,
+  olsr_timer_start(olsr_cnf->nic_chgs_pollrate, 5,
                    NULL, interface_poll_timerinfo);
 
   return (!list_is_empty(&interface_head));
@@ -140,7 +140,7 @@ static void add_lost_interface_ip(union olsr_ip_addr *ip, uint32_t hello_timeout
   lost = olsr_memcookie_malloc(interface_lost_mem_cookie);
   lost->node.key = &lost->ip;
   lost->ip = *ip;
-  lost->valid_until = olsr_getTimestamp(hello_timeout * 2);
+  lost->valid_until = olsr_timer_getAbsolute(hello_timeout * 2);
   avl_insert(&interface_lost_tree, &lost->node);
 
   OLSR_DEBUG(LOG_INTERFACE, "Added %s to lost interface list for %d ms\n",
@@ -195,8 +195,8 @@ add_interface(struct olsr_if_config *iface) {
   set_buffer_timer(ifp);
 
   /* Register sockets */
-  add_olsr_socket(ifp->olsr_socket, &olsr_input, NULL, NULL, SP_PR_READ);
-  add_olsr_socket(ifp->send_socket, &olsr_input, NULL, NULL, SP_PR_READ);
+  olsr_socket_add(ifp->olsr_socket, &olsr_input, NULL, OLSR_SOCKET_READ);
+  olsr_socket_add(ifp->send_socket, &olsr_input, NULL, OLSR_SOCKET_READ);
 
   os_socket_set_olsr_options(ifp, ifp->olsr_socket, &ifp->int_multicast);
   os_socket_set_olsr_options(ifp, ifp->send_socket, &ifp->int_multicast);
@@ -227,7 +227,7 @@ add_interface(struct olsr_if_config *iface) {
    * Register functions for periodic message generation
    */
   ifp->hello_gen_timer =
-    olsr_start_timer(iface->cnf->hello_params.emission_interval,
+    olsr_timer_start(iface->cnf->hello_params.emission_interval,
                      HELLO_JITTER, ifp, hello_gen_timerinfo);
   ifp->hello_interval = iface->cnf->hello_params.emission_interval;
   ifp->hello_validity = iface->cnf->hello_params.validity_time;
@@ -289,7 +289,7 @@ check_interface_updates(void *foo __attribute__ ((unused)))
 
   /* clean up lost interface tree */
   OLSR_FOR_ALL_LOSTIF_ENTRIES(lost, iterator) {
-    if (olsr_isTimedOut(lost->valid_until)) {
+    if (olsr_timer_isTimedOut(lost->valid_until)) {
       remove_lost_interface_ip(lost);
     }
   }
@@ -325,13 +325,13 @@ remove_interface(struct interface *ifp)
   /*
    * Deregister functions for periodic message generation
    */
-  olsr_stop_timer(ifp->hello_gen_timer);
+  olsr_timer_stop(ifp->hello_gen_timer);
   ifp->hello_gen_timer = NULL;
 
   /*
    * Stop interface pacing.
    */
-  olsr_stop_timer(ifp->buffer_hold_timer);
+  olsr_timer_stop(ifp->buffer_hold_timer);
   ifp->buffer_hold_timer = NULL;
 
   /*
@@ -345,7 +345,7 @@ remove_interface(struct interface *ifp)
   unlock_interface(ifp);
 
   /* Close olsr socket */
-  remove_olsr_socket(ifp->olsr_socket, &olsr_input, NULL);
+  olsr_socket_remove(ifp->olsr_socket, &olsr_input);
   os_close(ifp->olsr_socket);
   os_close(ifp->send_socket);
   ifp->olsr_socket = -1;
index 9fe8d69..28cb261 100644 (file)
@@ -145,10 +145,10 @@ struct interface {
   uint16_t olsr_seqnum;                /* Olsr message seqno */
 
   /* Periodic message generation timers */
-  struct timer_entry *hello_gen_timer;
+  struct olsr_timer_entry *hello_gen_timer;
 
   /* Message build related  */
-  struct timer_entry *buffer_hold_timer;        /* Timer for message batching */
+  struct olsr_timer_entry *buffer_hold_timer;        /* Timer for message batching */
   struct olsr_netbuf netbuf;           /* the build buffer */
 
 #ifdef linux
index b7684d1..1abefa4 100644 (file)
@@ -91,9 +91,9 @@ olsr_init_link_set(void)
   /* Init list head */
   list_init_head(&link_entry_head);
 
-  link_dead_timer_info = olsr_alloc_timerinfo("Link dead", &olsr_expire_link_entry, false);
-  link_loss_timer_info = olsr_alloc_timerinfo("Link loss", &olsr_expire_link_loss_timer, true);
-  link_sym_timer_info = olsr_alloc_timerinfo("Link SYM", &olsr_expire_link_sym_timer, false);
+  link_dead_timer_info = olsr_timer_add("Link dead", &olsr_expire_link_entry, false);
+  link_loss_timer_info = olsr_timer_add("Link loss", &olsr_expire_link_loss_timer, true);
+  link_sym_timer_info = olsr_timer_add("Link SYM", &olsr_expire_link_sym_timer, false);
 
 }
 
@@ -116,7 +116,7 @@ lookup_link_status(const struct link_entry *entry)
     return SYM_LINK;
   }
 
-  if (!TIMED_OUT(entry->ASYM_time)) {
+  if (!olsr_timer_isTimedOut(entry->ASYM_time)) {
     return ASYM_LINK;
   }
 
@@ -231,13 +231,13 @@ olsr_delete_link_entry(struct link_entry *link)
   }
 
   /* Kill running timers */
-  olsr_stop_timer(link->link_timer);
+  olsr_timer_stop(link->link_timer);
   link->link_timer = NULL;
 
-  olsr_stop_timer(link->link_sym_timer);
+  olsr_timer_stop(link->link_sym_timer);
   link->link_sym_timer = NULL;
 
-  olsr_stop_timer(link->link_loss_timer);
+  olsr_timer_stop(link->link_loss_timer);
   link->link_loss_timer = NULL;
 
   list_remove(&link->link_list);
@@ -286,7 +286,7 @@ olsr_expire_link_loss_timer(void *context)
   olsr_lq_hello_handler(link, true);
 
   /* next timeout in 1.0 x htime */
-  olsr_change_timer(link->link_loss_timer, link->loss_helloint, OLSR_LINK_LOSS_JITTER);
+  olsr_timer_change(link->link_loss_timer, link->loss_helloint, OLSR_LINK_LOSS_JITTER);
 }
 
 /**
@@ -343,7 +343,7 @@ olsr_expire_link_entry(void *context)
 static void
 olsr_set_link_timer(struct link_entry *link, unsigned int rel_timer)
 {
-  olsr_set_timer(&link->link_timer, rel_timer, OLSR_LINK_JITTER,
+  olsr_timer_set(&link->link_timer, rel_timer, OLSR_LINK_JITTER,
                  link, link_dead_timer_info);
 }
 
@@ -411,7 +411,7 @@ add_link_entry(const union olsr_ip_addr *local,
 
   link->loss_helloint = htime;
 
-  olsr_set_timer(&link->link_loss_timer, htime + htime / 2,
+  olsr_timer_set(&link->link_loss_timer, htime + htime / 2,
                  OLSR_LINK_LOSS_JITTER, link, link_loss_timer_info);
 
   set_loss_link_multiplier(link);
@@ -527,20 +527,20 @@ update_link_entry(const union olsr_ip_addr *local,
 
   /* Update ASYM_time */
   entry->vtime = message->comm->vtime;
-  entry->ASYM_time = GET_TIMESTAMP(message->comm->vtime);
+  entry->ASYM_time = olsr_timer_getAbsolute(message->comm->vtime);
 
   entry->status = check_link_status(message, in_if);
 
   switch (entry->status) {
   case (LOST_LINK):
-    olsr_stop_timer(entry->link_sym_timer);
+    olsr_timer_stop(entry->link_sym_timer);
     entry->link_sym_timer = NULL;
     break;
   case (SYM_LINK):
   case (ASYM_LINK):
 
     /* L_SYM_time = current time + validity time */
-    olsr_set_timer(&entry->link_sym_timer, message->comm->vtime,
+    olsr_timer_set(&entry->link_sym_timer, message->comm->vtime,
                    OLSR_LINK_SYM_JITTER, entry, link_sym_timer_info);
 
     /* L_time = L_SYM_time + NEIGHB_HOLD_TIME */
@@ -551,7 +551,7 @@ update_link_entry(const union olsr_ip_addr *local,
 
   /* L_time = max(L_time, L_ASYM_time) */
   if (entry->link_timer && (entry->link_timer->timer_clock < entry->ASYM_time)) {
-    olsr_set_link_timer(entry, TIME_DUE(entry->ASYM_time));
+    olsr_set_link_timer(entry, olsr_timer_getRelative(entry->ASYM_time));
   }
 
   /* Update neighbor */
@@ -664,7 +664,7 @@ olsr_print_link_set(void)
   }
   totaltxt[totaltxt_len] = 0;
 
-  OLSR_INFO(LOG_LINKS, "\n--- %s ---------------------------------------------------- LINKS\n\n", olsr_wallclock_string());
+  OLSR_INFO(LOG_LINKS, "\n--- %s ---------------------------------------------------- LINKS\n\n", olsr_timer_getWallclockString());
   OLSR_INFO_NH(LOG_LINKS, "%-*s  %-6s %s %s\n", addrsize, "IP address", "hyst", totaltxt , olsr_get_linklabel(0));
 
   OLSR_FOR_ALL_LINK_ENTRIES(walker, iterator) {
@@ -720,7 +720,7 @@ olsr_update_packet_loss(struct link_entry *entry)
   olsr_lq_hello_handler(entry, false);
 
   /* timeout for the first lost packet is 1.5 x htime */
-  olsr_set_timer(&entry->link_loss_timer, entry->loss_helloint + entry->loss_helloint / 2,
+  olsr_timer_set(&entry->link_loss_timer, entry->loss_helloint + entry->loss_helloint / 2,
                  OLSR_LINK_LOSS_JITTER, entry, link_loss_timer_info);
 }
 
index 9720300..2f38ac4 100644 (file)
@@ -60,8 +60,8 @@ struct link_entry {
   union olsr_ip_addr neighbor_iface_addr;
   struct interface *inter;
   char *if_name;
-  struct timer_entry *link_timer;
-  struct timer_entry *link_sym_timer;
+  struct olsr_timer_entry *link_timer;
+  struct olsr_timer_entry *link_sym_timer;
   uint32_t ASYM_time;
   uint32_t vtime;
   struct nbr_entry *neighbor;
@@ -76,7 +76,7 @@ struct link_entry {
    * packet loss
    */
   uint32_t loss_helloint;
-  struct timer_entry *link_loss_timer;
+  struct olsr_timer_entry *link_loss_timer;
 
   /* user defined multiplies for link quality, multiplied with 65536 */
   uint32_t loss_link_multiplier;
index 9cf1552..6190655 100644 (file)
@@ -107,7 +107,7 @@ int rtnetlink_register_socket(int rtnl_mgrp)
     return -1;
   }
 
-  add_olsr_socket(sock, NULL, &rtnetlink_read, NULL, SP_IMM_READ);
+  olsr_socket_add(sock, &rtnetlink_read, NULL, OLSR_SOCKET_READ);
   return sock;
 }
 
index 0cb748f..0266ec9 100644 (file)
@@ -102,9 +102,9 @@ static char copyright_string[] __attribute__ ((unused)) =
 static char pulsedata[] = "\\|/-";
 static uint8_t pulse_state = 0;
 
-static struct timer_entry *hna_gen_timer;
-static struct timer_entry *mid_gen_timer;
-static struct timer_entry *tc_gen_timer;
+static struct olsr_timer_entry *hna_gen_timer;
+static struct olsr_timer_entry *mid_gen_timer;
+static struct olsr_timer_entry *tc_gen_timer;
 
 static void
 generate_stdout_pulse(void *foo __attribute__ ((unused)))
@@ -248,10 +248,10 @@ main(int argc, char *argv[])
   olsr_callback_init();
 
   /* generate global timers */
-  pulse_timer_info = olsr_alloc_timerinfo("Stdout pulse", &generate_stdout_pulse, true);
-  tc_gen_timer_info = olsr_alloc_timerinfo("TC generation", &olsr_output_lq_tc, true);
-  mid_gen_timer_info = olsr_alloc_timerinfo("MID generation", &generate_mid, true);
-  hna_gen_timer_info = olsr_alloc_timerinfo("HNA generation", &generate_hna, true);
+  pulse_timer_info = olsr_timer_add("Stdout pulse", &generate_stdout_pulse, true);
+  tc_gen_timer_info = olsr_timer_add("TC generation", &olsr_output_lq_tc, true);
+  mid_gen_timer_info = olsr_timer_add("MID generation", &generate_mid, true);
+  hna_gen_timer_info = olsr_timer_add("HNA generation", &generate_hna, true);
 
   /* initialize plugin system */
   olsr_init_pluginsystem();
@@ -352,7 +352,7 @@ main(int argc, char *argv[])
 
 #if !defined WINCE
   if (olsr_cnf->log_target_stderr > 0 && isatty(STDOUT_FILENO)) {
-    olsr_start_timer(STDOUT_PULSE_INT, 0, NULL, pulse_timer_info);
+    olsr_timer_start(STDOUT_PULSE_INT, 0, NULL, pulse_timer_info);
   }
 #endif
 
@@ -409,11 +409,11 @@ main(int argc, char *argv[])
   link_changes = false;
 
   tc_gen_timer =
-    olsr_start_timer(olsr_cnf->tc_params.emission_interval, TC_JITTER, NULL, tc_gen_timer_info);
+    olsr_timer_start(olsr_cnf->tc_params.emission_interval, TC_JITTER, NULL, tc_gen_timer_info);
   mid_gen_timer =
-    olsr_start_timer(olsr_cnf->mid_params.emission_interval, MID_JITTER, NULL, mid_gen_timer_info);
+    olsr_timer_start(olsr_cnf->mid_params.emission_interval, MID_JITTER, NULL, mid_gen_timer_info);
   hna_gen_timer =
-    olsr_start_timer(olsr_cnf->hna_params.emission_interval, HNA_JITTER, NULL, hna_gen_timer_info);
+    olsr_timer_start(olsr_cnf->hna_params.emission_interval, HNA_JITTER, NULL, hna_gen_timer_info);
 
   /* enable default plugins */
   olsr_plugins_enable(PLUGIN_TYPE_DEFAULT, true);
@@ -422,13 +422,13 @@ main(int argc, char *argv[])
   app_state = STATE_RUNNING;
   olsr_scheduler();
 
-  olsr_stop_timer(tc_gen_timer);
+  olsr_timer_stop(tc_gen_timer);
   tc_gen_timer = NULL;
 
-  olsr_stop_timer(mid_gen_timer);
+  olsr_timer_stop(mid_gen_timer);
   mid_gen_timer = NULL;
 
-  olsr_stop_timer(hna_gen_timer);
+  olsr_timer_stop(hna_gen_timer);
   hna_gen_timer = NULL;
 
   exitcode = olsr_cnf->exit_value;
@@ -578,7 +578,7 @@ olsr_shutdown(void)
 #endif
 
   /* Close and delete all sockets */
-  olsr_flush_sockets();
+  olsr_socket_cleanup();
 
   /* Stop and delete all timers. */
   olsr_flush_timers();
index c620479..37ac4a2 100644 (file)
@@ -78,7 +78,7 @@ olsr_init_mid_set(void)
   /*
    * Get some cookies for getting stats to ease troubleshooting.
    */
-  mid_validity_timer_info = olsr_alloc_timerinfo("MID validity", &olsr_expire_mid_entries, false);
+  mid_validity_timer_info = olsr_timer_add("MID validity", &olsr_expire_mid_entries, false);
 
   mid_address_mem_cookie = olsr_memcookie_add("MID address", sizeof(struct mid_entry));
 }
@@ -108,7 +108,7 @@ olsr_expire_mid_entries(void *context)
 static void
 olsr_set_mid_timer(struct mid_entry *mid, uint32_t rel_timer)
 {
-  olsr_set_timer(&mid->mid_timer, rel_timer, OLSR_MID_JITTER, mid, mid_validity_timer_info);
+  olsr_timer_set(&mid->mid_timer, rel_timer, OLSR_MID_JITTER, mid, mid_validity_timer_info);
 }
 
 /**
@@ -374,7 +374,7 @@ olsr_delete_mid_entry(struct mid_entry *alias)
   tc = alias->mid_tc;
 
   /* kill timer */
-  olsr_stop_timer(alias->mid_timer);
+  olsr_timer_stop(alias->mid_timer);
   alias->mid_timer = NULL;
 
   /*
@@ -421,7 +421,7 @@ olsr_print_mid_set(void)
   struct mid_entry *alias, *mid_iterator;
   struct ipaddr_str buf1, buf2;
 
-  OLSR_INFO(LOG_MID, "\n--- %s ------------------------------------------------- MID\n\n", olsr_wallclock_string());
+  OLSR_INFO(LOG_MID, "\n--- %s ------------------------------------------------- MID\n\n", olsr_timer_getWallclockString());
 
   OLSR_FOR_ALL_TC_ENTRIES(tc, tc_iterator) {
     OLSR_FOR_ALL_TC_MID_ENTRIES(tc, alias, mid_iterator) {
index d2754d8..ce69e3e 100644 (file)
@@ -53,7 +53,7 @@ struct mid_entry {
   struct avl_node mid_node;            /* node in the global mid tree */
   union olsr_ip_addr mid_alias_addr;   /* key for both trees */
   struct tc_entry *mid_tc;             /* backpointer to owning tc entry */
-  struct timer_entry *mid_timer;       /* Vtime */
+  struct olsr_timer_entry *mid_timer;       /* Vtime */
 };
 
 #define OLSR_FOR_ALL_MID_ENTRIES(mid_alias, iterator) avl_for_each_element_safe(&mid_tree, mid_alias, mid_node, iterator)
index fd0d940..94d6077 100644 (file)
@@ -77,7 +77,7 @@ olsr_init_neighbor_table(void)
   avl_init(&nbr_tree, avl_comp_default, false, NULL);
   avl_init(&nbr2_tree, avl_comp_default, false, NULL);
 
-  nbr_connector_timer_info = olsr_alloc_timerinfo("Neighbor connector", &olsr_expire_nbr_con, false);
+  nbr_connector_timer_info = olsr_timer_add("Neighbor connector", &olsr_expire_nbr_con, false);
   nbr_connector_mem_cookie = olsr_memcookie_add("Neighbor connector", sizeof(struct nbr_con));
 
   nbr_mem_cookie = olsr_memcookie_add("1-Hop Neighbor", sizeof(struct nbr_entry));
@@ -357,7 +357,7 @@ olsr_link_nbr_nbr2(struct nbr_entry *nbr, const union olsr_ip_addr *nbr2_addr, u
    */
   connector = olsr_lookup_nbr_con_entry(nbr, nbr2_addr);
   if (connector) {
-    olsr_change_timer(connector->nbr2_con_timer, vtime, OLSR_NBR2_LIST_JITTER);
+    olsr_timer_change(connector->nbr2_con_timer, vtime, OLSR_NBR2_LIST_JITTER);
     return connector;
   }
 
@@ -378,7 +378,7 @@ olsr_link_nbr_nbr2(struct nbr_entry *nbr, const union olsr_ip_addr *nbr2_addr, u
 
   connector->path_linkcost = LINK_COST_BROKEN;
 
-  connector->nbr2_con_timer = olsr_start_timer(vtime, OLSR_NBR2_LIST_JITTER,
+  connector->nbr2_con_timer = olsr_timer_start(vtime, OLSR_NBR2_LIST_JITTER,
       connector, nbr_connector_timer_info);
 
   return connector;
@@ -390,7 +390,7 @@ olsr_link_nbr_nbr2(struct nbr_entry *nbr, const union olsr_ip_addr *nbr2_addr, u
  */
 static void
 internal_delete_nbr_con(struct nbr_con *connector) {
-  olsr_stop_timer(connector->nbr2_con_timer);
+  olsr_timer_stop(connector->nbr2_con_timer);
   connector->nbr2_con_timer = NULL;
 
   avl_delete(&connector->nbr->con_tree, &connector->nbr_tree_node);
@@ -482,7 +482,7 @@ olsr_print_neighbor_table(void)
   bool first;
 
   OLSR_INFO(LOG_NEIGHTABLE, "\n--- %s ------------------------------------------------ NEIGHBORS\n\n"
-            "%-*s\tSYM\tMPR\tMPRS\twill\n", olsr_wallclock_string(), ipwidth, "IP address");
+            "%-*s\tSYM\tMPR\tMPRS\twill\n", olsr_timer_getWallclockString(), ipwidth, "IP address");
 
   OLSR_FOR_ALL_NBR_ENTRIES(nbr, nbr_iterator) {
 
@@ -500,7 +500,7 @@ olsr_print_neighbor_table(void)
   }
 
   OLSR_INFO(LOG_2NEIGH, "\n--- %s ----------------------- TWO-HOP NEIGHBORS\n\n"
-            "IP addr (2-hop)  IP addr (1-hop)  Total cost\n", olsr_wallclock_string());
+            "IP addr (2-hop)  IP addr (1-hop)  Total cost\n", olsr_timer_getWallclockString());
 
   OLSR_FOR_ALL_NBR2_ENTRIES(nbr2, nbr2_iterator) {
     first = true;
index 3858120..62b5bfd 100644 (file)
@@ -61,7 +61,7 @@ struct nbr_con {
   struct nbr_entry *nbr;
   struct nbr2_entry *nbr2;
 
-  struct timer_entry *nbr2_con_timer;
+  struct olsr_timer_entry *nbr2_con_timer;
 
   olsr_linkcost second_hop_linkcost;
   olsr_linkcost path_linkcost;
index 901f774..6e12585 100644 (file)
@@ -115,7 +115,7 @@ init_net(void)
     olsr_add_invalid_address(&addr);
   }
 
-  buffer_hold_timer_info = olsr_alloc_timerinfo("Buffer writeback", olsr_expire_buffer_timer, false);
+  buffer_hold_timer_info = olsr_timer_add("Buffer writeback", olsr_expire_buffer_timer, false);
 }
 
 /**
@@ -169,7 +169,7 @@ set_buffer_timer(struct interface *ifn)
    * been drained. Flush the buffer in second or so.
    */
   ifn->buffer_hold_timer =
-    olsr_start_timer(OLSR_BUFFER_HOLD_TIME, OLSR_BUFFER_HOLD_JITTER,
+    olsr_timer_start(OLSR_BUFFER_HOLD_TIME, OLSR_BUFFER_HOLD_JITTER,
                      ifn, buffer_hold_timer_info);
 }
 
index 6917de1..4ee6d25 100644 (file)
@@ -234,8 +234,8 @@ olsr_init_tables(void)
 
   /* Start periodic SPF and RIB recalculation */
   if (olsr_cnf->lq_dinter > 0) {
-    periodic_spf_timer_info = olsr_alloc_timerinfo("Periodic SPF", &olsr_trigger_forced_update, true);
-    olsr_start_timer(olsr_cnf->lq_dinter, 5,
+    periodic_spf_timer_info = olsr_timer_add("Periodic SPF", &olsr_trigger_forced_update, true);
+    olsr_timer_start(olsr_cnf->lq_dinter, 5,
                      NULL, periodic_spf_timer_info);
   }
 }
@@ -384,8 +384,8 @@ olsr_init_willingness(void)
     /* Run it first and then periodic. */
     olsr_update_willingness(NULL);
 
-    willingness_timer_info = olsr_alloc_timerinfo("Update Willingness", &olsr_update_willingness, true);
-    olsr_start_timer(olsr_cnf->will_int, 5, NULL, willingness_timer_info);
+    willingness_timer_info = olsr_timer_add("Update Willingness", &olsr_update_willingness, true);
+    olsr_timer_start(olsr_cnf->will_int, 5, NULL, willingness_timer_info);
   }
 }
 
index 75da7f6..4f1f245 100644 (file)
@@ -97,7 +97,7 @@ olsr_com_init(bool failfast) {
   connection_cookie =
       olsr_memcookie_add("comport connections", sizeof(struct comport_connection));
 
-  connection_timeout = olsr_alloc_timerinfo("comport timout",
+  connection_timeout = olsr_timer_add("comport timout",
       &olsr_com_timeout_handler, false);
 
   connection_http_count = 0;
@@ -115,8 +115,7 @@ olsr_com_init(bool failfast) {
       }
     }
     else {
-      add_olsr_socket(comsocket_http, &olsr_com_parse_request, NULL, NULL,
-          SP_PR_READ);
+      olsr_socket_add(comsocket_http, &olsr_com_parse_request, NULL, OLSR_SOCKET_READ);
     }
   }
   if (olsr_cnf->comport_txt > 0) {
@@ -126,8 +125,7 @@ olsr_com_init(bool failfast) {
       }
     }
     else {
-      add_olsr_socket(comsocket_txt, &olsr_com_parse_request, NULL, NULL,
-          SP_PR_READ);
+      olsr_socket_add(comsocket_txt, &olsr_com_parse_request, NULL, OLSR_SOCKET_READ);
     }
   }
 }
@@ -145,7 +143,7 @@ olsr_com_destroy(void) {
 
 void
 olsr_com_activate_output(struct comport_connection *con) {
-  enable_olsr_socket(con->fd, &olsr_com_parse_connection, NULL, SP_PR_WRITE);
+  olsr_socket_enable(con->fd, &olsr_com_parse_connection, OLSR_SOCKETPOLL_WRITE);
 }
 
 static int
@@ -269,10 +267,9 @@ olsr_com_parse_request(int fd, void *data __attribute__ ((unused)), unsigned int
   OLSR_DEBUG(LOG_COMPORT, "Got connection through socket %d from %s.\n",
       sock, olsr_ip_to_string(&buf, &con->addr));
 
-  con->timeout = olsr_start_timer(con->timeout_value, 0, con, connection_timeout);
+  con->timeout = olsr_timer_start(con->timeout_value, 0, con, connection_timeout);
 
-  add_olsr_socket(sock, &olsr_com_parse_connection, NULL, con, SP_PR_READ
-      | SP_PR_WRITE);
+  olsr_socket_add(sock, &olsr_com_parse_connection, con, OLSR_SOCKET_READ | OLSR_SOCKETPOLL_WRITE);
 
   list_add_after(&olsr_comport_head, &con->node);
 }
@@ -290,7 +287,7 @@ olsr_com_cleanup_session(struct comport_connection *con) {
   if (con->stop_handler) {
     con->stop_handler(con);
   }
-  remove_olsr_socket(con->fd, &olsr_com_parse_connection, NULL);
+  olsr_socket_remove(con->fd, &olsr_com_parse_connection);
   os_close(con->fd);
 
   abuf_free(&con->in);
@@ -314,7 +311,7 @@ olsr_com_parse_connection(int fd, void *data, unsigned int flags) {
 
   OLSR_DEBUG(LOG_COMPORT, "Parsing connection of socket %d\n", fd);
   /* read data if necessary */
-  if (flags & SP_PR_READ) {
+  if (flags & OLSR_SOCKET_READ) {
     char buffer[1024];
     int len;
 
@@ -368,7 +365,7 @@ olsr_com_parse_connection(int fd, void *data, unsigned int flags) {
       con->send_as = PLAIN;
     }
 
-    if (flags & SP_PR_WRITE) {
+    if (flags & OLSR_SOCKETPOLL_WRITE) {
       int len;
 
       len = send(fd, con->out.buf, con->out.len, 0);
@@ -382,12 +379,12 @@ olsr_com_parse_connection(int fd, void *data, unsigned int flags) {
       }
     } else {
       OLSR_DEBUG(LOG_COMPORT, "  activating output in scheduler\n");
-      enable_olsr_socket(fd, &olsr_com_parse_connection, NULL, SP_PR_WRITE);
+      olsr_socket_enable(fd, &olsr_com_parse_connection, OLSR_SOCKETPOLL_WRITE);
     }
   }
   if (con->out.len == 0) {
     OLSR_DEBUG(LOG_COMPORT, "  deactivating output in scheduler\n");
-    disable_olsr_socket(fd, &olsr_com_parse_connection, NULL, SP_PR_WRITE);
+    olsr_socket_disable(fd, &olsr_com_parse_connection, OLSR_SOCKETPOLL_WRITE);
     if (con->state == SEND_AND_QUIT) {
       con->state = CLEANUP;
     }
@@ -397,7 +394,7 @@ olsr_com_parse_connection(int fd, void *data, unsigned int flags) {
   if (con->state == CLEANUP) {
     OLSR_DEBUG(LOG_COMPORT, "  cleanup\n");
     /* clean up connection by calling timeout directly */
-    olsr_stop_timer(con->timeout);
+    olsr_timer_stop(con->timeout);
     con->timeout = NULL;
     olsr_com_cleanup_session(con);
   }
index b4be484..b83f0c2 100644 (file)
@@ -95,7 +95,7 @@ struct comport_connection {
   enum connection_state state;
   enum http_header_type send_as;
   const char *http_contenttype;
-  struct timer_entry *timeout;
+  struct olsr_timer_entry *timeout;
   bool is_http, show_echo;
   struct autobuf in;
 };
index 649cd29..b5c2076 100644 (file)
@@ -56,7 +56,7 @@
 #define OLSR_FOR_EACH_TXTCMD_ENTRY(cmd, iterator) avl_for_each_element_safe(&txt_normal_tree, cmd, node, iterator)
 
 struct txt_repeat_data {
-  struct timer_entry *timer;
+  struct olsr_timer_entry *timer;
   struct autobuf *buf;
   char *cmd;
   char *param;
@@ -136,7 +136,7 @@ olsr_com_init_txt(void) {
 
   txtcommand_cookie = olsr_memcookie_add("comport txt commands", sizeof(struct olsr_txtcommand));
 
-  txt_repeat_timerinfo = olsr_alloc_timerinfo("txt repeat timer", olsr_txt_repeat_timer, true);
+  txt_repeat_timerinfo = olsr_timer_add("txt repeat timer", olsr_txt_repeat_timer, true);
 
   for (i=0; i < ARRAYSIZE(txt_internal_names); i++) {
     txt_internal_normalcmd[i] = olsr_com_add_normal_txtcommand(txt_internal_names[i], txt_internal_handlers[i]);
@@ -318,7 +318,7 @@ void olsr_com_parse_txt(struct comport_connection *con,
   }
 
   /* reset timeout */
-  olsr_change_timer(con->timeout, con->timeout_value, 0);
+  olsr_timer_change(con->timeout, con->timeout_value, 0);
 
   /* print prompt */
   if (processedCommand && con->state == INTERACTIVE && con->show_echo) {
@@ -408,7 +408,7 @@ olsr_txtcmd_timeout(struct comport_connection *con,
 }
 
 static void olsr_txt_repeat_stophandler(struct comport_connection *con) {
-  olsr_stop_timer((struct timer_entry *)con->stop_data[0]);
+  olsr_timer_stop((struct olsr_timer_entry *)con->stop_data[0]);
   free(con->stop_data[1]);
 
   con->stop_handler = NULL;
@@ -431,7 +431,7 @@ olsr_txtcmd_repeat(struct comport_connection *con,
     const char *cmd __attribute__ ((unused)), const char *param) {
   int interval = 0;
   char *ptr;
-  struct timer_entry *timer;
+  struct olsr_timer_entry *timer;
 
   if (con->stop_handler) {
     abuf_puts(&con->out, "Error, you cannot stack continous output commands\n");
@@ -447,7 +447,7 @@ olsr_txtcmd_repeat(struct comport_connection *con,
 
   interval = atoi(param);
 
-  timer = olsr_start_timer(interval * 1000, 0, con, txt_repeat_timerinfo);
+  timer = olsr_timer_start(interval * 1000, 0, con, txt_repeat_timerinfo);
   con->stop_handler = olsr_txt_repeat_stophandler;
   con->stop_data[0] = timer;
   con->stop_data[1] = strdup(ptr);
index 2e592ed..af30a22 100644 (file)
@@ -50,7 +50,7 @@
 #include "olsr_logging.h"
 
 struct olsr_timer_info *spf_backoff_timer_info = NULL;
-struct timer_entry *spf_backoff_timer = NULL;
+struct olsr_timer_entry *spf_backoff_timer = NULL;
 
 /*
  * avl_comp_etx
@@ -276,7 +276,7 @@ olsr_expire_spf_backoff(void *context __attribute__ ((unused)))
 
 void
 olsr_init_spf(void) {
-  spf_backoff_timer_info = olsr_alloc_timerinfo("SPF backoff", olsr_expire_spf_backoff, false);
+  spf_backoff_timer_info = olsr_timer_add("SPF backoff", olsr_expire_spf_backoff, false);
 }
 
 void
@@ -299,7 +299,7 @@ olsr_calculate_routing_table(bool force)
     return;
   }
 
-  olsr_set_timer(&spf_backoff_timer, OLSR_SPF_BACKOFF_TIME, OLSR_SPF_BACKOFF_JITTER,
+  olsr_timer_set(&spf_backoff_timer, OLSR_SPF_BACKOFF_TIME, OLSR_SPF_BACKOFF_JITTER,
       NULL, spf_backoff_timer_info);
 
 #ifdef SPF_PROFILING
@@ -368,7 +368,7 @@ olsr_calculate_routing_table(bool force)
    */
   olsr_spf_run_full(&cand_tree, &path_list, &path_count);
 
-  OLSR_DEBUG(LOG_ROUTING, "\n--- %s ------------------------------------------------- DIJKSTRA\n\n", olsr_wallclock_string());
+  OLSR_DEBUG(LOG_ROUTING, "\n--- %s ------------------------------------------------- DIJKSTRA\n\n", olsr_timer_getWallclockString());
 
 #ifdef SPF_PROFILING
   gettimeofday(&t3, NULL);
index 566165f..c1dcc2e 100644 (file)
 #include "os_time.h"
 #include "olsr_logging.h"
 
-/* Timer data, global. Externed in scheduler.h */
-uint32_t now_times;                    /* relative time compared to startup (in milliseconds */
-struct timeval first_tv;               /* timevalue during startup */
-struct timeval last_tv;                /* timevalue used for last olsr_times() calculation */
+/* Timer data */
+static uint32_t now_times;             /* relative time compared to startup (in milliseconds */
+static struct timeval first_tv;        /* timevalue during startup */
+static struct timeval last_tv;         /* timevalue used for last olsr_times() calculation */
 
 /* Hashed root of all timers */
 static struct list_entity timer_wheel[TIMER_WHEEL_SLOTS];
@@ -68,11 +68,10 @@ static struct olsr_memcookie_info *timer_mem_cookie = NULL;
 static struct olsr_memcookie_info *timerinfo_cookie = NULL;
 
 /* Head of all OLSR used sockets */
-static struct list_entity socket_head;
+struct list_entity socket_head;
 
 /* Prototypes */
 static void walk_timers(uint32_t *);
-static void poll_sockets(void);
 static uint32_t calc_jitter(unsigned int rel_time, uint8_t jitter_pct, unsigned int random_val);
 
 /*
@@ -121,7 +120,7 @@ olsr_times(void)
  * Returns a timestamp s seconds in the future
  */
 uint32_t
-olsr_getTimestamp(uint32_t s)
+olsr_timer_getAbsolute(uint32_t s)
 {
   return now_times + s;
 }
@@ -131,7 +130,7 @@ olsr_getTimestamp(uint32_t s)
  */
 
 int32_t
-olsr_getTimeDue(uint32_t s)
+olsr_timer_getRelative(uint32_t s)
 {
   uint32_t diff;
   if (s > now_times) {
@@ -153,7 +152,7 @@ olsr_getTimeDue(uint32_t s)
 }
 
 bool
-olsr_isTimedOut(uint32_t s)
+olsr_timer_isTimedOut(uint32_t s)
 {
   if (s > now_times) {
     return s - now_times > (1u << 31);
@@ -163,7 +162,7 @@ olsr_isTimedOut(uint32_t s)
 }
 
 struct olsr_timer_info *
-olsr_alloc_timerinfo(const char *name, timer_cb_func callback, bool periodic) {
+olsr_timer_add(const char *name, timer_cb_func callback, bool periodic) {
   struct olsr_timer_info *ti;
 
   ti = olsr_memcookie_malloc(timerinfo_cookie);
@@ -185,11 +184,11 @@ olsr_alloc_timerinfo(const char *name, timer_cb_func callback, bool periodic) {
  *@param pf the processing function
  */
 void
-add_olsr_socket(int fd, socket_handler_func pf_pr, socket_handler_func pf_imm, void *data, unsigned int flags)
+olsr_socket_add(int fd, socket_handler_func pf_imm, void *data, unsigned int flags)
 {
   struct olsr_socket_entry *new_entry;
 
-  if (fd < 0 || (pf_pr == NULL && pf_imm == NULL)) {
+  if (fd < 0 || pf_imm == NULL) {
     OLSR_WARN(LOG_SCHEDULER, "Bogus socket entry - not registering...");
     return;
   }
@@ -199,7 +198,6 @@ add_olsr_socket(int fd, socket_handler_func pf_pr, socket_handler_func pf_imm, v
 
   new_entry->fd = fd;
   new_entry->process_immediate = pf_imm;
-  new_entry->process_pollrate = pf_pr;
   new_entry->data = data;
   new_entry->flags = flags;
 
@@ -216,46 +214,46 @@ add_olsr_socket(int fd, socket_handler_func pf_pr, socket_handler_func pf_imm, v
  *@param pf the processing function
  */
 int
-remove_olsr_socket(int fd, socket_handler_func pf_pr, socket_handler_func pf_imm)
+olsr_socket_remove(int fd, socket_handler_func pf_imm)
 {
   struct olsr_socket_entry *entry, *iterator;
 
-  if (fd < 0 || (pf_pr == NULL && pf_imm == NULL)) {
+  if (fd < 0 || pf_imm == NULL) {
     OLSR_WARN(LOG_SCHEDULER, "Bogus socket entry - not processing...");
     return 0;
   }
   OLSR_DEBUG(LOG_SCHEDULER, "Removing OLSR socket entry %d\n", fd);
 
   OLSR_FOR_ALL_SOCKETS(entry, iterator) {
-    if (entry->fd == fd && entry->process_immediate == pf_imm && entry->process_pollrate == pf_pr) {
+    if (entry->fd == fd && entry->process_immediate == pf_imm) {
       /* just mark this node as "deleted", it will be cleared later at the end of handle_fds() */
       entry->process_immediate = NULL;
-      entry->process_pollrate = NULL;
-      entry->flags = 0;      return 1;
+      entry->flags = 0;
+      return 1;
     }
   }
   return 0;
 }
 
 void
-enable_olsr_socket(int fd, socket_handler_func pf_pr, socket_handler_func pf_imm, unsigned int flags)
+olsr_socket_enable(int fd, socket_handler_func pf_imm, unsigned int flags)
 {
   struct olsr_socket_entry *entry, *iterator;
 
   OLSR_FOR_ALL_SOCKETS(entry, iterator) {
-    if (entry->fd == fd && entry->process_immediate == pf_imm && entry->process_pollrate == pf_pr) {
+    if (entry->fd == fd && entry->process_immediate == pf_imm) {
       entry->flags |= flags;
     }
   }
 }
 
 void
-disable_olsr_socket(int fd, socket_handler_func pf_pr, socket_handler_func pf_imm, unsigned int flags)
+olsr_socket_disable(int fd, socket_handler_func pf_imm, unsigned int flags)
 {
   struct olsr_socket_entry *entry, *iterator;
 
   OLSR_FOR_ALL_SOCKETS(entry, iterator) {
-    if (entry->fd == fd && entry->process_immediate == pf_imm && entry->process_pollrate == pf_pr) {
+    if (entry->fd == fd && entry->process_immediate == pf_imm) {
       entry->flags &= ~flags;
     }
   }
@@ -265,7 +263,7 @@ disable_olsr_socket(int fd, socket_handler_func pf_pr, socket_handler_func pf_im
  * Close and free all sockets.
  */
 void
-olsr_flush_sockets(void)
+olsr_socket_cleanup(void)
 {
   struct olsr_socket_entry *entry, *iterator;
 
@@ -277,81 +275,6 @@ olsr_flush_sockets(void)
 }
 
 static void
-poll_sockets(void)
-{
-  int n;
-  struct olsr_socket_entry *entry, *iterator;
-  fd_set ibits, obits;
-  struct timeval tvp = { 0, 0 };
-  int hfd = 0, fdsets = 0;
-
-  /* If there are no registered sockets we
-   * do not call select(2)
-   */
-  if (list_is_empty(&socket_head)) {
-    return;
-  }
-
-  FD_ZERO(&ibits);
-  FD_ZERO(&obits);
-
-  /* Adding file-descriptors to FD set */
-  OLSR_FOR_ALL_SOCKETS(entry, iterator) {
-    if (entry->process_pollrate == NULL) {
-      continue;
-    }
-    if ((entry->flags & SP_PR_READ) != 0) {
-      fdsets |= SP_PR_READ;
-      FD_SET((unsigned int)entry->fd, &ibits);  /* And we cast here since we get a warning on Win32 */
-    }
-    if ((entry->flags & SP_PR_WRITE) != 0) {
-      fdsets |= SP_PR_WRITE;
-      FD_SET((unsigned int)entry->fd, &obits);  /* And we cast here since we get a warning on Win32 */
-    }
-    if ((entry->flags & (SP_PR_READ | SP_PR_WRITE)) != 0 && entry->fd >= hfd) {
-      hfd = entry->fd + 1;
-    }
-  }
-
-  /* Running select on the FD set */
-  do {
-    n = os_select(hfd, fdsets & SP_PR_READ ? &ibits : NULL, fdsets & SP_PR_WRITE ? &obits : NULL, NULL, &tvp);
-  } while (n == -1 && errno == EINTR);
-
-  if (n == 0) {
-    return;
-  }
-  if (n == -1) {                /* Did something go wrong? */
-    OLSR_WARN(LOG_SCHEDULER, "select error: %s", strerror(errno));
-    return;
-  }
-
-  /* Update time since this is much used by the parsing functions */
-  now_times = olsr_times();
-  OLSR_FOR_ALL_SOCKETS(entry, iterator) {
-    int flags;
-    if (entry->process_pollrate == NULL) {
-      continue;
-    }
-    flags = 0;
-    if (FD_ISSET(entry->fd, &ibits)) {
-      flags |= SP_PR_READ;
-    }
-    if (FD_ISSET(entry->fd, &obits)) {
-      flags |= SP_PR_WRITE;
-    }
-
-    if (flags) {
-      OLSR_DEBUG(LOG_SCHEDULER, "Event from socket %d (%d)", entry->fd, flags);
-    }
-
-    if (flags != 0) {
-      entry->process_pollrate(entry->fd, entry->data, flags);
-    }
-  }
-}
-
-static void
 handle_fds(uint32_t next_interval)
 {
   struct olsr_socket_entry *entry, *iterator;
@@ -361,7 +284,7 @@ handle_fds(uint32_t next_interval)
   /* calculate the first timeout */
   now_times = olsr_times();
 
-  remaining = TIME_DUE(next_interval);
+  remaining = olsr_timer_getRelative(next_interval);
   if (remaining <= 0) {
     /* we are already over the interval */
     if (list_is_empty(&socket_head)) {
@@ -388,15 +311,15 @@ handle_fds(uint32_t next_interval)
       if (entry->process_immediate == NULL) {
         continue;
       }
-      if ((entry->flags & SP_IMM_READ) != 0) {
-        fdsets |= SP_IMM_READ;
+      if ((entry->flags & OLSR_SOCKET_READ) != 0) {
+        fdsets |= OLSR_SOCKET_READ;
         FD_SET((unsigned int)entry->fd, &ibits);        /* And we cast here since we get a warning on Win32 */
       }
-      if ((entry->flags & SP_IMM_WRITE) != 0) {
-        fdsets |= SP_IMM_WRITE;
+      if ((entry->flags & OLSR_SOCKETPOLL_WRITE) != 0) {
+        fdsets |= OLSR_SOCKETPOLL_WRITE;
         FD_SET((unsigned int)entry->fd, &obits);        /* And we cast here since we get a warning on Win32 */
       }
-      if ((entry->flags & (SP_IMM_READ | SP_IMM_WRITE)) != 0 && entry->fd >= hfd) {
+      if ((entry->flags & (OLSR_SOCKET_READ | OLSR_SOCKETPOLL_WRITE)) != 0 && entry->fd >= hfd) {
         hfd = entry->fd + 1;
       }
     }
@@ -407,7 +330,7 @@ handle_fds(uint32_t next_interval)
     }
 
     do {
-      n = os_select(hfd, fdsets & SP_IMM_READ ? &ibits : NULL, fdsets & SP_IMM_WRITE ? &obits : NULL, NULL, &tvp);
+      n = os_select(hfd, fdsets & OLSR_SOCKET_READ ? &ibits : NULL, fdsets & OLSR_SOCKETPOLL_WRITE ? &obits : NULL, NULL, &tvp);
     } while (n == -1 && errno == EINTR);
 
     if (n == 0) {               /* timeout! */
@@ -427,10 +350,10 @@ handle_fds(uint32_t next_interval)
       }
       flags = 0;
       if (FD_ISSET(entry->fd, &ibits)) {
-        flags |= SP_IMM_READ;
+        flags |= OLSR_SOCKET_READ;
       }
       if (FD_ISSET(entry->fd, &obits)) {
-        flags |= SP_IMM_WRITE;
+        flags |= OLSR_SOCKETPOLL_WRITE;
       }
       if (flags != 0) {
         entry->process_immediate(entry->fd, entry->data, flags);
@@ -438,7 +361,7 @@ handle_fds(uint32_t next_interval)
     }
 
     /* calculate the next timeout */
-    remaining = TIME_DUE(next_interval);
+    remaining = olsr_timer_getRelative(next_interval);
     if (remaining <= 0) {
       /* we are already over the interval */
       break;
@@ -449,7 +372,7 @@ handle_fds(uint32_t next_interval)
   }
 
   OLSR_FOR_ALL_SOCKETS(entry, iterator) {
-    if (entry->process_immediate == NULL && entry->process_pollrate == NULL) {
+    if (entry->process_immediate == NULL) {
       /* clean up socket handler */
       list_remove(&entry->socket_node);
       free(entry);
@@ -480,10 +403,7 @@ olsr_scheduler(void)
      * to avoid any undesired side effects if the system clock changes.
      */
     now_times = olsr_times();
-    next_interval = GET_TIMESTAMP(olsr_cnf->pollrate);
-
-    /* Read incoming data */
-    poll_sockets();
+    next_interval = olsr_timer_getAbsolute(olsr_cnf->pollrate);
 
     /* Process timers */
     walk_timers(&timer_last_run);
@@ -498,7 +418,7 @@ olsr_scheduler(void)
       link_changes = false;
     }
 
-    /* Read incoming data and handle it immediiately */
+    /* Read incoming data and handle it immediately */
     handle_fds(next_interval);
   }
 }
@@ -521,7 +441,7 @@ calc_jitter(unsigned int rel_time, uint8_t jitter_pct, unsigned int random_val)
    * Also protect against overflows resulting from > 25 bit timers.
    */
   if (jitter_pct == 0 || jitter_pct > 99 || rel_time > (1 << 24)) {
-    return GET_TIMESTAMP(rel_time);
+    return olsr_timer_getAbsolute(rel_time);
   }
 
   /*
@@ -532,7 +452,7 @@ calc_jitter(unsigned int rel_time, uint8_t jitter_pct, unsigned int random_val)
 
   OLSR_DEBUG(LOG_TIMER, "TIMER: jitter %u%% rel_time %ums to %ums\n", jitter_pct, rel_time, rel_time - jitter_time);
 
-  return GET_TIMESTAMP(rel_time - jitter_time);
+  return olsr_timer_getAbsolute(rel_time - jitter_time);
 }
 
 /**
@@ -565,7 +485,7 @@ olsr_init_timers(void)
   timer_last_run = now_times;
 
   /* Allocate a cookie for the block based memory manager. */
-  timer_mem_cookie = olsr_memcookie_add("timer_entry", sizeof(struct timer_entry));
+  timer_mem_cookie = olsr_memcookie_add("timer_entry", sizeof(struct olsr_timer_entry));
 
   avl_init(&timerinfo_tree, avl_comp_strcasecmp, false, NULL);
   timerinfo_cookie = olsr_memcookie_add("timerinfo", sizeof(struct olsr_timer_info));
@@ -602,7 +522,7 @@ walk_timers(uint32_t * last_run)
     list_init_head(&tmp_head_node);
     while (!list_is_empty(timer_head_node)) {
       /* the top element */
-      struct timer_entry *timer;
+      struct olsr_timer_entry *timer;
 
       timer = list_first_element(timer_head_node, timer, timer_list);
 
@@ -616,11 +536,11 @@ walk_timers(uint32_t * last_run)
       timers_walked++;
 
       /* Ready to fire ? */
-      if (TIMED_OUT(timer->timer_clock)) {
+      if (olsr_timer_isTimedOut(timer->timer_clock)) {
         OLSR_DEBUG(LOG_TIMER, "TIMER: fire %s timer %p, ctx %p, "
                    "at clocktick %u (%s)\n",
                    timer->timer_info->name,
-                   timer, timer->timer_cb_context, (unsigned int)*last_run, olsr_wallclock_string());
+                   timer, timer->timer_cb_context, (unsigned int)*last_run, olsr_timer_getWallclockString());
 
         /* This timer is expired, call into the provided callback function */
         timer->timer_in_callback = true;
@@ -637,10 +557,10 @@ walk_timers(uint32_t * last_run)
           if (timer->timer_period) {
             /* For periodical timers, rehash the random number and restart */
             timer->timer_random = random();
-            olsr_change_timer(timer, timer->timer_period, timer->timer_jitter_pct);
+            olsr_timer_change(timer, timer->timer_period, timer->timer_jitter_pct);
           } else {
             /* Singleshot timers are stopped */
-            olsr_stop_timer(timer);
+            olsr_timer_stop(timer);
           }
         }
         else {
@@ -693,10 +613,10 @@ olsr_flush_timers(void)
 
     /* Kill all entries hanging off this hash bucket. */
     while (!list_is_empty(timer_head_node)) {
-      struct timer_entry *timer;
+      struct olsr_timer_entry *timer;
 
       timer = list_first_element(timer_head_node, timer, timer_list);
-      olsr_stop_timer(timer);
+      olsr_timer_stop(timer);
     }
   }
 
@@ -753,7 +673,7 @@ olsr_get_timezone(void)
  * @return buffer to a formatted system time string.
  */
 const char *
-olsr_wallclock_string(void)
+olsr_timer_getWallclockString(void)
 {
   static char buf[sizeof("00:00:00.000000")];
   struct timeval now;
@@ -778,11 +698,10 @@ olsr_wallclock_string(void)
  * @return buffer to a formatted system time string.
  */
 const char *
-olsr_clock_string(uint32_t clk)
+olsr_timer_getClockString(uint32_t clk)
 {
   static char buf[sizeof("00:00:00.000")];
 
-  /* On most systems a clocktick is a 10ms quantity. */
   unsigned int msec = clk % 1000;
   unsigned int sec = clk / 1000;
 
@@ -800,11 +719,11 @@ olsr_clock_string(uint32_t clk)
  * @param context for the callback function
  * @return a pointer to the created entry
  */
-struct timer_entry *
-olsr_start_timer(unsigned int rel_time,
+struct olsr_timer_entry *
+olsr_timer_start(unsigned int rel_time,
                  uint8_t jitter_pct, void *context, struct olsr_timer_info *ti)
 {
-  struct timer_entry *timer;
+  struct olsr_timer_entry *timer;
 
   assert(ti != 0);          /* we want timer cookies everywhere */
   assert(rel_time);
@@ -839,7 +758,7 @@ olsr_start_timer(unsigned int rel_time,
   list_add_before(&timer_wheel[timer->timer_clock & TIMER_WHEEL_MASK], &timer->timer_list);
 
   OLSR_DEBUG(LOG_TIMER, "TIMER: start %s timer %p firing in %s, ctx %p\n",
-             ti->name, timer, olsr_clock_string(timer->timer_clock), context);
+             ti->name, timer, olsr_timer_getClockString(timer->timer_clock), context);
 
   return timer;
 }
@@ -848,11 +767,11 @@ olsr_start_timer(unsigned int rel_time,
 /**
  * Delete a timer.
  *
- * @param the timer_entry that shall be removed
+ * @param the olsr_timer_entry that shall be removed
  * @return nada
  */
 void
-olsr_stop_timer(struct timer_entry *timer)
+olsr_timer_stop(struct olsr_timer_entry *timer)
 {
   /* It's okay to get a NULL here */
   if (timer == NULL) {
@@ -880,15 +799,15 @@ olsr_stop_timer(struct timer_entry *timer)
 }
 
 /**
- * Change a timer_entry.
+ * Change a olsr_timer_entry.
  *
- * @param timer_entry to be changed.
+ * @param olsr_timer_entry to be changed.
  * @param new relative time expressed in units of milliseconds.
  * @param new jitter expressed in percent.
  * @return nada
  */
 void
-olsr_change_timer(struct timer_entry *timer, unsigned int rel_time, uint8_t jitter_pct)
+olsr_timer_change(struct olsr_timer_entry *timer, unsigned int rel_time, uint8_t jitter_pct)
 {
   /* Sanity check. */
   if (!timer) {
@@ -912,7 +831,7 @@ olsr_change_timer(struct timer_entry *timer, unsigned int rel_time, uint8_t jitt
 
   OLSR_DEBUG(LOG_TIMER, "TIMER: change %s timer %p, firing to %s, ctx %p\n",
              timer->timer_info->name, timer,
-             olsr_clock_string(timer->timer_clock), timer->timer_cb_context);
+             olsr_timer_getClockString(timer->timer_clock), timer->timer_cb_context);
 }
 
 /*
@@ -922,22 +841,22 @@ olsr_change_timer(struct timer_entry *timer, unsigned int rel_time, uint8_t jitt
  * terminated.
  */
 void
-olsr_set_timer(struct timer_entry **timer_ptr,
+olsr_timer_set(struct olsr_timer_entry **timer_ptr,
                unsigned int rel_time,
                uint8_t jitter_pct, void *context, struct olsr_timer_info *ti)
 {
   assert(ti);          /* we want timer cookies everywhere */
   if (rel_time == 0) {
     /* No good future time provided, kill it. */
-    olsr_stop_timer(*timer_ptr);
+    olsr_timer_stop(*timer_ptr);
     *timer_ptr = NULL;
   }
   else if ((*timer_ptr) == NULL) {
     /* No timer running, kick it. */
-    *timer_ptr = olsr_start_timer(rel_time, jitter_pct, context, ti);
+    *timer_ptr = olsr_timer_start(rel_time, jitter_pct, context, ti);
   }
   else {
-    olsr_change_timer(*timer_ptr, rel_time, jitter_pct);
+    olsr_timer_change(*timer_ptr, rel_time, jitter_pct);
   }
 }
 
index 22e8f1f..3c1b555 100644 (file)
 #define TIMER_WHEEL_SLOTS 1024
 #define TIMER_WHEEL_MASK (TIMER_WHEEL_SLOTS - 1)
 
-typedef void (*timer_cb_func) (void *); /* callback function */
+/* prototype for timer callback */
+typedef void (*timer_cb_func) (void *);
 
+/*
+ * This struct defines a class of timers which have the same
+ * type (periodic/non-periodic) and callback.
+ */
 struct olsr_timer_info {
   /* node of timerinfo tree */
   struct avl_node node;
@@ -76,19 +81,15 @@ struct olsr_timer_info {
   uint32_t changes;
 };
 
-#define OLSR_FOR_ALL_TIMERS(ti, iterator) avl_for_each_element_safe(&timerinfo_tree, ti, node, iterator)
 
 /*
  * Our timer implementation is a based on individual timers arranged in
  * a double linked list hanging of hash containers called a timer wheel slot.
- * For every timer a timer_entry is created and attached to the timer wheel slot.
+ * For every timer a olsr_timer_entry is created and attached to the timer wheel slot.
  * When the timer fires, the timer_cb function is called with the
  * context pointer.
- * The implementation supports periodic and oneshot timers.
- * For a periodic timer the timer_period field is set to non zero,
- * which causes the timer to run forever until manually stopped.
  */
-struct timer_entry {
+struct olsr_timer_entry {
   /* Wheel membership */
   struct list_entity timer_list;
 
@@ -99,7 +100,7 @@ struct timer_entry {
   uint32_t timer_clock;
 
   /* timeperiod between two timer events for periodical timers */
-  uint32_t timer_period;           /* set for periodical timers (relative time) */
+  uint32_t timer_period;
 
   /* the jitter expressed in percent */
   uint8_t timer_jitter_pct;
@@ -119,73 +120,75 @@ struct timer_entry {
 
 /* Timers */
 extern struct avl_tree EXPORT(timerinfo_tree);
+#define OLSR_FOR_ALL_TIMERS(ti, iterator) avl_for_each_element_safe(&timerinfo_tree, ti, node, iterator)
 
 void olsr_init_timers(void);
 void olsr_flush_timers(void);
 
-uint32_t EXPORT(olsr_getTimestamp) (uint32_t s);
-int32_t EXPORT(olsr_getTimeDue) (uint32_t s);
-bool EXPORT(olsr_isTimedOut) (uint32_t s);
+uint32_t EXPORT(olsr_timer_getAbsolute) (uint32_t relative);
+int32_t EXPORT(olsr_timer_getRelative) (uint32_t absolute);
+bool EXPORT(olsr_timer_isTimedOut) (uint32_t s);
 
-void EXPORT(olsr_set_timer) (struct timer_entry **, uint32_t, uint8_t,
+/**
+ * Calculates the current time in the internal OLSR representation
+ * @return current time
+ */
+static inline uint32_t olsr_timer_getNow(void) {
+  return olsr_timer_getAbsolute(0);
+}
+
+void EXPORT(olsr_timer_set) (struct olsr_timer_entry **, uint32_t, uint8_t,
     void *, struct olsr_timer_info *);
-struct timer_entry *EXPORT(olsr_start_timer) (uint32_t, uint8_t,
+struct olsr_timer_entry *EXPORT(olsr_timer_start) (uint32_t, uint8_t,
     void *, struct olsr_timer_info *);
-void EXPORT(olsr_change_timer)(struct timer_entry *, uint32_t, uint8_t);
-void EXPORT(olsr_stop_timer) (struct timer_entry *);
+void EXPORT(olsr_timer_change)(struct olsr_timer_entry *, uint32_t, uint8_t);
+void EXPORT(olsr_timer_stop) (struct olsr_timer_entry *);
 
-struct olsr_timer_info *EXPORT(olsr_alloc_timerinfo)(const char *name, timer_cb_func callback, bool periodic);
+struct olsr_timer_info *EXPORT(olsr_timer_add)(const char *name, timer_cb_func callback, bool periodic);
 
 /* Printing timestamps */
-const char *EXPORT(olsr_clock_string)(uint32_t);
-const char *EXPORT(olsr_wallclock_string)(void);
+const char *EXPORT(olsr_timer_getClockString)(uint32_t);
+const char *EXPORT(olsr_timer_getWallclockString)(void);
 
 /* Main scheduler loop */
 void olsr_scheduler(void);
 
-/*
- * Provides a timestamp s1 milliseconds in the future
- */
-#define GET_TIMESTAMP(s1)      olsr_getTimestamp(s1)
-
-/* Compute the time in milliseconds when a timestamp will expire. */
-#define TIME_DUE(s1)    olsr_getTimeDue(s1)
-
-/* Returns TRUE if a timestamp is expired */
-#define TIMED_OUT(s1)    olsr_isTimedOut(s1)
-
-/* Timer data */
-extern uint32_t EXPORT(now_times);     /* current idea of times(2) reported uptime */
-
-
-#define SP_PR_READ             0x01
-#define SP_PR_WRITE            0x02
-
-#define SP_IMM_READ            0x04
-#define SP_IMM_WRITE           0x08
-
+/* flags for socket handler */
+static const unsigned int OLSR_SOCKET_READ = 0x04;
+static const unsigned int OLSR_SOCKETPOLL_WRITE = 0x08;
 
+/* prototype for socket handler */
 typedef void (*socket_handler_func) (int fd, void *data, unsigned int flags);
 
-
+/* This struct represents a single registered socket handler */
 struct olsr_socket_entry {
+  /* list of socket handlers */
+  struct list_entity socket_node;
+
+  /* file descriptor of the socket */
   int fd;
+
+  /* socket handler */
   socket_handler_func process_immediate;
-  socket_handler_func process_pollrate;
+
+  /* custom data pointer for sockets */
   void *data;
+
+  /* flags (OLSR_SOCKET_READ and OLSR_SOCKET_WRITE) */
   unsigned int flags;
-  struct list_entity socket_node;
 };
 
 /* deletion safe macro for socket list traversal */
-
+extern struct list_entity EXPORT(socket_head);
 #define OLSR_FOR_ALL_SOCKETS(socket, iterator) list_for_each_element_safe(&socket_head, socket, socket_node, iterator)
 
-void EXPORT(add_olsr_socket) (int fd, socket_handler_func pf_pr, socket_handler_func pf_imm, void *data, unsigned int flags);
-int EXPORT(remove_olsr_socket) (int fd, socket_handler_func pf_pr, socket_handler_func pf_imm);
-void olsr_flush_sockets(void);
-void EXPORT(enable_olsr_socket) (int fd, socket_handler_func pf_pr, socket_handler_func pf_imm, unsigned int flags);
-void EXPORT(disable_olsr_socket) (int fd, socket_handler_func pf_pr, socket_handler_func pf_imm, unsigned int flags);
+void olsr_socket_cleanup(void);
+
+void EXPORT(olsr_socket_add) (int fd, socket_handler_func pf_imm, void *data, unsigned int flags);
+int EXPORT(olsr_socket_remove) (int fd, socket_handler_func pf_imm);
+
+void EXPORT(olsr_socket_enable) (int fd, socket_handler_func pf_imm, unsigned int flags);
+void EXPORT(olsr_socket_disable) (int fd, socket_handler_func pf_imm, unsigned int flags);
 
 #endif
 
index bc2360c..a58a8aa 100644 (file)
@@ -139,8 +139,8 @@ olsr_init_tc(void)
   /*
    * Get some cookies for getting stats to ease troubleshooting.
    */
-  tc_edge_gc_timer_info = olsr_alloc_timerinfo("TC edge GC", olsr_expire_tc_edge_gc, false);
-  tc_validity_timer_info = olsr_alloc_timerinfo("TC validity", &olsr_expire_tc_entry, false);
+  tc_edge_gc_timer_info = olsr_timer_add("TC edge GC", olsr_expire_tc_edge_gc, false);
+  tc_validity_timer_info = olsr_timer_add("TC validity", &olsr_expire_tc_entry, false);
 
   tc_mem_cookie = olsr_memcookie_add("tc_entry", sizeof(struct tc_entry));
 }
@@ -230,10 +230,10 @@ olsr_delete_tc_entry(struct tc_entry *tc)
   }
 
   /* Stop running timers */
-  olsr_stop_timer(tc->validity_timer);
+  olsr_timer_stop(tc->validity_timer);
   tc->validity_timer = NULL;
 
-  olsr_stop_timer(tc->edge_gc_timer);
+  olsr_timer_stop(tc->edge_gc_timer);
   tc->edge_gc_timer = NULL;
 
   /* still virtual edges left, node has to stay in database */
@@ -482,7 +482,7 @@ olsr_delete_tc_edge_entry(struct tc_edge_entry *tc_edge)
 
   if (was_real && tc_inv != tc_myself && tc_inv->virtual) {
     /* mark tc_entry to be gone in one ms */
-    olsr_set_timer(&tc_inv->validity_timer, 1, 0, tc, tc_validity_timer_info);
+    olsr_timer_set(&tc_inv->validity_timer, 1, 0, tc, tc_validity_timer_info);
   }
 }
 
@@ -647,7 +647,7 @@ olsr_print_tc_table(void)
   const int ipwidth = olsr_cnf->ip_version == AF_INET ? 15 : 30;
   static char NONE[] = "-";
 
-  OLSR_INFO(LOG_TC, "\n--- %s ------------------------------------------------- TOPOLOGY\n\n", olsr_wallclock_string());
+  OLSR_INFO(LOG_TC, "\n--- %s ------------------------------------------------- TOPOLOGY\n\n", olsr_timer_getWallclockString());
   OLSR_INFO_NH(LOG_TC, "%-*s %-*s %-7s      %8s %12s %5s\n", ipwidth,
                "Source IP addr", ipwidth, "Dest IP addr", "", olsr_get_linklabel(0), "vtime", "ansn");
 
@@ -657,7 +657,7 @@ olsr_print_tc_table(void)
     char *vtime = NONE;
 
     if (tc->validity_timer) {
-      olsr_milli_to_txt(&tbuf, olsr_getTimeDue(tc->validity_timer->timer_clock));
+      olsr_milli_to_txt(&tbuf, olsr_timer_getRelative(tc->validity_timer->timer_clock));
       vtime = tbuf.buf;
     }
 
@@ -831,7 +831,7 @@ olsr_input_tc(struct olsr_message * msg,
    * Set or change the expiration timer accordingly.
    */
   assert(msg);
-  olsr_set_timer(&tc->validity_timer, msg->vtime,
+  olsr_timer_set(&tc->validity_timer, msg->vtime,
                  OLSR_TC_VTIME_JITTER, tc, tc_validity_timer_info);
 
   if (borderSet) {
@@ -846,7 +846,7 @@ olsr_input_tc(struct olsr_message * msg,
      * Kick the the edge garbage collection timer. In the meantime hopefully
      * all edges belonging to a multipart neighbor set will arrive.
      */
-    olsr_set_timer(&tc->edge_gc_timer, OLSR_TC_EDGE_GC_TIME,
+    olsr_timer_set(&tc->edge_gc_timer, OLSR_TC_EDGE_GC_TIME,
                    OLSR_TC_EDGE_GC_JITTER, tc, tc_edge_gc_timer_info);
   }
 }
index 889b694..2a69e2d 100644 (file)
@@ -79,8 +79,8 @@ struct tc_entry {
   struct avl_tree mid_tree;            /* subtree for MID entries */
   struct avl_tree hna_tree;            /* subtree for HNA entries */
   struct link_entry *next_hop;         /* SPF calculated link to the 1st hop neighbor */
-  struct timer_entry *edge_gc_timer;   /* used for edge garbage collection */
-  struct timer_entry *validity_timer;  /* tc validity time */
+  struct olsr_timer_entry *edge_gc_timer;   /* used for edge garbage collection */
+  struct olsr_timer_entry *validity_timer;  /* tc validity time */
   bool virtual;                        /* true if node is virtual */
   int tc_seq;                          /* sequence number of the tc message */
   int mid_seq;                         /* sequence number of the mid message */