5 BIO_find_type, BIO_next - BIO chain traversal
9 #include <openssl/bio.h>
11 BIO * BIO_find_type(BIO *b,int bio_type);
12 BIO * BIO_next(BIO *b);
14 #define BIO_method_type(b) ((b)->method->type)
16 #define BIO_TYPE_NONE 0
17 #define BIO_TYPE_MEM (1|0x0400)
18 #define BIO_TYPE_FILE (2|0x0400)
20 #define BIO_TYPE_FD (4|0x0400|0x0100)
21 #define BIO_TYPE_SOCKET (5|0x0400|0x0100)
22 #define BIO_TYPE_NULL (6|0x0400)
23 #define BIO_TYPE_SSL (7|0x0200)
24 #define BIO_TYPE_MD (8|0x0200)
25 #define BIO_TYPE_BUFFER (9|0x0200)
26 #define BIO_TYPE_CIPHER (10|0x0200)
27 #define BIO_TYPE_BASE64 (11|0x0200)
28 #define BIO_TYPE_CONNECT (12|0x0400|0x0100)
29 #define BIO_TYPE_ACCEPT (13|0x0400|0x0100)
30 #define BIO_TYPE_PROXY_CLIENT (14|0x0200)
31 #define BIO_TYPE_PROXY_SERVER (15|0x0200)
32 #define BIO_TYPE_NBIO_TEST (16|0x0200)
33 #define BIO_TYPE_NULL_FILTER (17|0x0200)
34 #define BIO_TYPE_BER (18|0x0200)
35 #define BIO_TYPE_BIO (19|0x0400)
37 #define BIO_TYPE_DESCRIPTOR 0x0100
38 #define BIO_TYPE_FILTER 0x0200
39 #define BIO_TYPE_SOURCE_SINK 0x0400
43 The BIO_find_type() searches for a BIO of a given type in a chain, starting
44 at BIO B<b>. If B<type> is a specific type (such as BIO_TYPE_MEM) then a search
45 is made for a BIO of that type. If B<type> is a general type (such as
46 B<BIO_TYPE_SOURCE_SINK>) then the next matching BIO of the given general type is
47 searched for. BIO_find_type() returns the next matching BIO or NULL if none is
50 Note: not all the B<BIO_TYPE_*> types above have corresponding BIO implementations.
52 BIO_next() returns the next BIO in a chain. It can be used to traverse all BIOs
53 in a chain or used in conjunction with BIO_find_type() to find all BIOs of a
56 BIO_method_type() returns the type of a BIO.
60 BIO_find_type() returns a matching BIO or NULL for no match.
62 BIO_next() returns the next BIO in a chain.
64 BIO_method_type() returns the type of the BIO B<b>.
68 BIO_next() was added to OpenSSL 0.9.6 to provide a 'clean' way to traverse a BIO
69 chain or find multiple matches using BIO_find_type(). Previous versions had to
76 Traverse a chain looking for digest BIOs:
79 btmp = in_bio; /* in_bio is chain to search through */
82 btmp = BIO_find_type(btmp, BIO_TYPE_MD);
83 if(btmp == NULL) break; /* Not found */
84 /* btmp is a digest BIO, do something with it ...*/
87 btmp = BIO_next(btmp);