Lines Matching defs:pip
603 PR_IP(struct prison_ip *pip, const pr_family_t af, int idx)
605 MPASS(pip);
607 MPASS(idx >= 0 && idx < pip->ips);
609 return (pip->pr_ip + pr_families[af].size * idx);
615 struct prison_ip *pip;
617 pip = malloc(sizeof(struct prison_ip) + cnt * pr_families[af].size,
619 if (pip != NULL)
620 pip->ips = cnt;
621 return (pip);
633 struct prison_ip *pip;
635 pip = prison_ip_alloc(af, cnt, M_WAITOK);
636 bcopy(op, pip->pr_ip, cnt * size);
646 qsort(PR_IP(pip, af, 1), cnt - 1, size, cmp);
653 if (!pr_families[af].valid(PR_IP(pip, af, i))) {
654 free(pip, M_PRISON);
658 (cmp(PR_IP(pip, af, 0), PR_IP(pip, af, i + 1)) == 0 ||
659 cmp(PR_IP(pip, af, i), PR_IP(pip, af, i + 1)) == 0)) {
660 free(pip, M_PRISON);
665 return (pip);
676 struct prison_ip *pip;
679 pip = prison_ip_alloc(af, ppip->ips, M_WAITOK);
680 bcopy(ppip->pr_ip, pip->pr_ip, pip->ips * pr_families[af].size);
681 pr->pr_addrs[af] = pip;
692 prison_ip_parent_match(struct prison_ip *ppip, struct prison_ip *pip,
702 if (cmp(PR_IP(pip, af, 0), PR_IP(ppip, af, i)) == 0)
709 if (pip->ips > 1) {
710 for (i = j = 1; i < pip->ips; i++) {
711 if (cmp(PR_IP(pip, af, i), PR_IP(ppip, af, 0)) == 0)
715 if (cmp(PR_IP(pip, af, i),
736 struct prison_ip *pip, pr_family_t af)
761 (pip->ips == 1 && tpr->pr_addrs[af]->ips == 1))
763 for (int i = 0; i < pip->ips; i++)
764 if (prison_ip_check(tpr, af, PR_IP(pip, af, i)) == 0)
781 prison_ip_free(struct prison_ip *pip)
784 if (pip != NULL)
785 NET_EPOCH_CALL(prison_ip_free_deferred, &pip->ctx);
812 struct prison_ip *pip = pr->pr_addrs[af];
828 if (pip != NULL)
845 } else if (pip != NULL) {
849 i = 0; /* index in pip */
853 new = prison_ip_alloc(af, pip->ips, M_NOWAIT);
859 if (cmp(PR_IP(pip, af, 0), PR_IP(ppip, af, pi)) == 0) {
861 bcopy(PR_IP(pip, af, i), PR_IP(new, af, ips),
867 for (int pi = 1; i < pip->ips; ) {
869 if (cmp(PR_IP(pip, af, i), PR_IP(ppip, af, 0)) == 0) {
871 bcopy(PR_IP(pip, af, i), PR_IP(new, af, ips),
879 cmp(PR_IP(pip, af, i), PR_IP(ppip, af, pi))) {
884 bcopy(PR_IP(pip, af, i), PR_IP(new, af, ips),
920 struct prison_ip *pip;
927 pip = atomic_load_ptr(&pr->pr_addrs[af]);
928 if (__predict_false(pip == NULL))
932 if (cmp(PR_IP(pip, af, 0), addr) == 0)
939 z = pip->ips - 2;
942 d = cmp(PR_IP(pip, af, i + 1), addr);
962 const struct prison_ip *pip = pr->pr_addrs[af];
965 MPASS(pip);
967 return (pip->pr_ip);
4286 const struct prison_ip *pip;
4291 if ((pip = pr->pr_addrs[af]) != NULL) {
4292 if (*len < pip->ips) {
4293 *len = pip->ips;
4299 bcopy(pip->pr_ip, *out, pip->ips * size);
5013 struct prison_ip *pip;
5073 if ((pip = pr->pr_addrs[PR_INET]) != NULL) {
5074 db_printf(" ip4s = %d\n", pip->ips);
5075 for (ii = 0; ii < pip->ips; ii++)
5079 *(const struct in_addr *)PR_IP(pip, PR_INET, ii),
5084 if ((pip = pr->pr_addrs[PR_INET6]) != NULL) {
5085 db_printf(" ip6s = %d\n", pip->ips);
5086 for (ii = 0; ii < pip->ips; ii++)
5090 (const struct in6_addr *)PR_IP(pip, PR_INET6, ii)));