struct alg_info_esp * alg_info_ah_create_from_str (const char *alg_str, const char **err_p, bool permitmann) { struct alg_info_esp *alg_info_esp; char esp_buf[256]; int ret =0; /* * alg_info storage should be sized dynamically * but this may require 2passes to know * transform count in advance. */ alg_info_esp=alloc_thing (struct alg_info_esp, "alg_info_esp"); strcpy(esp_buf, alg_str); if(!alg_info_discover_pfsgroup_hack(alg_info_esp, esp_buf, err_p)) { return NULL; } alg_info_esp->alg_info_protoid=PROTO_IPSEC_AH; ret=alg_info_parse_str((struct alg_info *)alg_info_esp, esp_buf, err_p, parser_init_ah, alg_info_ah_add, NULL, permitmann); if (ret<0) { pfreeany(alg_info_esp); alg_info_esp=NULL; } return alg_info_esp; }
struct alg_info_ike * alg_info_ike_create_from_str (const char *alg_str, const char **err_p) { struct alg_info_ike *alg_info_ike; /* * alg_info storage should be sized dynamically * but this may require 2passes to know * transform count in advance. */ alg_info_ike=alloc_thing (struct alg_info_ike, "alg_info_ike"); if (!alg_info_ike) goto out; alg_info_ike->alg_info_protoid=PROTO_ISAKMP; if (alg_info_parse_str((struct alg_info *)alg_info_ike, alg_str, err_p, parser_init_ike, alg_info_ike_add, lookup_group, TRUE) < 0) { pfreeany(alg_info_ike); alg_info_ike=NULL; } out: return alg_info_ike; }
struct alg_info_ike *alg_info_ike_create_from_str(const struct parser_policy *policy, const char *alg_str, char *err_buf, size_t err_buf_len) { /* * alg_info storage should be sized dynamically * but this may require two passes to know * transform count in advance. */ struct alg_info_ike *alg_info_ike = alloc_thing(struct alg_info_ike, "alg_info_ike"); return (struct alg_info_ike *) alg_info_parse_str(policy, &alg_info_ike->ai, alg_str, err_buf, err_buf_len, &ike_parser_protocol); }