summaryrefslogtreecommitdiffstats
path: root/lib/libalias
diff options
context:
space:
mode:
authorru <ru@FreeBSD.org>2000-08-14 14:18:16 +0000
committerru <ru@FreeBSD.org>2000-08-14 14:18:16 +0000
commite8f5de8393c98b0c32602246d41e2181100dcd9d (patch)
tree8669c6b371667964665905808d7f7d80f7bfcd3b /lib/libalias
parent387cc6f0df7d41e737837bf07830a2e1f6c7c694 (diff)
downloadFreeBSD-src-e8f5de8393c98b0c32602246d41e2181100dcd9d.zip
FreeBSD-src-e8f5de8393c98b0c32602246d41e2181100dcd9d.tar.gz
Use queue(3) LIST_* macros for doubly-linked lists.
Diffstat (limited to 'lib/libalias')
-rw-r--r--lib/libalias/alias_db.c83
1 files changed, 18 insertions, 65 deletions
diff --git a/lib/libalias/alias_db.c b/lib/libalias/alias_db.c
index 8cf7da5..c531bf7 100644
--- a/lib/libalias/alias_db.c
+++ b/lib/libalias/alias_db.c
@@ -125,6 +125,7 @@
#include <stdio.h>
#include <unistd.h>
+#include <sys/queue.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <sys/types.h>
@@ -293,12 +294,8 @@ struct alias_link /* Main data structure */
int sockfd; /* socket descriptor */
- u_int start_point_out; /* Index number in output lookup table */
- u_int start_point_in;
- struct alias_link *next_out; /* Linked list pointers for input and */
- struct alias_link *last_out; /* output tables */
- struct alias_link *next_in; /* . */
- struct alias_link *last_in; /* . */
+ LIST_ENTRY(alias_link) list_out; /* Linked list of pointers for */
+ LIST_ENTRY(alias_link) list_in; /* input and output lookup tables */
union /* Auxiliary data */
{
@@ -331,10 +328,10 @@ static struct in_addr targetAddress; /* IP address incoming packets */
static struct in_addr nullAddress; /* Used as a dummy parameter for */
/* some function calls */
-static struct alias_link *
+static LIST_HEAD(, alias_link)
linkTableOut[LINK_TABLE_OUT_SIZE]; /* Lookup table of pointers to */
/* chains of link records. Each */
-static struct alias_link * /* link record is doubly indexed */
+static LIST_HEAD(, alias_link) /* link record is doubly indexed */
linkTableIn[LINK_TABLE_IN_SIZE]; /* into input and output lookup */
/* tables. */
@@ -825,11 +822,11 @@ CleanupAliasData(void)
icount = 0;
for (i=0; i<LINK_TABLE_OUT_SIZE; i++)
{
- link = linkTableOut[i];
+ link = LIST_FIRST(&linkTableOut[i]);
while (link != NULL)
{
struct alias_link *link_next;
- link_next = link->next_out;
+ link_next = LIST_NEXT(link, list_out);
icount++;
DeleteLink(link);
link = link_next;
@@ -847,13 +844,13 @@ IncrementalCleanup(void)
struct alias_link *link;
icount = 0;
- link = linkTableOut[cleanupIndex++];
+ link = LIST_FIRST(&linkTableOut[cleanupIndex++]);
while (link != NULL)
{
int idelta;
struct alias_link *link_next;
- link_next = link->next_out;
+ link_next = LIST_NEXT(link, list_out);
idelta = timeStamp - link->timestamp;
switch (link->link_type)
{
@@ -886,11 +883,9 @@ IncrementalCleanup(void)
cleanupIndex = 0;
}
-void
+static void
DeleteLink(struct alias_link *link)
{
- struct alias_link *link_last;
- struct alias_link *link_next;
/* Don't do anything if the link is marked permanent */
if (deleteAllLinks == 0 && link->flags & LINK_PERMANENT)
@@ -913,28 +908,10 @@ DeleteLink(struct alias_link *link)
}
/* Adjust output table pointers */
- link_last = link->last_out;
- link_next = link->next_out;
-
- if (link_last != NULL)
- link_last->next_out = link_next;
- else
- linkTableOut[link->start_point_out] = link_next;
-
- if (link_next != NULL)
- link_next->last_out = link_last;
+ LIST_REMOVE(link, list_out);
/* Adjust input table pointers */
- link_last = link->last_in;
- link_next = link->next_in;
-
- if (link_last != NULL)
- link_last->next_in = link_next;
- else
- linkTableIn[link->start_point_in] = link_next;
-
- if (link_next != NULL)
- link_next->last_in = link_last;
+ LIST_REMOVE(link, list_in);
/* Close socket, if one has been allocated */
if (link->sockfd != -1)
@@ -997,7 +974,6 @@ AddLink(struct in_addr src_addr,
{ /* chosen. If greater than */
u_int start_point; /* zero, equal to alias port */
struct alias_link *link;
- struct alias_link *first_link;
link = malloc(sizeof(struct alias_link));
if (link != NULL)
@@ -1060,29 +1036,11 @@ AddLink(struct in_addr src_addr,
/* Set up pointers for output lookup table */
start_point = StartPointOut(src_addr, dst_addr,
src_port, dst_port, link_type);
- first_link = linkTableOut[start_point];
-
- link->last_out = NULL;
- link->next_out = first_link;
- link->start_point_out = start_point;
-
- if (first_link != NULL)
- first_link->last_out = link;
-
- linkTableOut[start_point] = link;
+ LIST_INSERT_HEAD(&linkTableOut[start_point], link, list_out);
/* Set up pointers for input lookup table */
start_point = StartPointIn(alias_addr, link->alias_port, link_type);
- first_link = linkTableIn[start_point];
-
- link->last_in = NULL;
- link->next_in = first_link;
- link->start_point_in = start_point;
-
- if (first_link != NULL)
- first_link->last_in = link;
-
- linkTableIn[start_point] = link;
+ LIST_INSERT_HEAD(&linkTableIn[start_point], link, list_in);
/* Link-type dependent initialization */
switch(link_type)
@@ -1190,8 +1148,7 @@ _FindLinkOut(struct in_addr src_addr,
struct alias_link *link;
i = StartPointOut(src_addr, dst_addr, src_port, dst_port, link_type);
- link = linkTableOut[i];
- while (link != NULL)
+ LIST_FOREACH(link, &linkTableOut[i], list_out)
{
if (link->src_addr.s_addr == src_addr.s_addr
&& link->server == NULL
@@ -1203,7 +1160,6 @@ _FindLinkOut(struct in_addr src_addr,
link->timestamp = timeStamp;
break;
}
- link = link->next_out;
}
/* Search for partially specified links. */
@@ -1299,8 +1255,7 @@ _FindLinkIn(struct in_addr dst_addr,
/* Search loop */
start_point = StartPointIn(alias_addr, alias_port, link_type);
- link = linkTableIn[start_point];
- while (link != NULL)
+ LIST_FOREACH(link, &linkTableIn[start_point], list_in)
{
int flags;
@@ -1350,7 +1305,6 @@ _FindLinkIn(struct in_addr dst_addr,
link_unknown_dst_port = link;
}
}
- link = link->next_in;
}
@@ -2554,9 +2508,9 @@ PacketAliasInit(void)
houseKeepingResidual = 0;
for (i=0; i<LINK_TABLE_OUT_SIZE; i++)
- linkTableOut[i] = NULL;
+ LIST_INIT(&linkTableOut[i]);
for (i=0; i<LINK_TABLE_IN_SIZE; i++)
- linkTableIn[i] = NULL;
+ LIST_INIT(&linkTableIn[i]);
atexit(PacketAliasUninit);
firstCall = 0;
@@ -2649,7 +2603,6 @@ PacketAliasCheckNewLink(void)
****************/
/* Firewall include files */
-#include <sys/queue.h>
#include <net/if.h>
#include <netinet/ip_fw.h>
#include <string.h>
OpenPOWER on IntegriCloud