logYesNo(nsjconf->keep_caps), nsjconf->tmpfs_size);
struct mounts_t *p;
- LIST_FOREACH(p, &nsjconf->mountpts, pointers) {
+ TAILQ_FOREACH(p, &nsjconf->mountpts, pointers) {
LOG_I("Mount point: src:'%s' dst:'%s' type:'%s' flags:0x%tx options:'%s'",
p->src, p->dst, p->fs_type, p->flags, p->options);
}
(*nsjconf) = (struct nsjconf_t) {
.hostname = "NSJAIL",
.cwd = "/",
- .chroot = "",
+ .chroot = NULL,
.argv = NULL,
.port = 31337,
.uid = -1,
};
/* *INDENT-OFF* */
- LIST_INIT(&nsjconf->pids);
- LIST_INIT(&nsjconf->mountpts);
+ TAILQ_INIT(&nsjconf->pids);
+ TAILQ_INIT(&nsjconf->mountpts);
const char *user = "nobody";
const char *group = "nobody";
p->flags = MS_BIND | MS_REC | MS_PRIVATE | MS_RDONLY;
p->options = NULL;
p->fs_type = NULL;
- LIST_INSERT_HEAD(&nsjconf->mountpts, p, pointers);
+ TAILQ_INSERT_TAIL(&nsjconf->mountpts, p, pointers);
}
break;
case 'B':
p->flags = MS_BIND | MS_REC | MS_PRIVATE;
p->options = NULL;
p->fs_type = NULL;
- LIST_INSERT_HEAD(&nsjconf->mountpts, p, pointers);
+ TAILQ_INSERT_TAIL(&nsjconf->mountpts, p, pointers);
}
break;
case 'T':
p->flags = 0;
p->options = cmdlineTmpfsSz;
p->fs_type = "tmpfs";
- LIST_INSERT_HEAD(&nsjconf->mountpts, p, pointers);
+ TAILQ_INSERT_TAIL(&nsjconf->mountpts, p, pointers);
}
break;
case 'M':
p->flags = 0;
p->options = NULL;
p->fs_type = "proc";
- LIST_INSERT_HEAD(&nsjconf->mountpts, p, pointers);
+ TAILQ_INSERT_HEAD(&nsjconf->mountpts, p, pointers);
}
if (strlen(nsjconf->chroot) > 0) {
struct mounts_t *p = malloc(sizeof(struct mounts_t));
if (nsjconf->is_root_rw == false) {
p->flags |= MS_RDONLY;
}
- LIST_INSERT_HEAD(&nsjconf->mountpts, p, pointers);
+ TAILQ_INSERT_HEAD(&nsjconf->mountpts, p, pointers);
}
if (logInitLogFile(nsjconf, logfile, nsjconf->verbose) == false) {
time_t start;
char remote_txt[64];
struct sockaddr_in6 remote_addr;
- LIST_ENTRY(pids_t) pointers;
+ TAILQ_ENTRY(pids_t) pointers;
};
struct mounts_t {
const char *fs_type;
const char *options;
uintptr_t flags;
- LIST_ENTRY(mounts_t) pointers;
+ TAILQ_ENTRY(mounts_t) pointers;
};
enum mode_t {
unsigned int max_conns_per_ip;
size_t tmpfs_size;
bool mount_proc;
- LIST_HEAD(pidslist, pids_t) pids;
- LIST_HEAD(mountptslist, mounts_t) mountpts;
+ TAILQ_HEAD(pidslist, pids_t) pids;
+ TAILQ_HEAD(mountptslist, mounts_t) mountpts;
};
#endif /* _COMMON_H */
}
struct mounts_t *p;
- LIST_FOREACH(p, &nsjconf->mountpts, pointers) {
+ TAILQ_FOREACH(p, &nsjconf->mountpts, pointers) {
char dst[PATH_MAX];
snprintf(dst, sizeof(dst), "%s/%s", newrootdir, p->dst);
if (containMount(p, dst) == false) {
return false;
}
- LIST_FOREACH(p, &nsjconf->mountpts, pointers) {
+ TAILQ_FOREACH(p, &nsjconf->mountpts, pointers) {
if (containRemountRO(p) == false) {
return false;
}
unsigned int cnt = 0;
struct pids_t *p;
- LIST_FOREACH(p, &nsjconf->pids, pointers) {
+ TAILQ_FOREACH(p, &nsjconf->pids, pointers) {
if (memcmp
(addr.sin6_addr.s6_addr, p->remote_addr.sin6_addr.s6_addr,
sizeof(*p->remote_addr.sin6_addr.s6_addr)) == 0) {
p->start = time(NULL);
netConnToText(sock, true /* remote */ , p->remote_txt, sizeof(p->remote_txt),
&p->remote_addr);
- LIST_INSERT_HEAD(&nsjconf->pids, p, pointers);
+ TAILQ_INSERT_HEAD(&nsjconf->pids, p, pointers);
LOG_D("Added pid '%d' with start time '%u' to the queue for IP: '%s'", pid,
(unsigned int)p->start, p->remote_txt);
static void subprocRemove(struct nsjconf_t *nsjconf, pid_t pid)
{
struct pids_t *p;
- LIST_FOREACH(p, &nsjconf->pids, pointers) {
+ TAILQ_FOREACH(p, &nsjconf->pids, pointers) {
if (p->pid == pid) {
LOG_D("Removing pid '%d' from the queue (IP:'%s', start time:'%u')", p->pid,
p->remote_txt, (unsigned int)p->start);
- LIST_REMOVE(p, pointers);
+ TAILQ_REMOVE(&nsjconf->pids, p, pointers);
free(p);
return;
}
{
int cnt = 0;
struct pids_t *p;
- LIST_FOREACH(p, &nsjconf->pids, pointers) {
+ TAILQ_FOREACH(p, &nsjconf->pids, pointers) {
cnt++;
}
return cnt;
LOG_I("Total number of spawned namespaces: %d", subprocCount(nsjconf));
time_t now = time(NULL);
struct pids_t *p;
- LIST_FOREACH(p, &nsjconf->pids, pointers) {
+ TAILQ_FOREACH(p, &nsjconf->pids, pointers) {
time_t diff = now - p->start;
time_t left = nsjconf->tlimit ? nsjconf->tlimit - diff : 0;
LOG_I("PID: %d, Remote host: %s, Run time: %ld sec. (time left: %ld sec.)", p->pid,
time_t now = time(NULL);
struct pids_t *p;
- LIST_FOREACH(p, &nsjconf->pids, pointers) {
+ TAILQ_FOREACH(p, &nsjconf->pids, pointers) {
if (nsjconf->tlimit == 0) {
continue;
}
void subprocKillAll(struct nsjconf_t *nsjconf)
{
struct pids_t *p;
- LIST_FOREACH(p, &nsjconf->pids, pointers) {
+ TAILQ_FOREACH(p, &nsjconf->pids, pointers) {
kill(p->pid, SIGKILL);
}
}