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 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 ret = mrpd_timer_start(mrp_db->lv_timer, MRP_LVTIMER_VAL); if (ret >= 0) mrp_db->lv_timer_running = 1; return ret; }
int mrp_jointimer_start(struct mrp_database *mrp_db) { int ret = 0; /* 10.7.4.1 - interval between transmit opportunities * for applicant state machine */ #if LOG_TIMERS if (mrp_db->join_timer_running) mrpd_log_printf("MRP join timer running\n"); else mrpd_log_printf("MRP join timer start \n"); #endif if (!mrp_db->join_timer_running) { ret = mrpd_timer_start(mrp_db->join_timer, MRP_JOINTIMER_VAL); } if (ret >= 0) mrp_db->join_timer_running = 1; return ret; }
int mrp_lvatimer_start(struct mrp_database *mrp_db) { int ret = 0; int timeout = 0; /* leavealltimer has expired. (10.7.5.22) * on expire, sends a LEAVEALL message * value is RANDOM in range (LeaveAllTime , 1.5xLeaveAllTime) * timer is for all attributes of a given application and port, but * expires each listed attribute individually (per application) */ timeout = MRP_LVATIMER_VAL + (random() % (MRP_LVATIMER_VAL / 2)); #if LOG_TIMERS if (mrp_db->lva_timer_running) mrpd_log_printf("MRP leaveAll timer already running \n", timeout); else mrpd_log_printf("MRP start leaveAll timer (%d ms)\n", timeout); #endif if (!mrp_db->lva_timer_running) ret = mrpd_timer_start(mrp_db->lva_timer, timeout); if (ret >= 0) mrp_db->lva_timer_running = 1; return ret; }
int gctimer_start() { /* reclaim memory every 30 minutes */ return mrpd_timer_start(gc_timer, 30 * 60 * 1000); }