]>
git.ipfire.org Git - thirdparty/openssl.git/blob - crypto/bio/bio_meth.c
2 * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
4 * Licensed under the OpenSSL license (the "License"). You may not use
5 * this file except in compliance with the License. You can obtain a copy
6 * in the file LICENSE in the source distribution or at
7 * https://www.openssl.org/source/license.html
12 CRYPTO_RWLOCK
*bio_type_lock
;
13 static int bio_count
= BIO_TYPE_START
;
15 int BIO_get_new_index()
19 if (!CRYPTO_atomic_add(&bio_count
, 1, &newval
, bio_type_lock
))
24 BIO_METHOD
*BIO_meth_new(int type
, const char *name
)
26 BIO_METHOD
*biom
= OPENSSL_zalloc(sizeof(BIO_METHOD
));
35 void BIO_meth_free(BIO_METHOD
*biom
)
40 int (*BIO_meth_get_write(BIO_METHOD
*biom
)) (BIO
*, const char *, int)
45 int BIO_meth_set_write(BIO_METHOD
*biom
,
46 int (*bwrite
) (BIO
*, const char *, int))
48 biom
->bwrite
= bwrite
;
52 int (*BIO_meth_get_read(BIO_METHOD
*biom
)) (BIO
*, char *, int)
57 int BIO_meth_set_read(BIO_METHOD
*biom
,
58 int (*bread
) (BIO
*, char *, int))
64 int (*BIO_meth_get_puts(BIO_METHOD
*biom
)) (BIO
*, const char *)
69 int BIO_meth_set_puts(BIO_METHOD
*biom
,
70 int (*bputs
) (BIO
*, const char *))
76 int (*BIO_meth_get_gets(BIO_METHOD
*biom
)) (BIO
*, char *, int)
81 int BIO_meth_set_gets(BIO_METHOD
*biom
,
82 int (*bgets
) (BIO
*, char *, int))
88 long (*BIO_meth_get_ctrl(BIO_METHOD
*biom
)) (BIO
*, int, long, void *)
93 int BIO_meth_set_ctrl(BIO_METHOD
*biom
,
94 long (*ctrl
) (BIO
*, int, long, void *))
100 int (*BIO_meth_get_create(BIO_METHOD
*biom
)) (BIO
*)
105 int BIO_meth_set_create(BIO_METHOD
*biom
, int (*create
) (BIO
*))
107 biom
->create
= create
;
111 int (*BIO_meth_get_destroy(BIO_METHOD
*biom
)) (BIO
*)
113 return biom
->destroy
;
116 int BIO_meth_set_destroy(BIO_METHOD
*biom
, int (*destroy
) (BIO
*))
118 biom
->destroy
= destroy
;
122 long (*BIO_meth_get_callback_ctrl(BIO_METHOD
*biom
)) (BIO
*, int, bio_info_cb
*)
124 return biom
->callback_ctrl
;
127 int BIO_meth_set_callback_ctrl(BIO_METHOD
*biom
,
128 long (*callback_ctrl
) (BIO
*, int,
131 biom
->callback_ctrl
= callback_ctrl
;