Adding some faster default values for OBAMP timers
authorSaverio Proto <zioproto@gmail.com>
Thu, 3 Jun 2010 22:35:44 +0000 (00:35 +0200)
committerSaverio Proto <zioproto@gmail.com>
Thu, 3 Jun 2010 22:35:44 +0000 (00:35 +0200)
Adding a timer to preventing the protocol to try to set up more than 1 tree link at the same time confusing the algorithm

lib/obamp/src/obamp.c
lib/obamp/src/obamp.h

index b5c1db5..2c343a9 100644 (file)
@@ -347,7 +347,7 @@ obamp_hello(struct in_addr *addr)
 static void
 tree_link_req(struct in_addr *addr)
 {
-
+  if (myState->TreeRequestDelay == 0) { 
   struct OBAMP_tree_link_req req;
   struct sockaddr_in si_other;
   #if !defined(REMOVE_LOG_DEBUG)
@@ -370,8 +370,11 @@ tree_link_req(struct in_addr *addr)
   si_other.sin_family = AF_INET;
   si_other.sin_port = htons(OBAMP_SIGNALLING_PORT);
   si_other.sin_addr = *addr;
+  myState->TreeRequestDelay=5;
   sendto(sdudp, &req, sizeof(struct OBAMP_tree_link_req), 0, (struct sockaddr *)&si_other, sizeof(si_other));
 }
+else OLSR_DEBUG(LOG_PLUGINS,"Do not send Tree Link Request because there is another one running");
+}
 
 static void
 tree_link_ack(struct OBAMP_tree_link_req *req)
@@ -1412,6 +1415,9 @@ purge_nodes(void *x)
   if (myState->TreeHeartBeat > 0)
     myState->TreeHeartBeat--;
 
+  if (myState->TreeRequestDelay > 0)
+    myState->TreeRequestDelay--;
+
   if (myState->TreeHeartBeat == 0 && myState->iamcore == 0){ 
     OLSR_DEBUG(LOG_PLUGINS,"Calling Reset Tree Links"); 
     reset_tree_links();
@@ -1649,6 +1655,7 @@ InitOBAMP(void)
   myState = olsr_malloc(sizeof(struct ObampNodeState), "OBAMPNodeState");
   myState->iamcore = 1;
   myState->TreeHeartBeat = 0;
+  myState->TreeRequestDelay = 0;
   memcpy(&myState->myipaddr.v4, &olsr_cnf->router_id, olsr_cnf->ipsize);
   myState->CoreAddress = myState->myipaddr;
 
index d5e2b94..0286dc0 100644 (file)
 #define PLUGIN_DESCR           "OBAMP"
 
 #define OBAMP_JITTER           25      /* percent */
-#define OBAMP_ALIVE_EIVAL      5
+#define OBAMP_ALIVE_EIVAL      3
 #define OBAMP_MESH_CREATE_IVAL 5       //Seconds
-#define OBAMP_TREE_CREATE_IVAL 10      //seconds
-#define TREE_HEARTBEAT         25      //seconds
-#define OBAMP_OUTER_TREE_CREATE_IVAL    30      //seconds
+#define OBAMP_TREE_CREATE_IVAL 8      //seconds
+#define TREE_HEARTBEAT         20      //seconds
+#define OBAMP_OUTER_TREE_CREATE_IVAL    60      //seconds
 #define _MESH_LOCK_            10      //seconds
 
 #define _Texpire_              15      //time in seconds before expire a neighbor
@@ -177,6 +177,7 @@ struct ObampNodeState {
 
    */
   int TreeHeartBeat;
+  int TreeRequestDelay;
 };
 
 // OBAMP message types