Lines Matching refs:proto
464 struct proto *proto; in sa_dump() local
478 for (proto = TAILQ_FIRST(&sa->protos); proto; in sa_dump()
479 proto = TAILQ_NEXT(proto, link)) { in sa_dump()
481 proto->no, proto->proto)); in sa_dump()
484 header, proto->spi_sz[0], proto->spi[0], proto->spi_sz[1], in sa_dump()
485 proto->spi[1])); in sa_dump()
494 if (proto->spi[i]) { in sa_dump()
498 proto->spi[i], proto->spi_sz[i])); in sa_dump()
538 report_proto(FILE *fd, struct proto *proto) in report_proto() argument
543 switch (proto->proto) { in report_proto()
545 keylen = ipsec_esp_enckeylength(proto); in report_proto()
546 hashlen = ipsec_esp_authkeylength(proto); in report_proto()
552 switch (proto->id) { in report_proto()
582 fprintf(fd, "unknown (%d)\n", proto->id); in report_proto()
587 if (!proto->data) { in report_proto()
591 iproto = proto->data; in report_proto()
630 hashlen = ipsec_ah_keylength(proto); in report_proto()
636 switch (proto->id) { in report_proto()
662 fprintf(fd, "unknown (%d)", proto->id); in report_proto()
667 fprintf(fd, "report_proto: invalid proto %d\n", proto->proto); in report_proto()
720 struct proto *proto; in report_phase2() local
724 for (proto = TAILQ_FIRST(&sa->protos); proto; in report_phase2()
725 proto = TAILQ_NEXT(proto, link)) { in report_phase2()
729 if (proto->spi[i]) in report_phase2()
730 report_spi(fd, proto->spi[i], in report_phase2()
731 proto->spi_sz[i], i); in report_phase2()
736 report_proto(fd, proto); in report_phase2()
800 proto_free(struct proto *proto) in proto_free() argument
803 struct sa *sa = proto->sa; in proto_free()
807 if (proto->spi[i]) { in proto_free()
809 sa->doi->delete_spi(sa, proto, i); in proto_free()
810 free(proto->spi[i]); in proto_free()
812 TAILQ_REMOVE(&sa->protos, proto, link); in proto_free()
813 if (proto->data) { in proto_free()
815 sa->doi->free_proto_data(proto->data); in proto_free()
816 free(proto->data); in proto_free()
818 if (proto->xf_cnt) in proto_free()
819 while ((pa = TAILQ_FIRST(&proto->xfs)) != NULL) { in proto_free()
821 TAILQ_REMOVE(&proto->xfs, pa, next); in proto_free()
825 LOG_DBG((LOG_SA, 90, "proto_free: freeing %p", proto)); in proto_free()
826 free(proto); in proto_free()
873 struct proto *proto; in sa_release() local
883 while ((proto = TAILQ_FIRST(&sa->protos)) != 0) in sa_release()
884 proto_free(proto); in sa_release()
1019 sa_validate_proto_xf(struct proto *match, struct payload *xf, int phase) in sa_validate_proto_xf()
1030 if (match->proto != GET_ISAKMP_PROP_PROTO(xf->context->p)) { in sa_validate_proto_xf()
1090 struct proto **protop) in sa_add_transform()
1092 struct proto *proto; in sa_add_transform() local
1097 proto = calloc(1, sizeof *proto); in sa_add_transform()
1098 if (!proto) in sa_add_transform()
1100 (unsigned long)sizeof *proto); in sa_add_transform()
1111 for (proto = TAILQ_FIRST(&sa->protos); in sa_add_transform()
1112 proto && proto->no != GET_ISAKMP_PROP_NO(prop->p); in sa_add_transform()
1113 proto = TAILQ_NEXT(proto, link)) in sa_add_transform()
1119 if (!proto || sa_validate_proto_xf(proto, xf, sa->phase) != 0) in sa_add_transform()
1120 for (proto = TAILQ_FIRST(&sa->protos); in sa_add_transform()
1121 proto && sa_validate_proto_xf(proto, xf, sa->phase) != 0; in sa_add_transform()
1122 proto = TAILQ_NEXT(proto, link)) in sa_add_transform()
1125 if (!proto) in sa_add_transform()
1127 *protop = proto; in sa_add_transform()
1131 proto->data = calloc(1, sa->doi->proto_size); in sa_add_transform()
1132 if (!proto->data) { in sa_add_transform()
1138 proto->no = GET_ISAKMP_PROP_NO(prop->p); in sa_add_transform()
1139 proto->proto = GET_ISAKMP_PROP_PROTO(prop->p); in sa_add_transform()
1140 proto->spi_sz[0] = GET_ISAKMP_PROP_SPI_SZ(prop->p); in sa_add_transform()
1141 if (proto->spi_sz[0]) { in sa_add_transform()
1142 proto->spi[0] = malloc(proto->spi_sz[0]); in sa_add_transform()
1143 if (!proto->spi[0]) in sa_add_transform()
1145 memcpy(proto->spi[0], prop->p + ISAKMP_PROP_SPI_OFF, in sa_add_transform()
1146 proto->spi_sz[0]); in sa_add_transform()
1148 proto->chosen = xf; in sa_add_transform()
1149 proto->sa = sa; in sa_add_transform()
1150 proto->id = GET_ISAKMP_TRANSFORM_ID(xf->p); in sa_add_transform()
1152 TAILQ_INSERT_TAIL(&sa->protos, proto, link); in sa_add_transform()
1156 sa->doi->proto_init(proto, 0); in sa_add_transform()
1161 proto, proto->no, proto->proto, proto->chosen, proto->sa, in sa_add_transform()
1162 proto->id)); in sa_add_transform()
1168 free(proto->data); in sa_add_transform()
1169 free(proto); in sa_add_transform()