prep 54 certs/blacklist.c static int blacklist_preparse(struct key_preparsed_payload *prep) prep 56 certs/blacklist.c if (prep->datalen > 0) prep 61 certs/blacklist.c static void blacklist_free_preparse(struct key_preparsed_payload *prep) prep 369 crypto/asymmetric_keys/asymmetric_type.c static int asymmetric_key_preparse(struct key_preparsed_payload *prep) prep 376 crypto/asymmetric_keys/asymmetric_type.c if (prep->datalen == 0) prep 385 crypto/asymmetric_keys/asymmetric_type.c ret = parser->parse(prep); prep 415 crypto/asymmetric_keys/asymmetric_type.c static void asymmetric_key_free_preparse(struct key_preparsed_payload *prep) prep 417 crypto/asymmetric_keys/asymmetric_type.c struct asymmetric_key_subtype *subtype = prep->payload.data[asym_subtype]; prep 418 crypto/asymmetric_keys/asymmetric_type.c struct asymmetric_key_ids *kids = prep->payload.data[asym_key_ids]; prep 423 crypto/asymmetric_keys/asymmetric_type.c subtype->destroy(prep->payload.data[asym_crypto], prep 424 crypto/asymmetric_keys/asymmetric_type.c prep->payload.data[asym_auth]); prep 428 crypto/asymmetric_keys/asymmetric_type.c kfree(prep->description); prep 31 crypto/asymmetric_keys/pkcs7_key_type.c struct key_preparsed_payload *prep = ctx; prep 36 crypto/asymmetric_keys/pkcs7_key_type.c saved_prep_data = prep->data; prep 37 crypto/asymmetric_keys/pkcs7_key_type.c saved_prep_datalen = prep->datalen; prep 38 crypto/asymmetric_keys/pkcs7_key_type.c prep->data = data; prep 39 crypto/asymmetric_keys/pkcs7_key_type.c prep->datalen = len; prep 41 crypto/asymmetric_keys/pkcs7_key_type.c ret = user_preparse(prep); prep 43 crypto/asymmetric_keys/pkcs7_key_type.c prep->data = saved_prep_data; prep 44 crypto/asymmetric_keys/pkcs7_key_type.c prep->datalen = saved_prep_datalen; prep 51 crypto/asymmetric_keys/pkcs7_key_type.c static int pkcs7_preparse(struct key_preparsed_payload *prep) prep 61 crypto/asymmetric_keys/pkcs7_key_type.c prep->data, prep->datalen, prep 63 crypto/asymmetric_keys/pkcs7_key_type.c pkcs7_view_content, prep); prep 136 crypto/asymmetric_keys/pkcs8_parser.c static int pkcs8_key_preparse(struct key_preparsed_payload *prep) prep 140 crypto/asymmetric_keys/pkcs8_parser.c pub = pkcs8_parse(prep->data, prep->datalen); prep 149 crypto/asymmetric_keys/pkcs8_parser.c prep->payload.data[asym_subtype] = &public_key_subtype; prep 150 crypto/asymmetric_keys/pkcs8_parser.c prep->payload.data[asym_key_ids] = NULL; prep 151 crypto/asymmetric_keys/pkcs8_parser.c prep->payload.data[asym_crypto] = pub; prep 152 crypto/asymmetric_keys/pkcs8_parser.c prep->payload.data[asym_auth] = NULL; prep 153 crypto/asymmetric_keys/pkcs8_parser.c prep->quotalen = 100; prep 56 crypto/asymmetric_keys/tpm_parser.c static int tpm_key_preparse(struct key_preparsed_payload *prep) prep 64 crypto/asymmetric_keys/tpm_parser.c if (prep->datalen > 256 * 4) prep 67 crypto/asymmetric_keys/tpm_parser.c tk = tpm_parse(prep->data, prep->datalen); prep 74 crypto/asymmetric_keys/tpm_parser.c prep->payload.data[asym_subtype] = &asym_tpm_subtype; prep 75 crypto/asymmetric_keys/tpm_parser.c prep->payload.data[asym_key_ids] = NULL; prep 76 crypto/asymmetric_keys/tpm_parser.c prep->payload.data[asym_crypto] = tk; prep 77 crypto/asymmetric_keys/tpm_parser.c prep->payload.data[asym_auth] = NULL; prep 78 crypto/asymmetric_keys/tpm_parser.c prep->quotalen = 100; prep 156 crypto/asymmetric_keys/x509_public_key.c static int x509_key_preparse(struct key_preparsed_payload *prep) prep 165 crypto/asymmetric_keys/x509_public_key.c cert = x509_cert_parse(prep->data, prep->datalen); prep 224 crypto/asymmetric_keys/x509_public_key.c prep->payload.data[asym_subtype] = &public_key_subtype; prep 225 crypto/asymmetric_keys/x509_public_key.c prep->payload.data[asym_key_ids] = kids; prep 226 crypto/asymmetric_keys/x509_public_key.c prep->payload.data[asym_crypto] = cert->pub; prep 227 crypto/asymmetric_keys/x509_public_key.c prep->payload.data[asym_auth] = cert->sig; prep 228 crypto/asymmetric_keys/x509_public_key.c prep->description = desc; prep 229 crypto/asymmetric_keys/x509_public_key.c prep->quotalen = 100; prep 418 drivers/soundwire/stream.c bool prep) prep 440 drivers/soundwire/stream.c prep_ch.prepare = prep; prep 452 drivers/soundwire/stream.c if (prep && intr) { prep 453 drivers/soundwire/stream.c ret = sdw_configure_dpn_intr(s_rt->slave, p_rt->num, prep, prep 466 drivers/soundwire/stream.c if (prep) prep 496 drivers/soundwire/stream.c if (!prep && intr) prep 497 drivers/soundwire/stream.c ret = sdw_configure_dpn_intr(s_rt->slave, p_rt->num, prep, prep 505 drivers/soundwire/stream.c bool prep) prep 515 drivers/soundwire/stream.c prep_ch.prepare = prep; /* Prepare/De-prepare */ prep 538 drivers/soundwire/stream.c static int sdw_prep_deprep_ports(struct sdw_master_runtime *m_rt, bool prep) prep 548 drivers/soundwire/stream.c p_rt, prep); prep 556 drivers/soundwire/stream.c ret = sdw_prep_deprep_master_ports(m_rt, p_rt, prep); prep 37 fs/cifs/cifs_spnego.c cifs_spnego_key_instantiate(struct key *key, struct key_preparsed_payload *prep) prep 43 fs/cifs/cifs_spnego.c payload = kmemdup(prep->data, prep->datalen, GFP_KERNEL); prep 77 fs/cifs/cifsacl.c cifs_idmap_key_instantiate(struct key *key, struct key_preparsed_payload *prep) prep 89 fs/cifs/cifsacl.c if (prep->datalen <= sizeof(key->payload)) { prep 91 fs/cifs/cifsacl.c memcpy(&key->payload, prep->data, prep->datalen); prep 93 fs/cifs/cifsacl.c payload = kmemdup(prep->data, prep->datalen, GFP_KERNEL); prep 99 fs/cifs/cifsacl.c key->datalen = prep->datalen; prep 61 fs/crypto/keyring.c struct key_preparsed_payload *prep) prep 63 fs/crypto/keyring.c key->payload.data[0] = (struct fscrypt_master_key *)prep->data; prep 99 fs/crypto/keyring.c struct key_preparsed_payload *prep) prep 27 include/keys/asymmetric-parser.h int (*parse)(struct key_preparsed_payload *prep); prep 15 include/keys/big_key-type.h extern int big_key_preparse(struct key_preparsed_payload *prep); prep 16 include/keys/big_key-type.h extern void big_key_free_preparse(struct key_preparsed_payload *prep); prep 38 include/keys/user-type.h extern int user_preparse(struct key_preparsed_payload *prep); prep 39 include/keys/user-type.h extern void user_free_preparse(struct key_preparsed_payload *prep); prep 40 include/keys/user-type.h extern int user_update(struct key *key, struct key_preparsed_payload *prep); prep 83 include/linux/key-type.h int (*preparse)(struct key_preparsed_payload *prep); prep 87 include/linux/key-type.h void (*free_preparse)(struct key_preparsed_payload *prep); prep 93 include/linux/key-type.h int (*instantiate)(struct key *key, struct key_preparsed_payload *prep); prep 100 include/linux/key-type.h int (*update)(struct key *key, struct key_preparsed_payload *prep); prep 189 include/linux/key-type.h extern int generic_key_instantiate(struct key *key, struct key_preparsed_payload *prep); prep 297 net/ceph/crypto.c static int ceph_key_preparse(struct key_preparsed_payload *prep) prep 300 net/ceph/crypto.c size_t datalen = prep->datalen; prep 305 net/ceph/crypto.c if (datalen <= 0 || datalen > 32767 || !prep->data) prep 314 net/ceph/crypto.c p = (void *)prep->data; prep 315 net/ceph/crypto.c ret = ceph_crypto_key_decode(ckey, &p, (char*)prep->data+datalen); prep 319 net/ceph/crypto.c prep->payload.data[0] = ckey; prep 320 net/ceph/crypto.c prep->quotalen = datalen; prep 329 net/ceph/crypto.c static void ceph_key_free_preparse(struct key_preparsed_payload *prep) prep 331 net/ceph/crypto.c struct ceph_crypto_key *ckey = prep->payload.data[0]; prep 92 net/dns_resolver/dns_key.c dns_resolver_preparse(struct key_preparsed_payload *prep) prep 98 net/dns_resolver/dns_key.c int datalen = prep->datalen, result_len = 0; prep 99 net/dns_resolver/dns_key.c const char *data = prep->data, *end, *opt; prep 189 net/dns_resolver/dns_key.c prep->payload.data[dns_key_error] = ERR_PTR(-derrno); prep 202 net/dns_resolver/dns_key.c if (prep->payload.data[dns_key_error]) { prep 203 net/dns_resolver/dns_key.c kleave(" = 0 [h_error %ld]", PTR_ERR(prep->payload.data[dns_key_error])); prep 209 net/dns_resolver/dns_key.c prep->quotalen = result_len; prep 221 net/dns_resolver/dns_key.c prep->payload.data[dns_key_data] = upayload; prep 229 net/dns_resolver/dns_key.c static void dns_resolver_free_preparse(struct key_preparsed_payload *prep) prep 233 net/dns_resolver/dns_key.c kfree(prep->payload.data[dns_key_data]); prep 1490 net/mac80211/ieee80211_i.h const u8 *prep; prep 942 net/mac80211/mesh_hwmp.c if (elems.prep) { prep 946 net/mac80211/mesh_hwmp.c path_metric = hwmp_route_info_get(sdata, mgmt, elems.prep, prep 949 net/mac80211/mesh_hwmp.c hwmp_prep_frame_process(sdata, mgmt, elems.prep, prep 1106 net/mac80211/util.c elems->prep = pos; prep 88 net/rxrpc/key.c static int rxrpc_preparse_xdr_rxkad(struct key_preparsed_payload *prep, prep 111 net/rxrpc/key.c prep->quotalen = datalen + plen; prep 152 net/rxrpc/key.c prep->payload.data[1] = (void *)((unsigned long)prep->payload.data[1] + 1); prep 155 net/rxrpc/key.c for (pptoken = (struct rxrpc_key_token **)&prep->payload.data[0]; prep 161 net/rxrpc/key.c if (expiry < prep->expiry) prep 162 net/rxrpc/key.c prep->expiry = expiry; prep 429 net/rxrpc/key.c static int rxrpc_preparse_xdr_rxk5(struct key_preparsed_payload *prep, prep 445 net/rxrpc/key.c prep->quotalen = datalen + toklen; prep 532 net/rxrpc/key.c for (pptoken = (struct rxrpc_key_token **)&prep->payload.data[0]; prep 538 net/rxrpc/key.c if (expiry < prep->expiry) prep 539 net/rxrpc/key.c prep->expiry = expiry; prep 557 net/rxrpc/key.c static int rxrpc_preparse_xdr(struct key_preparsed_payload *prep) prep 559 net/rxrpc/key.c const __be32 *xdr = prep->data, *token; prep 562 net/rxrpc/key.c size_t datalen = prep->datalen; prep 567 net/rxrpc/key.c prep->datalen); prep 648 net/rxrpc/key.c ret = rxrpc_preparse_xdr_rxkad(prep, datalen, xdr, toklen); prep 654 net/rxrpc/key.c ret = rxrpc_preparse_xdr_rxk5(prep, datalen, xdr, toklen); prep 692 net/rxrpc/key.c static int rxrpc_preparse(struct key_preparsed_payload *prep) prep 701 net/rxrpc/key.c _enter("%zu", prep->datalen); prep 704 net/rxrpc/key.c if (!prep->data && prep->datalen == 0) prep 708 net/rxrpc/key.c if (prep->datalen > 7 * 4) { prep 709 net/rxrpc/key.c ret = rxrpc_preparse_xdr(prep); prep 716 net/rxrpc/key.c if (prep->datalen <= 4 || !prep->data) prep 718 net/rxrpc/key.c memcpy(&kver, prep->data, sizeof(kver)); prep 719 net/rxrpc/key.c prep->data += sizeof(kver); prep 720 net/rxrpc/key.c prep->datalen -= sizeof(kver); prep 730 net/rxrpc/key.c if (prep->datalen < sizeof(*v1)) prep 733 net/rxrpc/key.c v1 = prep->data; prep 734 net/rxrpc/key.c if (prep->datalen != sizeof(*v1) + v1->ticket_length) prep 758 net/rxrpc/key.c prep->quotalen = plen + sizeof(*token); prep 776 net/rxrpc/key.c prep->payload.data[1] = (void *)((unsigned long)prep->payload.data[1] + 1); prep 779 net/rxrpc/key.c pp = (struct rxrpc_key_token **)&prep->payload.data[0]; prep 784 net/rxrpc/key.c if (expiry < prep->expiry) prep 785 net/rxrpc/key.c prep->expiry = expiry; prep 825 net/rxrpc/key.c static void rxrpc_free_preparse(struct key_preparsed_payload *prep) prep 827 net/rxrpc/key.c rxrpc_free_token_list(prep->payload.data[0]); prep 835 net/rxrpc/key.c static int rxrpc_preparse_s(struct key_preparsed_payload *prep) prep 839 net/rxrpc/key.c _enter("%zu", prep->datalen); prep 841 net/rxrpc/key.c if (prep->datalen != 8) prep 844 net/rxrpc/key.c memcpy(&prep->payload.data[2], prep->data, 8); prep 852 net/rxrpc/key.c if (crypto_skcipher_setkey(ci, prep->data, 8) < 0) prep 855 net/rxrpc/key.c prep->payload.data[0] = ci; prep 863 net/rxrpc/key.c static void rxrpc_free_preparse_s(struct key_preparsed_payload *prep) prep 865 net/rxrpc/key.c if (prep->payload.data[0]) prep 866 net/rxrpc/key.c crypto_free_skcipher(prep->payload.data[0]); prep 138 net/smc/smc_tx.c union smc_host_cursor prep; prep 182 net/smc/smc_tx.c smc_curs_copy(&prep, &conn->tx_curs_prep, conn); prep 183 net/smc/smc_tx.c tx_cnt_prep = prep.count; prep 212 net/smc/smc_tx.c smc_curs_add(conn->sndbuf_desc->len, &prep, copylen); prep 213 net/smc/smc_tx.c smc_curs_copy(&conn->tx_curs_prep, &prep, conn); prep 406 net/smc/smc_tx.c union smc_host_cursor sent, prep, prod, cons; prep 413 net/smc/smc_tx.c smc_curs_copy(&prep, &conn->tx_curs_prep, conn); prep 415 net/smc/smc_tx.c to_send = smc_curs_diff(conn->sndbuf_desc->len, &sent, &prep); prep 23 net/smc/smc_tx.h union smc_host_cursor sent, prep; prep 26 net/smc/smc_tx.h smc_curs_copy(&prep, &conn->tx_curs_prep, conn); prep 27 net/smc/smc_tx.h return smc_curs_diff(conn->sndbuf_desc->len, &sent, &prep); prep 200 security/keys/big_key.c int big_key_preparse(struct key_preparsed_payload *prep) prep 203 security/keys/big_key.c struct path *path = (struct path *)&prep->payload.data[big_key_path]; prep 207 security/keys/big_key.c size_t datalen = prep->datalen, enclen = datalen + ENC_AUTHTAG_SIZE; prep 210 security/keys/big_key.c if (datalen <= 0 || datalen > 1024 * 1024 || !prep->data) prep 214 security/keys/big_key.c prep->quotalen = 16; prep 216 security/keys/big_key.c prep->payload.data[big_key_len] = (void *)(unsigned long)datalen; prep 229 security/keys/big_key.c memcpy(buf->virt, prep->data, datalen); prep 264 security/keys/big_key.c prep->payload.data[big_key_data] = enckey; prep 276 security/keys/big_key.c prep->payload.data[big_key_data] = data; prep 277 security/keys/big_key.c memcpy(data, prep->data, prep->datalen); prep 293 security/keys/big_key.c void big_key_free_preparse(struct key_preparsed_payload *prep) prep 295 security/keys/big_key.c if (prep->datalen > BIG_KEY_FILE_THRESHOLD) { prep 296 security/keys/big_key.c struct path *path = (struct path *)&prep->payload.data[big_key_path]; prep 300 security/keys/big_key.c kzfree(prep->payload.data[big_key_data]); prep 794 security/keys/encrypted-keys/encrypted.c struct key_preparsed_payload *prep) prep 802 security/keys/encrypted-keys/encrypted.c size_t datalen = prep->datalen; prep 805 security/keys/encrypted-keys/encrypted.c if (datalen <= 0 || datalen > 32767 || !prep->data) prep 812 security/keys/encrypted-keys/encrypted.c memcpy(datablob, prep->data, datalen); prep 854 security/keys/encrypted-keys/encrypted.c static int encrypted_update(struct key *key, struct key_preparsed_payload *prep) prep 861 security/keys/encrypted-keys/encrypted.c size_t datalen = prep->datalen; prep 866 security/keys/encrypted-keys/encrypted.c if (datalen <= 0 || datalen > 32767 || !prep->data) prep 874 security/keys/encrypted-keys/encrypted.c memcpy(buf, prep->data, datalen); prep 422 security/keys/key.c struct key_preparsed_payload *prep, prep 440 security/keys/key.c ret = key->type->instantiate(key, prep); prep 462 security/keys/key.c if (prep->expiry != TIME64_MAX) { prep 463 security/keys/key.c key->expiry = prep->expiry; prep 464 security/keys/key.c key_schedule_gc(prep->expiry + key_gc_delay); prep 500 security/keys/key.c struct key_preparsed_payload prep; prep 504 security/keys/key.c memset(&prep, 0, sizeof(prep)); prep 505 security/keys/key.c prep.data = data; prep 506 security/keys/key.c prep.datalen = datalen; prep 507 security/keys/key.c prep.quotalen = key->type->def_datalen; prep 508 security/keys/key.c prep.expiry = TIME64_MAX; prep 510 security/keys/key.c ret = key->type->preparse(&prep); prep 527 security/keys/key.c ret = keyres->check(keyring, key->type, &prep.payload, prep 534 security/keys/key.c ret = __key_instantiate_and_link(key, &prep, keyring, authkey, &edit); prep 542 security/keys/key.c key->type->free_preparse(&prep); prep 749 security/keys/key.c struct key_preparsed_payload *prep) prep 765 security/keys/key.c ret = key->type->update(key, prep); prep 819 security/keys/key.c struct key_preparsed_payload prep; prep 851 security/keys/key.c memset(&prep, 0, sizeof(prep)); prep 852 security/keys/key.c prep.data = payload; prep 853 security/keys/key.c prep.datalen = plen; prep 854 security/keys/key.c prep.quotalen = index_key.type->def_datalen; prep 855 security/keys/key.c prep.expiry = TIME64_MAX; prep 857 security/keys/key.c ret = index_key.type->preparse(&prep); prep 863 security/keys/key.c index_key.description = prep.description; prep 885 security/keys/key.c &prep.payload, restrict_link->key); prep 932 security/keys/key.c ret = __key_instantiate_and_link(key, &prep, keyring, NULL, &edit); prep 945 security/keys/key.c index_key.type->free_preparse(&prep); prep 967 security/keys/key.c key_ref = __key_update(key_ref, &prep); prep 987 security/keys/key.c struct key_preparsed_payload prep; prep 1002 security/keys/key.c memset(&prep, 0, sizeof(prep)); prep 1003 security/keys/key.c prep.data = payload; prep 1004 security/keys/key.c prep.datalen = plen; prep 1005 security/keys/key.c prep.quotalen = key->type->def_datalen; prep 1006 security/keys/key.c prep.expiry = TIME64_MAX; prep 1008 security/keys/key.c ret = key->type->preparse(&prep); prep 1015 security/keys/key.c ret = key->type->update(key, &prep); prep 1024 security/keys/key.c key->type->free_preparse(&prep); prep 1097 security/keys/key.c int generic_key_instantiate(struct key *key, struct key_preparsed_payload *prep) prep 1103 security/keys/key.c ret = key_payload_reserve(key, prep->quotalen); prep 1105 security/keys/key.c rcu_assign_keypointer(key, prep->payload.data[0]); prep 1106 security/keys/key.c key->payload.data[1] = prep->payload.data[1]; prep 1107 security/keys/key.c key->payload.data[2] = prep->payload.data[2]; prep 1108 security/keys/key.c key->payload.data[3] = prep->payload.data[3]; prep 1109 security/keys/key.c prep->payload.data[0] = NULL; prep 1110 security/keys/key.c prep->payload.data[1] = NULL; prep 1111 security/keys/key.c prep->payload.data[2] = NULL; prep 1112 security/keys/key.c prep->payload.data[3] = NULL; prep 74 security/keys/keyring.c static int keyring_preparse(struct key_preparsed_payload *prep); prep 75 security/keys/keyring.c static void keyring_free_preparse(struct key_preparsed_payload *prep); prep 77 security/keys/keyring.c struct key_preparsed_payload *prep); prep 123 security/keys/keyring.c static int keyring_preparse(struct key_preparsed_payload *prep) prep 125 security/keys/keyring.c return prep->datalen != 0 ? -EINVAL : 0; prep 131 security/keys/keyring.c static void keyring_free_preparse(struct key_preparsed_payload *prep) prep 141 security/keys/keyring.c struct key_preparsed_payload *prep) prep 42 security/keys/request_key_auth.c static int request_key_auth_preparse(struct key_preparsed_payload *prep) prep 47 security/keys/request_key_auth.c static void request_key_auth_free_preparse(struct key_preparsed_payload *prep) prep 55 security/keys/request_key_auth.c struct key_preparsed_payload *prep) prep 57 security/keys/request_key_auth.c rcu_assign_keypointer(key, (struct request_key_auth *)prep->data); prep 967 security/keys/trusted.c struct key_preparsed_payload *prep) prep 971 security/keys/trusted.c size_t datalen = prep->datalen; prep 982 security/keys/trusted.c if (datalen <= 0 || datalen > 32767 || !prep->data) prep 988 security/keys/trusted.c memcpy(datablob, prep->data, datalen); prep 1068 security/keys/trusted.c static int trusted_update(struct key *key, struct key_preparsed_payload *prep) prep 1073 security/keys/trusted.c size_t datalen = prep->datalen; prep 1082 security/keys/trusted.c if (datalen <= 0 || datalen > 32767 || !prep->data) prep 1099 security/keys/trusted.c memcpy(datablob, prep->data, datalen); prep 59 security/keys/user_defined.c int user_preparse(struct key_preparsed_payload *prep) prep 62 security/keys/user_defined.c size_t datalen = prep->datalen; prep 64 security/keys/user_defined.c if (datalen <= 0 || datalen > 32767 || !prep->data) prep 72 security/keys/user_defined.c prep->quotalen = datalen; prep 73 security/keys/user_defined.c prep->payload.data[0] = upayload; prep 75 security/keys/user_defined.c memcpy(upayload->data, prep->data, datalen); prep 83 security/keys/user_defined.c void user_free_preparse(struct key_preparsed_payload *prep) prep 85 security/keys/user_defined.c kzfree(prep->payload.data[0]); prep 101 security/keys/user_defined.c int user_update(struct key *key, struct key_preparsed_payload *prep) prep 107 security/keys/user_defined.c ret = key_payload_reserve(key, prep->datalen); prep 112 security/keys/user_defined.c key->expiry = prep->expiry; prep 115 security/keys/user_defined.c rcu_assign_keypointer(key, prep->payload.data[0]); prep 116 security/keys/user_defined.c prep->payload.data[0] = NULL; prep 4374 tools/lib/bpf/libbpf.c bpf_program_prep_t prep) prep 4378 tools/lib/bpf/libbpf.c if (nr_instances <= 0 || !prep) prep 4397 tools/lib/bpf/libbpf.c prog->preprocessor = prep; prep 250 tools/lib/bpf/libbpf.h bpf_program_prep_t prep);