Lines Matching refs:jp

58 static int jailparam_type(struct jailparam *jp);
78 struct jailparam *jp; in jail_setv() local
88 jp = alloca(njp * sizeof(struct jailparam)); in jail_setv()
91 if (jailparam_init(jp + njp, name) < 0) in jail_setv()
93 if (jailparam_import(jp + njp++, value) < 0) in jail_setv()
97 jid = jailparam_set(jp, njp, flags); in jail_setv()
98 jailparam_free(jp, njp); in jail_setv()
102 jailparam_free(jp, njp); in jail_setv()
115 struct jailparam *jp, *jp_lastjid, *jp_jid, *jp_name, *jp_key; in jail_getv() local
127 jp = alloca(njp * sizeof(struct jailparam)); in jail_getv()
133 if (jailparam_init(jp + njp, name) < 0) { in jail_getv()
137 if (!strcmp(jp[njp].jp_name, "lastjid")) { in jail_getv()
138 jp_lastjid = jp + njp; in jail_getv()
140 } else if (!strcmp(jp[njp].jp_name, "jid")) { in jail_getv()
141 jp_jid = jp + njp; in jail_getv()
143 } if (!strcmp(jp[njp].jp_name, "name")) { in jail_getv()
144 jp_name = jp + njp; in jail_getv()
167 jid = jailparam_get(jp, njp, flags); in jail_getv()
173 if (jp + i != jp_key) { in jail_getv()
175 if ((jp[i].jp_ctltype & CTLTYPE) == CTLTYPE_STRING) in jail_getv()
176 strcpy(valarg, jp[i].jp_value); in jail_getv()
178 value = jailparam_export(jp + i); in jail_getv()
186 jailparam_free(jp, njp); in jail_getv()
191 jailparam_free(jp, njp); in jail_getv()
202 struct jailparam *jp, *tjp; in jailparam_all() local
210 jp = malloc(nlist * sizeof(*jp)); in jailparam_all()
211 if (jp == NULL) { in jailparam_all()
254 tjp = reallocarray(jp, nlist, sizeof(*jp)); in jailparam_all()
257 jp = tjp; in jailparam_all()
259 if (jailparam_init(jp + njp, buf + sizeof(SJPARAM)) < 0) in jailparam_all()
264 tjp = reallocarray(jp, njp, sizeof(*jp)); in jailparam_all()
266 jp = tjp; in jailparam_all()
267 *jpp = jp; in jailparam_all()
271 jailparam_free(jp, njp); in jailparam_all()
272 free(jp); in jailparam_all()
280 jailparam_init(struct jailparam *jp, const char *name) in jailparam_init() argument
283 memset(jp, 0, sizeof(*jp)); in jailparam_init()
284 jp->jp_name = strdup(name); in jailparam_init()
285 if (jp->jp_name == NULL) { in jailparam_init()
289 if (jailparam_type(jp) < 0) { in jailparam_init()
290 jailparam_free(jp, 1); in jailparam_init()
291 jp->jp_name = NULL; in jailparam_init()
292 jp->jp_value = NULL; in jailparam_init()
303 jailparam_import(struct jailparam *jp, const char *value) in jailparam_import() argument
311 if ((jp->jp_ctltype & CTLTYPE) == CTLTYPE_STRING) { in jailparam_import()
312 jp->jp_value = strdup(value); in jailparam_import()
313 if (jp->jp_value == NULL) { in jailparam_import()
320 if (jp->jp_elemlen) { in jailparam_import()
322 jp->jp_value = strdup(""); in jailparam_import()
323 if (jp->jp_value == NULL) { in jailparam_import()
327 jp->jp_valuelen = 0; in jailparam_import()
332 jp->jp_valuelen = jp->jp_elemlen * nval; in jailparam_import()
334 jp->jp_value = malloc(jp->jp_valuelen); in jailparam_import()
335 if (jp->jp_value == NULL) { in jailparam_import()
342 switch (jp->jp_ctltype & CTLTYPE) { in jailparam_import()
344 if (jp->jp_flags & (JP_BOOL | JP_NOBOOL)) { in jailparam_import()
346 avalue, fw, &((int *)jp->jp_value)[i])) { in jailparam_import()
350 jp->jp_name, fw, avalue); in jailparam_import()
356 if (jp->jp_flags & JP_JAILSYS) { in jailparam_import()
362 ((int *)jp->jp_value)[i] = JAIL_SYS_NEW; in jailparam_import()
366 &((int *)jp->jp_value)[i])) { in jailparam_import()
370 jp->jp_name, fw, avalue); in jailparam_import()
376 ((int *)jp->jp_value)[i] = strtol(avalue, &ep, 10); in jailparam_import()
381 jp->jp_name, fw, avalue); in jailparam_import()
387 ((unsigned *)jp->jp_value)[i] = in jailparam_import()
391 ((long *)jp->jp_value)[i] = strtol(avalue, &ep, 10); in jailparam_import()
394 ((unsigned long *)jp->jp_value)[i] = in jailparam_import()
398 ((int64_t *)jp->jp_value)[i] = in jailparam_import()
402 ((uint64_t *)jp->jp_value)[i] = in jailparam_import()
408 switch (jp->jp_structtype) { in jailparam_import()
411 &((struct in_addr *)jp->jp_value)[i]) != 1) in jailparam_import()
416 jp->jp_name, tvalue); in jailparam_import()
423 &((struct in6_addr *)jp->jp_value)[i]) != 1) in jailparam_import()
428 jp->jp_name, tvalue); in jailparam_import()
440 "unknown type for %s", jp->jp_name); in jailparam_import()
449 free(jp->jp_value); in jailparam_import()
450 jp->jp_value = NULL; in jailparam_import()
476 jailparam_import_raw(struct jailparam *jp, void *value, size_t valuelen) in jailparam_import_raw() argument
479 jp->jp_value = value; in jailparam_import_raw()
480 jp->jp_valuelen = valuelen; in jailparam_import_raw()
481 jp->jp_flags |= JP_RAWVALUE; in jailparam_import_raw()
489 jailparam_set(struct jailparam *jp, unsigned njp, int flags) in jailparam_set() argument
499 jiov[i].iov_base = jp[j].jp_name; in jailparam_set()
500 jiov[i].iov_len = strlen(jp[j].jp_name) + 1; in jailparam_set()
502 if (jp[j].jp_flags & (JP_BOOL | JP_NOBOOL)) { in jailparam_set()
509 if (jp[j].jp_value != NULL && in jailparam_set()
510 jp[j].jp_valuelen == sizeof(int) && in jailparam_set()
511 !*(int *)jp[j].jp_value) { in jailparam_set()
513 nname = jp[j].jp_flags & JP_BOOL in jailparam_set()
514 ? noname(jp[j].jp_name) in jailparam_set()
515 : nononame(jp[j].jp_name); in jailparam_set()
525 } else if (jp[j].jp_flags & JP_KEYVALUE && in jailparam_set()
526 jp[j].jp_value == NULL) { in jailparam_set()
534 if (jp[j].jp_value == NULL && jp[j].jp_valuelen > 0 && in jailparam_set()
535 jailparam_import(jp + j, "") < 0) { in jailparam_set()
540 jiov[i].iov_base = jp[j].jp_value; in jailparam_set()
542 (jp[j].jp_ctltype & CTLTYPE) == CTLTYPE_STRING in jailparam_set()
543 ? strlen(jp[j].jp_value) + 1 in jailparam_set()
544 : jp[j].jp_valuelen; in jailparam_set()
562 if ((jp[j].jp_flags & (JP_BOOL | JP_NOBOOL)) && in jailparam_set()
563 jp[j].jp_value != NULL && in jailparam_set()
564 jp[j].jp_valuelen == sizeof(int) && in jailparam_set()
565 !*(int *)jp[j].jp_value) in jailparam_set()
571 jailparam_get(struct jailparam *jp, unsigned njp, int flags) in jailparam_get() argument
586 if (!strcmp(jp[j].jp_name, "lastjid")) in jailparam_get()
587 jp_lastjid = jp + j; in jailparam_get()
588 else if (!strcmp(jp[j].jp_name, "jid")) in jailparam_get()
589 jp_jid = jp + j; in jailparam_get()
590 else if (!strcmp(jp[j].jp_name, "name")) in jailparam_get()
591 jp_name = jp + j; in jailparam_get()
592 else if (jp[j].jp_elemlen && !(jp[j].jp_flags & JP_RAWVALUE)) { in jailparam_get()
594 jiov[ai].iov_base = jp[j].jp_name; in jailparam_get()
595 jiov[ai].iov_len = strlen(jp[j].jp_name) + 1; in jailparam_get()
633 if (jp[j].jp_elemlen && !(jp[j].jp_flags & JP_RAWVALUE)) { in jailparam_get()
635 jiov[ai].iov_len += jp[j].jp_elemlen * ARRAY_SLOP; in jailparam_get()
636 if (jp[j].jp_valuelen >= jiov[ai].iov_len) in jailparam_get()
637 jiov[ai].iov_len = jp[j].jp_valuelen; in jailparam_get()
639 jp[j].jp_valuelen = jiov[ai].iov_len; in jailparam_get()
640 if (jp[j].jp_value != NULL) in jailparam_get()
641 free(jp[j].jp_value); in jailparam_get()
642 jp[j].jp_value = malloc(jp[j].jp_valuelen); in jailparam_get()
643 if (jp[j].jp_value == NULL) { in jailparam_get()
649 jiov[ai].iov_base = jp[j].jp_value; in jailparam_get()
652 } else if (jp + j != jp_key) { in jailparam_get()
653 jiov[i].iov_base = jp[j].jp_name; in jailparam_get()
654 jiov[i].iov_len = strlen(jp[j].jp_name) + 1; in jailparam_get()
656 if (jp[j].jp_value == NULL && in jailparam_get()
657 !(jp[j].jp_flags & JP_RAWVALUE)) { in jailparam_get()
658 jp[j].jp_value = malloc(jp[j].jp_valuelen); in jailparam_get()
659 if (jp[j].jp_value == NULL) { in jailparam_get()
665 jiov[i].iov_base = jp[j].jp_value; in jailparam_get()
666 jiov[i].iov_len = jp[j].jp_valuelen; in jailparam_get()
681 if (jp[j].jp_elemlen && in jailparam_get()
682 !(jp[j].jp_flags & JP_RAWVALUE)) { in jailparam_get()
692 if (jp[j].jp_elemlen && in jailparam_get()
693 !(jp[j].jp_flags & JP_RAWVALUE)) { in jailparam_get()
696 jp[j].jp_elemlen * ARRAY_SLOP; in jailparam_get()
697 if (jp[j].jp_valuelen >= jiov[ai].iov_len) in jailparam_get()
698 jiov[ai].iov_len = jp[j].jp_valuelen; in jailparam_get()
700 jp[j].jp_valuelen = jiov[ai].iov_len; in jailparam_get()
701 if (jp[j].jp_value != NULL) in jailparam_get()
702 free(jp[j].jp_value); in jailparam_get()
703 jp[j].jp_value = in jailparam_get()
705 if (jp[j].jp_value == NULL) { in jailparam_get()
711 jiov[ai].iov_base = jp[j].jp_value; in jailparam_get()
721 if (jp[j].jp_elemlen && !(jp[j].jp_flags & JP_RAWVALUE)) { in jailparam_get()
723 jp[j].jp_valuelen = jiov[ai].iov_len; in jailparam_get()
725 } else if (jp + j != jp_key) { in jailparam_get()
727 jp[j].jp_valuelen = jiov[i].iov_len; in jailparam_get()
738 jailparam_export(struct jailparam *jp) in jailparam_export() argument
746 if (jp->jp_value == NULL) { in jailparam_export()
748 "parameter %s was not imported", jp->jp_name); in jailparam_export()
752 if ((jp->jp_ctltype & CTLTYPE) == CTLTYPE_STRING) { in jailparam_export()
753 value = strdup(jp->jp_value); in jailparam_export()
758 nval = jp->jp_elemlen ? jp->jp_valuelen / jp->jp_elemlen : 1; in jailparam_export()
769 switch (jp->jp_ctltype & CTLTYPE) { in jailparam_export()
771 ival = ((int *)jp->jp_value)[i]; in jailparam_export()
772 if ((jp->jp_flags & (JP_BOOL | JP_NOBOOL)) && in jailparam_export()
778 if ((jp->jp_flags & JP_JAILSYS) && in jailparam_export()
789 ((unsigned *)jp->jp_value)[i]); in jailparam_export()
793 ((long *)jp->jp_value)[i]); in jailparam_export()
797 ((unsigned long *)jp->jp_value)[i]); in jailparam_export()
801 (intmax_t)((int64_t *)jp->jp_value)[i]); in jailparam_export()
805 (uintmax_t)((uint64_t *)jp->jp_value)[i]); in jailparam_export()
808 switch (jp->jp_structtype) { in jailparam_export()
811 &((struct in_addr *)jp->jp_value)[i], in jailparam_export()
820 &((struct in6_addr *)jp->jp_value)[i], in jailparam_export()
834 "unknown type for %s", jp->jp_name); in jailparam_export()
863 jailparam_free(struct jailparam *jp, unsigned njp) in jailparam_free() argument
868 free(jp[j].jp_name); in jailparam_free()
869 if (!(jp[j].jp_flags & JP_RAWVALUE)) in jailparam_free()
870 free(jp[j].jp_value); in jailparam_free()
878 jailparam_type(struct jailparam *jp) in jailparam_type() argument
890 name = jp->jp_name; in jailparam_type()
892 jp->jp_valuelen = sizeof(int); in jailparam_type()
893 jp->jp_ctltype = CTLTYPE_INT | CTLFLAG_WR; in jailparam_type()
924 jp->jp_flags |= JP_NOBOOL; in jailparam_type()
941 jp->jp_flags |= JP_KEYVALUE; in jailparam_type()
948 "unknown parameter: %s", jp->jp_name); in jailparam_type()
961 jp->jp_ctltype = desc.i; in jailparam_type()
963 if (jp->jp_flags & JP_NOBOOL) { in jailparam_type()
965 jp->jp_valuelen = sizeof(int); in jailparam_type()
972 if (jp->jp_flags & JP_KEYVALUE) { in jailparam_type()
990 jp->jp_flags |= JP_BOOL; in jailparam_type()
992 jp->jp_flags |= JP_JAILSYS; in jailparam_type()
994 jp->jp_valuelen = sizeof(int); in jailparam_type()
998 jp->jp_valuelen = sizeof(long); in jailparam_type()
1002 jp->jp_valuelen = sizeof(int64_t); in jailparam_type()
1014 jp->jp_valuelen = strtoul(desc.s, NULL, 10); in jailparam_type()
1018 jp->jp_structtype = JPS_IN_ADDR; in jailparam_type()
1019 jp->jp_valuelen = sizeof(struct in_addr); in jailparam_type()
1021 jp->jp_structtype = JPS_IN6_ADDR; in jailparam_type()
1022 jp->jp_valuelen = sizeof(struct in6_addr); in jailparam_type()
1026 NULL, &jp->jp_valuelen, NULL, 0) < 0) { in jailparam_type()
1063 "unknown type for %s", jp->jp_name); in jailparam_type()
1068 jp->jp_elemlen = jp->jp_valuelen; in jailparam_type()
1069 jp->jp_valuelen = 0; in jailparam_type()