initctl: Order inetd filters same as in .conf file.

Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
This commit is contained in:
Joachim Nilsson committed 2015-06-21 19:06:07 +02:00
1 parent e04c73bab8
commit c6a9fa3b98
2 files changed
+10 -9

No files matched your search

+8 -7
View File
@@ -258,7 +258,7 @@ static inetd_filter_t *find_filter(inetd_t *inetd, char *ifname)
if (!ifname) if (!ifname)
ifname = "*"; ifname = "*";
LIST_FOREACH(filter, &inetd->filters, link) { TAILQ_FOREACH(filter, &inetd->filters, link) {
_d("Checking filters for %s: '%s' vs '%s' (exact match) ...", _d("Checking filters for %s: '%s' vs '%s' (exact match) ...",
inetd->name, filter->ifname, ifname); inetd->name, filter->ifname, ifname);
@@ -279,7 +279,7 @@ inetd_filter_t *inetd_filter_match(inetd_t *inetd, char *ifname)
if (filter) if (filter)
return filter; return filter;
LIST_FOREACH(filter, &inetd->filters, link) { TAILQ_FOREACH(filter, &inetd->filters, link) {
_d("Checking filters for %s: '%s' vs '%s' (any match) ...", _d("Checking filters for %s: '%s' vs '%s' (any match) ...",
inetd->name, filter->ifname, ifname); inetd->name, filter->ifname, ifname);
@@ -316,7 +316,7 @@ int inetd_allow(inetd_t *inetd, char *ifname)
filter->deny = 0; filter->deny = 0;
strlcpy(filter->ifname, ifname, sizeof(filter->ifname)); strlcpy(filter->ifname, ifname, sizeof(filter->ifname));
LIST_INSERT_HEAD(&inetd->filters, filter, link); TAILQ_INSERT_TAIL(&inetd->filters, filter, link);
return 0; return 0;
} }
@@ -347,7 +347,7 @@ int inetd_deny(inetd_t *inetd, char *ifname)
filter->deny = 1; filter->deny = 1;
strlcpy(filter->ifname, ifname, sizeof(filter->ifname)); strlcpy(filter->ifname, ifname, sizeof(filter->ifname));
LIST_INSERT_HEAD(&inetd->filters, filter, link); TAILQ_INSERT_TAIL(&inetd->filters, filter, link);
return 0; return 0;
} }
@@ -407,7 +407,7 @@ int inetd_filter_str(inetd_t *inetd, char *str, size_t len)
snprintf(str, len, "%s allow %s ", inetd->name, snprintf(str, len, "%s allow %s ", inetd->name,
inetd->type == SOCK_DGRAM ? "UDP" : "TCP"); inetd->type == SOCK_DGRAM ? "UDP" : "TCP");
LIST_FOREACH(filter, &inetd->filters, link) { TAILQ_FOREACH(filter, &inetd->filters, link) {
char ifname[IFNAMSIZ]; char ifname[IFNAMSIZ];
if (filter->deny) if (filter->deny)
@@ -425,7 +425,7 @@ int inetd_filter_str(inetd_t *inetd, char *str, size_t len)
} }
prev = 0; prev = 0;
LIST_FOREACH(filter, &inetd->filters, link) { TAILQ_FOREACH(filter, &inetd->filters, link) {
char ifname[IFNAMSIZ]; char ifname[IFNAMSIZ];
if (!filter->deny) if (!filter->deny)
@@ -490,6 +490,7 @@ int inetd_new(inetd_t *inetd, char *name, char *service, char *proto, int forkin
if (!name) if (!name)
name = service; name = service;
strlcpy(inetd->name, name, sizeof(inetd->name)); strlcpy(inetd->name, name, sizeof(inetd->name));
TAILQ_INIT(&inetd->filters);
/* Naïve mapping tcp->stream, udp->dgram, other->dgram */ /* Naïve mapping tcp->stream, udp->dgram, other->dgram */
if (!strcasecmp(sv->s_proto, "tcp")) if (!strcasecmp(sv->s_proto, "tcp"))
@@ -512,7 +513,7 @@ int inetd_del(inetd_t *inetd)
{ {
inetd_filter_t *filter, *tmp; inetd_filter_t *filter, *tmp;
LIST_FOREACH_SAFE(filter, &inetd->filters, link, tmp) TAILQ_FOREACH_SAFE(filter, &inetd->filters, link, tmp)
free(filter); free(filter);
return 0; return 0;
+2 -2
View File
@@ -32,7 +32,7 @@
typedef struct inetd_filter { typedef struct inetd_filter {
LIST_ENTRY(inetd_filter) link; TAILQ_ENTRY(inetd_filter) link;
int deny; /* 0:allow, 1:deny */ int deny; /* 0:allow, 1:deny */
char ifname[IFNAMSIZ]; /* E.g., eth0 */ char ifname[IFNAMSIZ]; /* E.g., eth0 */
} inetd_filter_t; } inetd_filter_t;
@@ -49,7 +49,7 @@ typedef struct {
char name[10]; char name[10];
int (*cmd)(int type); /* internal inetd service, like 'time' */ int (*cmd)(int type); /* internal inetd service, like 'time' */
LIST_HEAD(, inetd_filter) filters; TAILQ_HEAD(, inetd_filter) filters;
} inetd_t; } inetd_t;
int inetd_dgram_peek (int sd, char *ifname); int inetd_dgram_peek (int sd, char *ifname);