Lines Matching defs:j

61 static void clear_persist(struct cfjail *j);
62 static int update_jail(struct cfjail *j);
63 static int rdtun_params(struct cfjail *j, int dofail);
64 static void running_jid(struct cfjail *j);
65 static void jail_quoted_warnx(const struct cfjail *j, const char *name_msg,
67 static int jailparam_set_note(const struct cfjail *j, struct jailparam *jp,
69 static void print_jail(FILE *fp, struct cfjail *j, int oldcl, int running);
168 struct cfjail *j;
419 while ((j = next_jail()))
421 if (j->flags & JF_FAILED) {
423 if (j->comparam == NULL) {
424 dep_done(j, 0);
428 if (!(j->flags & JF_PARAMS))
430 j->flags |= JF_PARAMS;
432 add_param(j, NULL, IP_ALLOW_DYING, NULL);
433 if (check_intparams(j) < 0)
435 if ((j->flags & (JF_START | JF_SET)) &&
436 import_params(j) < 0)
439 if (j->intparams[IP_ALLOW_DYING] && !dying_warned) {
444 if (!j->jid)
445 running_jid(j);
446 if (finish_command(j))
449 switch (j->flags & JF_OP_MASK) {
455 j->flags = j->jid < 0
456 ? (j->flags & JF_CLEANUP) | JF_START : JF_SET;
459 if (j->jid < 0 && !(j->flags & JF_CLEANUP)) {
460 jail_quoted_warnx(j, "not found",
462 failed(j);
465 j->flags = rdtun_params(j, 0)
466 ? (j->flags & JF_CLEANUP) | JF_RESTART : JF_SET;
467 if (j->flags == JF_RESTART)
468 dep_reset(j);
471 j->flags = j->jid < 0 ? JF_START : rdtun_params(j, 0)
472 ? (j->flags & JF_CLEANUP) | JF_RESTART : JF_SET;
473 if (j->flags == JF_RESTART)
474 dep_reset(j);
477 switch (j->flags & JF_OP_MASK) {
479 if (j->comparam == NULL) {
480 if (j->jid > 0 &&
481 !(j->flags & (JF_DEPEND | JF_WILD))) {
482 jail_quoted_warnx(j, "already exists",
484 failed(j);
487 if (dep_check(j))
489 if (j->jid > 0)
491 if (j->flags & JF_CLEANUP) {
492 j->flags |= JF_STOP;
493 j->comparam = cleancommands;
495 j->comparam = startcommands;
496 j->comparam = startcommands;
497 j->comstring = NULL;
499 if (next_command(j))
501 if (j->flags & JF_STOP)
504 clear_persist(j);
506 print_jail(jfp, j, oldcl, 1);
507 dep_done(j, 0);
511 if (j->jid < 0 && !(j->flags & JF_DEPEND)) {
512 jail_quoted_warnx(j, "not found",
514 failed(j);
517 if (dep_check(j))
519 if (!(j->flags & JF_DEPEND)) {
520 if (rdtun_params(j, 1) < 0 ||
521 update_jail(j) < 0)
523 if (verbose >= 0 && (j->name || verbose > 0))
524 jail_note(j, "updated\n");
526 dep_done(j, 0);
531 if (j->comparam == NULL) {
532 if (dep_check(j))
534 if (j->flags & JF_CLEANUP) {
535 j->comparam = j->jid < 0
537 } else if (j->jid < 0) {
538 if (!(j->flags & (JF_DEPEND|JF_WILD))) {
540 jail_quoted_warnx(j,
542 failed(j);
547 j->comparam = stopcommands;
548 j->comstring = NULL;
549 } else if ((j->flags & JF_FAILED) && j->jid > 0)
551 if (next_command(j))
554 dep_done(j, 0);
555 if ((j->flags & (JF_START | JF_FAILED)) == JF_START) {
556 j->comparam = NULL;
557 j->flags &= ~(JF_STOP | JF_CLEANUP);
558 dep_reset(j);
559 requeue(j, j->ndeps ? &depend : &ready);
574 failed(struct cfjail *j)
576 j->flags |= JF_FAILED;
577 TAILQ_REMOVE(j->queue, j, tq);
578 TAILQ_INSERT_HEAD(&ready, j, tq);
579 j->queue = &ready;
622 jail_note(const struct cfjail *j, const char *fmt, ...)
635 if (j->name)
636 printf("%s: %s", j->name, cs);
645 jail_warnx(const struct cfjail *j, const char *fmt, ...)
658 if (j->name)
659 warnx("%s: %s", j->name, cs);
668 create_jail(struct cfjail *j)
679 if ((path = string_param(j->intparams[KP_PATH]))) {
680 if (j->name != NULL && path[0] != '/') {
681 jail_warnx(j, "path %s: not an absolute pathname",
686 jail_warnx(j, "path %s: %s", path, strerror(errno));
690 jail_warnx(j, "path %s: %s", path, strerror(ENOTDIR));
699 dopersist = !bool_param(j->intparams[KP_PERSIST]) &&
700 (j->intparams[IP_EXEC_START] || j->intparams[IP_COMMAND] ||
701 j->intparams[IP_EXEC_POSTSTART]);
703 alloca((j->njp + dopersist) * sizeof(struct jailparam));
705 jail_warnx(j, "%s", jail_errmsg);
708 for (jp = j->jp; jp < j->jp + j->njp; jp++)
713 j->jid = jailparam_set_note(j, setparams, ns, JAIL_CREATE);
714 if (j->jid < 0) {
715 jail_warnx(j, "%s", jail_errmsg);
716 failed(j);
720 if (j->jid > 0)
721 j->flags |= JF_PERSIST;
723 return j->jid;
730 clear_persist(struct cfjail *j)
735 if (!(j->flags & JF_PERSIST))
737 j->flags &= ~JF_PERSIST;
740 jiov[1].iov_base = &j->jid;
741 jiov[1].iov_len = sizeof(j->jid);
748 jail_note(j, "jail_set(JAIL_UPDATE) jid=%d nopersist%s%s\n",
749 j->jid, jid < 0 ? ": " : "",
757 update_jail(struct cfjail *j)
763 for (jp = j->jp; jp < j->jp + j->njp; jp++)
770 jailparam_import_raw(sjp, &j->jid, sizeof j->jid) < 0) {
771 jail_warnx(j, "%s", jail_errmsg);
772 failed(j);
775 for (jp = j->jp; jp < j->jp + j->njp; jp++)
779 jid = jailparam_set_note(j, setparams, ns, JAIL_UPDATE);
781 jail_warnx(j, "%s", jail_errmsg);
782 failed(j);
792 rdtun_params(struct cfjail *j, int dofail)
799 if (j->flags & JF_RDTUN)
801 j->flags |= JF_RDTUN;
803 for (jp = j->jp; jp < j->jp + j->njp; jp++)
810 jailparam_import_raw(rtjp, &j->jid, sizeof j->jid) < 0) {
811 jail_warnx(j, "%s", jail_errmsg);
814 for (jp = j->jp; jp < j->jp + j->njp; jp++)
822 for (jp = j->jp; rtjp < rtparams + nrt; jp++) {
844 jail_warnx(j, "%s cannot be "
847 failed(j);
867 running_jid(struct cfjail *j)
874 if ((pval = string_param(j->intparams[KP_JID]))) {
876 j->jid = -1;
883 } else if ((pval = string_param(j->intparams[KP_NAME]))) {
890 j->jid = -1;
893 j->jid = jail_get(jiov, 2, 0);
897 jail_quoted_warnx(const struct cfjail *j, const char *name_msg,
902 if ((pval = j->name) || (pval = string_param(j->intparams[KP_JID])) ||
903 (pval = string_param(j->intparams[KP_NAME])))
913 jailparam_set_note(const struct cfjail *j, struct jailparam *jp, unsigned njp,
922 jail_note(j, "jail_set(%s)",
947 print_jail(FILE *fp, struct cfjail *j, int oldcl, int running)
954 fprintf(fp, "%d%s", j->jid, separator);
955 print_param(fp, j->intparams[KP_PATH], ',', 0);
957 print_param(fp, j->intparams[KP_HOST_HOSTNAME], ',', 0);
960 print_param(fp, j->intparams[KP_IP4_ADDR], ',', 0);
962 if (j->intparams[KP_IP4_ADDR] &&
963 !TAILQ_EMPTY(&j->intparams[KP_IP4_ADDR]->val) &&
964 j->intparams[KP_IP6_ADDR] &&
965 !TAILQ_EMPTY(&j->intparams[KP_IP6_ADDR]->val))
970 print_param(fp, j->intparams[KP_IP6_ADDR], ',', 0);
973 print_param(fp, j->intparams[IP_COMMAND], ' ', 0);
977 fprintf(fp, "jid=%d", j->jid);
980 TAILQ_FOREACH(p, &j->params, tq)
998 struct cfjail *j;
1000 TAILQ_FOREACH(j, &cfjails, tq)
1001 print_jail(stdout, j, 0, 0);