summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Elder <aelder@audioscience.com>2012-11-29 07:30:56 -0500
committerAndrew Elder <aelder@audioscience.com>2013-01-02 16:39:10 -0500
commit5852ec29052f3b6b732a0b0d739d647f3006b88b (patch)
treec54cd0648f65df68655459ae2afbf9fc3f2dbbf1
parent3a07c6b6894e44fc7a131cd4692e4fde0f8f0107 (diff)
downloadOpen-AVB-5852ec29052f3b6b732a0b0d739d647f3006b88b.tar.gz
mrpd: add timer running debug output
-rw-r--r--daemons/mrpd/mrp.c38
1 files changed, 32 insertions, 6 deletions
diff --git a/daemons/mrpd/mrp.c b/daemons/mrpd/mrp.c
index 64cd169a..5cdb7e97 100644
--- a/daemons/mrpd/mrp.c
+++ b/daemons/mrpd/mrp.c
@@ -44,6 +44,7 @@
/* state machine controls */
int p2pmac;
+#if LOG_MRP
static char *mrp_event_string(int e)
{
switch (e) {
@@ -142,6 +143,7 @@ static char *mrp_lvatimer_state_string(int s)
else
return "??";
}
+#endif /* #if LOG_MRP */
static int client_lookup(client_t * list, struct sockaddr_in *newclient)
{
@@ -236,13 +238,20 @@ int mrp_client_delete(client_t ** list, struct sockaddr_in *newclient)
int mrp_jointimer_start(struct mrp_database *mrp_db)
{
+ int ret;
/* 10.7.4.1 - interval between transmit opportunities
* for applicant state machine
*/
#if LOG_TIMERS
- mrpd_log_printf("MRP start join timer\n");
+ if (mrp_db->join_timer_running)
+ mrpd_log_printf("MRP start join timer *ALREADY RUNNING*\n");
+ else
+ mrpd_log_printf("MRP start join timer\n");
#endif
- return mrpd_timer_start(mrp_db->join_timer, MRP_JOINTIMER_VAL);
+ ret = mrpd_timer_start(mrp_db->join_timer, MRP_JOINTIMER_VAL);
+ if (ret >= 0)
+ mrp_db->join_timer_running = 1;
+ return ret;
}
int mrp_jointimer_stop(struct mrp_database *mrp_db)
@@ -250,19 +259,27 @@ int mrp_jointimer_stop(struct mrp_database *mrp_db)
#if LOG_TIMERS
mrpd_log_printf("MRP stop join timer\n");
#endif
+ mrp_db->join_timer_running = 0;
return mrpd_timer_stop(mrp_db->join_timer);
}
int mrp_lvtimer_start(struct mrp_database *mrp_db)
{
+ int ret;
/* leavetimer has expired (10.7.5.21)
* controls how long the Registrar state machine stays in the
* LV state before transitioning to the MT state.
*/
#if LOG_TIMERS
- mrpd_log_printf("MRP start leave timer\n");
+ if (mrp_db->lv_timer_running)
+ mrpd_log_printf("MRP start leave timer *ALREADY RUNNING*\n");
+ else
+ mrpd_log_printf("MRP start leave timer\n");
#endif
- return mrpd_timer_start(mrp_db->lv_timer, MRP_LVTIMER_VAL);
+ ret = mrpd_timer_start(mrp_db->lv_timer, MRP_LVTIMER_VAL);
+ if (ret >= 0)
+ mrp_db->lv_timer_running = 1;
+ return ret;
}
int mrp_lvtimer_stop(struct mrp_database *mrp_db)
@@ -270,6 +287,7 @@ int mrp_lvtimer_stop(struct mrp_database *mrp_db)
#if LOG_TIMERS
mrpd_log_printf("MRP stop leave timer\n");
#endif
+ mrp_db->lv_timer_running = 0;
return mrpd_timer_stop(mrp_db->lv_timer);
}
@@ -277,6 +295,7 @@ static unsigned long lva_next;
int mrp_lvatimer_start(struct mrp_database *mrp_db)
{
+ int ret;
int timeout = 0;
/* leavealltimer has expired. (10.7.5.22)
* on expire, sends a LEAVEALL message
@@ -286,9 +305,15 @@ int mrp_lvatimer_start(struct mrp_database *mrp_db)
*/
timeout = MRP_LVATIMER_VAL + (random() % (MRP_LVATIMER_VAL / 2));
#if LOG_TIMERS
- mrpd_log_printf("MRP start leaveAll timer (%d ms)\n", timeout);
+ if (mrp_db->lva_timer_running)
+ mrpd_log_printf("MRP start leaveAll timer (%d ms) *ALREADY RUNNING* \n", timeout);
+ else
+ mrpd_log_printf("MRP start leaveAll timer (%d ms)\n", timeout);
#endif
- return mrpd_timer_start(mrp_db->lva_timer, timeout);
+ ret = mrpd_timer_start(mrp_db->lva_timer, timeout);
+ if (ret >= 0)
+ mrp_db->lva_timer_running = 1;
+ return ret;
}
int mrp_lvatimer_stop(struct mrp_database *mrp_db)
@@ -296,6 +321,7 @@ int mrp_lvatimer_stop(struct mrp_database *mrp_db)
#if LOG_TIMERS
mrpd_log_printf("MRP stop leaveAll timer\n");
#endif
+ mrp_db->lva_timer_running = 0;
return mrpd_timer_stop(mrp_db->lva_timer);
}