mirror of
https://github.com/troglobit/finit.git
synced 2026-11-06 15:51:03 +00:00
initctl: Order inetd filters same as in .conf file.
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
This commit is contained in:
1 parent
e04c73bab8
commit
c6a9fa3b98
2 files changed
+10
-9
No files matched your search
@@ -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;
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in new issue
Block a user