summaryrefslogtreecommitdiffstats
path: root/usr.sbin/mrouted/callout.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/mrouted/callout.c')
-rw-r--r--usr.sbin/mrouted/callout.c58
1 files changed, 29 insertions, 29 deletions
diff --git a/usr.sbin/mrouted/callout.c b/usr.sbin/mrouted/callout.c
index 51437e4..04b1521 100644
--- a/usr.sbin/mrouted/callout.c
+++ b/usr.sbin/mrouted/callout.c
@@ -7,7 +7,7 @@
* Leland Stanford Junior University.
*
*
- * $Id: callout.c,v 1.2 1994/09/08 02:51:11 wollman Exp $
+ * $Id: callout.c,v 1.3 1995/05/16 00:28:42 jkh Exp $
*/
#include "defs.h"
@@ -22,7 +22,7 @@ typedef void (* cfunc_t)();
struct timeout_q {
struct timeout_q *next; /* next event */
- int id;
+ int id;
cfunc_t func ; /* function to call */
char *data; /* func's data */
int time; /* time offset to next event*/
@@ -31,7 +31,7 @@ struct timeout_q {
static void print_Q();
-void callout_init()
+void callout_init()
{
Q = (struct timeout_q *) 0;
}
@@ -43,20 +43,20 @@ void callout_init()
void age_callout_queue()
{
struct timeout_q *ptr;
-
+
if (in_callout)
return;
in_callout = 1;
ptr = Q;
-
+
while (ptr){
if (!ptr->time ) {
/* timeout has happened */
if(ptr->func)
ptr->func(ptr->data);
Q = Q->next;
-
+
free(ptr);
ptr = Q;
}
@@ -73,7 +73,7 @@ void age_callout_queue()
}
-/*
+/*
* sets the timer
*/
int timer_setTimer(delay, action, data)
@@ -82,39 +82,39 @@ int timer_setTimer(delay, action, data)
char *data; /* what to call the timeout function with */
{
struct timeout_q *ptr, *node, *prev;
-
+
if (in_callout)
return -1;
in_callout = 1;
-
- /* create a node */
+
+ /* create a node */
node = (struct timeout_q *)malloc(sizeof(struct timeout_q));
if ((int) node <= 0) {
log(LOG_WARNING, 0, "Malloc Failed in timer_settimer\n");
in_callout = 0;
return -1;
}
- node->func = action;
+ node->func = action;
node->data = data;
- node->time = delay;
- node->next = 0;
+ node->time = delay;
+ node->next = 0;
node->id = ++id;
-
+
prev = ptr = Q;
-
+
/* insert node in the queue */
-
+
/* if the queue is empty, insert the node and return */
if (!Q)
Q = node;
else {
/* chase the pointer looking for the right place */
while (ptr){
-
+
if (delay < ptr->time){
/* right place */
-
+
node->next = ptr;
if (ptr == Q)
Q = node;
@@ -127,7 +127,7 @@ int timer_setTimer(delay, action, data)
}
else {
/* keep moving */
-
+
delay -= ptr->time; node->time = delay;
prev = ptr;
ptr = ptr->next;
@@ -146,35 +146,35 @@ void timer_clearTimer( id)
int id;
{
struct timeout_q *ptr, *prev;
-
+
if (in_callout) return;
in_callout = 1;
-
-
+
+
if ( !id ) {in_callout = 0; return;}
-
+
prev = ptr = Q;
-
+
/*
* find the right node, delete it. the subsequent node's time
* gets bumped up
*/
-
+
print_Q();
while (ptr){
if (ptr->id == id){
/* got the right node */
-
+
/* unlink it from the queue */
if ( ptr == Q)
Q = Q->next;
else
prev->next = ptr->next;
-
+
/* increment next node if any */
if (ptr->next != 0)
(ptr->next)->time += ptr->time;
-
+
free(ptr->data);
free(ptr);
print_Q();
@@ -195,7 +195,7 @@ static void print_Q()
{
#ifdef IGMP_DEBUG
struct timeout_q *ptr;
-
+
for(ptr = Q; ptr; ptr = ptr->next)
log(LOG_DEBUG,0,"(%d,%d) ", ptr->id, ptr->time);
#endif IGMP_DEBUG
OpenPOWER on IntegriCloud