Lines Matching defs:pr

98 prison_restrict_ip4(struct prison *pr, struct in_addr *newip4)
103 ppr = pr->pr_parent;
104 if (!(pr->pr_flags & PR_IP4_USER)) {
106 if (pr->pr_ip4s < ppr->pr_ip4s) {
123 free(pr->pr_ip4, M_PRISON);
124 pr->pr_ip4 = newip4;
125 pr->pr_ip4s = ppr->pr_ip4s;
129 pr->pr_ip4s = ppr->pr_ip4s;
130 if (pr->pr_ip4s > 0)
131 bcopy(ppr->pr_ip4, pr->pr_ip4,
132 pr->pr_ip4s * sizeof(*newip4));
133 else if (pr->pr_ip4 != NULL) {
134 free(pr->pr_ip4, M_PRISON);
135 pr->pr_ip4 = NULL;
137 } else if (pr->pr_ip4s > 0) {
140 if (pr->pr_ip4[0].s_addr == ppr->pr_ip4[ij].s_addr)
145 bcopy(pr->pr_ip4 + 1, pr->pr_ip4,
146 --pr->pr_ip4s * sizeof(*pr->pr_ip4));
149 for (ij = 1; ii < pr->pr_ip4s; ) {
150 if (pr->pr_ip4[ii].s_addr == ppr->pr_ip4[0].s_addr) {
155 prison_qcmp_v4(&pr->pr_ip4[ii], &ppr->pr_ip4[ij])) {
157 bcopy(pr->pr_ip4 + ii + 1, pr->pr_ip4 + ii,
158 (--pr->pr_ip4s - ii) * sizeof(*pr->pr_ip4));
169 if (pr->pr_ip4s == 0) {
170 free(pr->pr_ip4, M_PRISON);
171 pr->pr_ip4 = NULL;
189 struct prison *pr;
194 pr = cred->cr_prison;
195 if (!(pr->pr_flags & PR_IP4))
197 mtx_lock(&pr->pr_mtx);
198 if (!(pr->pr_flags & PR_IP4)) {
199 mtx_unlock(&pr->pr_mtx);
202 if (pr->pr_ip4 == NULL) {
203 mtx_unlock(&pr->pr_mtx);
207 ia->s_addr = pr->pr_ip4[0].s_addr;
208 mtx_unlock(&pr->pr_mtx);
222 struct prison *pr;
232 pr = cred->cr_prison;
233 if (pr->pr_flags & PR_IP4_SADDRSEL)
287 struct prison *pr;
294 pr = cred->cr_prison;
295 if (!(pr->pr_flags & PR_IP4))
297 mtx_lock(&pr->pr_mtx);
298 if (!(pr->pr_flags & PR_IP4)) {
299 mtx_unlock(&pr->pr_mtx);
302 if (pr->pr_ip4 == NULL) {
303 mtx_unlock(&pr->pr_mtx);
313 if (pr->pr_ip4s == 1)
314 ia->s_addr = pr->pr_ip4[0].s_addr;
315 mtx_unlock(&pr->pr_mtx);
319 error = prison_check_ip4_locked(pr, ia);
321 ia->s_addr = pr->pr_ip4[0].s_addr;
325 mtx_unlock(&pr->pr_mtx);
338 struct prison *pr;
343 pr = cred->cr_prison;
344 if (!(pr->pr_flags & PR_IP4))
346 mtx_lock(&pr->pr_mtx);
347 if (!(pr->pr_flags & PR_IP4)) {
348 mtx_unlock(&pr->pr_mtx);
351 if (pr->pr_ip4 == NULL) {
352 mtx_unlock(&pr->pr_mtx);
357 prison_check_ip4_locked(pr, ia) == EADDRNOTAVAIL) {
358 ia->s_addr = pr->pr_ip4[0].s_addr;
359 mtx_unlock(&pr->pr_mtx);
366 mtx_unlock(&pr->pr_mtx);
377 prison_check_ip4_locked(const struct prison *pr, const struct in_addr *ia)
384 if (pr->pr_ip4[0].s_addr == ia->s_addr)
391 z = pr->pr_ip4s - 2;
394 d = prison_qcmp_v4(&pr->pr_ip4[i+1], ia);
409 struct prison *pr;
415 pr = cred->cr_prison;
416 if (!(pr->pr_flags & PR_IP4))
418 mtx_lock(&pr->pr_mtx);
419 if (!(pr->pr_flags & PR_IP4)) {
420 mtx_unlock(&pr->pr_mtx);
423 if (pr->pr_ip4 == NULL) {
424 mtx_unlock(&pr->pr_mtx);
428 error = prison_check_ip4_locked(pr, ia);
429 mtx_unlock(&pr->pr_mtx);