LTKCPP-- LLRP Toolkit C Plus Plus Library
bio.h
00001 /* crypto/bio/bio.h */
00002 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
00003  * All rights reserved.
00004  *
00005  * This package is an SSL implementation written
00006  * by Eric Young (eay@cryptsoft.com).
00007  * The implementation was written so as to conform with Netscapes SSL.
00008  *
00009  * This library is free for commercial and non-commercial use as long as
00010  * the following conditions are aheared to.  The following conditions
00011  * apply to all code found in this distribution, be it the RC4, RSA,
00012  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
00013  * included with this distribution is covered by the same copyright terms
00014  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
00015  *
00016  * Copyright remains Eric Young's, and as such any Copyright notices in
00017  * the code are not to be removed.
00018  * If this package is used in a product, Eric Young should be given attribution
00019  * as the author of the parts of the library used.
00020  * This can be in the form of a textual message at program startup or
00021  * in documentation (online or textual) provided with the package.
00022  *
00023  * Redistribution and use in source and binary forms, with or without
00024  * modification, are permitted provided that the following conditions
00025  * are met:
00026  * 1. Redistributions of source code must retain the copyright
00027  *    notice, this list of conditions and the following disclaimer.
00028  * 2. Redistributions in binary form must reproduce the above copyright
00029  *    notice, this list of conditions and the following disclaimer in the
00030  *    documentation and/or other materials provided with the distribution.
00031  * 3. All advertising materials mentioning features or use of this software
00032  *    must display the following acknowledgement:
00033  *    "This product includes cryptographic software written by
00034  *     Eric Young (eay@cryptsoft.com)"
00035  *    The word 'cryptographic' can be left out if the rouines from the library
00036  *    being used are not cryptographic related :-).
00037  * 4. If you include any Windows specific code (or a derivative thereof) from
00038  *    the apps directory (application code) you must include an acknowledgement:
00039  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
00040  *
00041  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
00042  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00043  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00044  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
00045  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
00046  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
00047  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
00048  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
00049  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
00050  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
00051  * SUCH DAMAGE.
00052  *
00053  * The licence and distribution terms for any publically available version or
00054  * derivative of this code cannot be changed.  i.e. this code cannot simply be
00055  * copied and put under another distribution licence
00056  * [including the GNU Public Licence.]
00057  */
00058 
00059 #ifndef HEADER_BIO_H
00060 # define HEADER_BIO_H
00061 
00062 # include <openssl/e_os2.h>
00063 
00064 # ifndef OPENSSL_NO_FP_API
00065 #  include <stdio.h>
00066 # endif
00067 # include <stdarg.h>
00068 
00069 # include <openssl/crypto.h>
00070 
00071 # ifndef OPENSSL_NO_SCTP
00072 #  ifndef OPENSSL_SYS_VMS
00073 #   include <stdint.h>
00074 #  else
00075 #   include <inttypes.h>
00076 #  endif
00077 # endif
00078 
00079 #ifdef  __cplusplus
00080 extern "C" {
00081 #endif
00082 
00083 /* These are the 'types' of BIOs */
00084 # define BIO_TYPE_NONE           0
00085 # define BIO_TYPE_MEM            (1|0x0400)
00086 # define BIO_TYPE_FILE           (2|0x0400)
00087 
00088 # define BIO_TYPE_FD             (4|0x0400|0x0100)
00089 # define BIO_TYPE_SOCKET         (5|0x0400|0x0100)
00090 # define BIO_TYPE_NULL           (6|0x0400)
00091 # define BIO_TYPE_SSL            (7|0x0200)
00092 # define BIO_TYPE_MD             (8|0x0200)/* passive filter */
00093 # define BIO_TYPE_BUFFER         (9|0x0200)/* filter */
00094 # define BIO_TYPE_CIPHER         (10|0x0200)/* filter */
00095 # define BIO_TYPE_BASE64         (11|0x0200)/* filter */
00096 # define BIO_TYPE_CONNECT        (12|0x0400|0x0100)/* socket - connect */
00097 # define BIO_TYPE_ACCEPT         (13|0x0400|0x0100)/* socket for accept */
00098 # define BIO_TYPE_PROXY_CLIENT   (14|0x0200)/* client proxy BIO */
00099 # define BIO_TYPE_PROXY_SERVER   (15|0x0200)/* server proxy BIO */
00100 # define BIO_TYPE_NBIO_TEST      (16|0x0200)/* server proxy BIO */
00101 # define BIO_TYPE_NULL_FILTER    (17|0x0200)
00102 # define BIO_TYPE_BER            (18|0x0200)/* BER -> bin filter */
00103 # define BIO_TYPE_BIO            (19|0x0400)/* (half a) BIO pair */
00104 # define BIO_TYPE_LINEBUFFER     (20|0x0200)/* filter */
00105 # define BIO_TYPE_DGRAM          (21|0x0400|0x0100)
00106 # ifndef OPENSSL_NO_SCTP
00107 #  define BIO_TYPE_DGRAM_SCTP     (24|0x0400|0x0100)
00108 # endif
00109 # define BIO_TYPE_ASN1           (22|0x0200)/* filter */
00110 # define BIO_TYPE_COMP           (23|0x0200)/* filter */
00111 
00112 # define BIO_TYPE_DESCRIPTOR     0x0100/* socket, fd, connect or accept */
00113 # define BIO_TYPE_FILTER         0x0200
00114 # define BIO_TYPE_SOURCE_SINK    0x0400
00115 
00116 /*
00117  * BIO_FILENAME_READ|BIO_CLOSE to open or close on free.
00118  * BIO_set_fp(in,stdin,BIO_NOCLOSE);
00119  */
00120 # define BIO_NOCLOSE             0x00
00121 # define BIO_CLOSE               0x01
00122 
00123 /*
00124  * These are used in the following macros and are passed to BIO_ctrl()
00125  */
00126 # define BIO_CTRL_RESET          1/* opt - rewind/zero etc */
00127 # define BIO_CTRL_EOF            2/* opt - are we at the eof */
00128 # define BIO_CTRL_INFO           3/* opt - extra tit-bits */
00129 # define BIO_CTRL_SET            4/* man - set the 'IO' type */
00130 # define BIO_CTRL_GET            5/* man - get the 'IO' type */
00131 # define BIO_CTRL_PUSH           6/* opt - internal, used to signify change */
00132 # define BIO_CTRL_POP            7/* opt - internal, used to signify change */
00133 # define BIO_CTRL_GET_CLOSE      8/* man - set the 'close' on free */
00134 # define BIO_CTRL_SET_CLOSE      9/* man - set the 'close' on free */
00135 # define BIO_CTRL_PENDING        10/* opt - is their more data buffered */
00136 # define BIO_CTRL_FLUSH          11/* opt - 'flush' buffered output */
00137 # define BIO_CTRL_DUP            12/* man - extra stuff for 'duped' BIO */
00138 # define BIO_CTRL_WPENDING       13/* opt - number of bytes still to write */
00139 /* callback is int cb(BIO *bio,state,ret); */
00140 # define BIO_CTRL_SET_CALLBACK   14/* opt - set callback function */
00141 # define BIO_CTRL_GET_CALLBACK   15/* opt - set callback function */
00142 
00143 # define BIO_CTRL_SET_FILENAME   30/* BIO_s_file special */
00144 
00145 /* dgram BIO stuff */
00146 # define BIO_CTRL_DGRAM_CONNECT       31/* BIO dgram special */
00147 # define BIO_CTRL_DGRAM_SET_CONNECTED 32/* allow for an externally connected
00148                                          * socket to be passed in */
00149 # define BIO_CTRL_DGRAM_SET_RECV_TIMEOUT 33/* setsockopt, essentially */
00150 # define BIO_CTRL_DGRAM_GET_RECV_TIMEOUT 34/* getsockopt, essentially */
00151 # define BIO_CTRL_DGRAM_SET_SEND_TIMEOUT 35/* setsockopt, essentially */
00152 # define BIO_CTRL_DGRAM_GET_SEND_TIMEOUT 36/* getsockopt, essentially */
00153 
00154 # define BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP 37/* flag whether the last */
00155 # define BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP 38/* I/O operation tiemd out */
00156 
00157 /* #ifdef IP_MTU_DISCOVER */
00158 # define BIO_CTRL_DGRAM_MTU_DISCOVER       39/* set DF bit on egress packets */
00159 /* #endif */
00160 
00161 # define BIO_CTRL_DGRAM_QUERY_MTU          40/* as kernel for current MTU */
00162 # define BIO_CTRL_DGRAM_GET_FALLBACK_MTU   47
00163 # define BIO_CTRL_DGRAM_GET_MTU            41/* get cached value for MTU */
00164 # define BIO_CTRL_DGRAM_SET_MTU            42/* set cached value for MTU.
00165                                               * want to use this if asking
00166                                               * the kernel fails */
00167 
00168 # define BIO_CTRL_DGRAM_MTU_EXCEEDED       43/* check whether the MTU was
00169                                               * exceed in the previous write
00170                                               * operation */
00171 
00172 # define BIO_CTRL_DGRAM_GET_PEER           46
00173 # define BIO_CTRL_DGRAM_SET_PEER           44/* Destination for the data */
00174 
00175 # define BIO_CTRL_DGRAM_SET_NEXT_TIMEOUT   45/* Next DTLS handshake timeout
00176                                               * to adjust socket timeouts */
00177 # define BIO_CTRL_DGRAM_SET_DONT_FRAG      48
00178 
00179 # define BIO_CTRL_DGRAM_GET_MTU_OVERHEAD   49
00180 
00181 # ifndef OPENSSL_NO_SCTP
00182 /* SCTP stuff */
00183 #  define BIO_CTRL_DGRAM_SCTP_SET_IN_HANDSHAKE    50
00184 #  define BIO_CTRL_DGRAM_SCTP_ADD_AUTH_KEY                51
00185 #  define BIO_CTRL_DGRAM_SCTP_NEXT_AUTH_KEY               52
00186 #  define BIO_CTRL_DGRAM_SCTP_AUTH_CCS_RCVD               53
00187 #  define BIO_CTRL_DGRAM_SCTP_GET_SNDINFO         60
00188 #  define BIO_CTRL_DGRAM_SCTP_SET_SNDINFO         61
00189 #  define BIO_CTRL_DGRAM_SCTP_GET_RCVINFO         62
00190 #  define BIO_CTRL_DGRAM_SCTP_SET_RCVINFO         63
00191 #  define BIO_CTRL_DGRAM_SCTP_GET_PRINFO                  64
00192 #  define BIO_CTRL_DGRAM_SCTP_SET_PRINFO                  65
00193 #  define BIO_CTRL_DGRAM_SCTP_SAVE_SHUTDOWN               70
00194 # endif
00195 
00196 /* modifiers */
00197 # define BIO_FP_READ             0x02
00198 # define BIO_FP_WRITE            0x04
00199 # define BIO_FP_APPEND           0x08
00200 # define BIO_FP_TEXT             0x10
00201 
00202 # define BIO_FLAGS_READ          0x01
00203 # define BIO_FLAGS_WRITE         0x02
00204 # define BIO_FLAGS_IO_SPECIAL    0x04
00205 # define BIO_FLAGS_RWS (BIO_FLAGS_READ|BIO_FLAGS_WRITE|BIO_FLAGS_IO_SPECIAL)
00206 # define BIO_FLAGS_SHOULD_RETRY  0x08
00207 # ifndef BIO_FLAGS_UPLINK
00208 /*
00209  * "UPLINK" flag denotes file descriptors provided by application. It
00210  * defaults to 0, as most platforms don't require UPLINK interface.
00211  */
00212 #  define BIO_FLAGS_UPLINK        0
00213 # endif
00214 
00215 /* Used in BIO_gethostbyname() */
00216 # define BIO_GHBN_CTRL_HITS              1
00217 # define BIO_GHBN_CTRL_MISSES            2
00218 # define BIO_GHBN_CTRL_CACHE_SIZE        3
00219 # define BIO_GHBN_CTRL_GET_ENTRY         4
00220 # define BIO_GHBN_CTRL_FLUSH             5
00221 
00222 /* Mostly used in the SSL BIO */
00223 /*-
00224  * Not used anymore
00225  * #define BIO_FLAGS_PROTOCOL_DELAYED_READ 0x10
00226  * #define BIO_FLAGS_PROTOCOL_DELAYED_WRITE 0x20
00227  * #define BIO_FLAGS_PROTOCOL_STARTUP   0x40
00228  */
00229 
00230 # define BIO_FLAGS_BASE64_NO_NL  0x100
00231 
00232 /*
00233  * This is used with memory BIOs: it means we shouldn't free up or change the
00234  * data in any way.
00235  */
00236 # define BIO_FLAGS_MEM_RDONLY    0x200
00237 
00238 typedef struct bio_st BIO;
00239 
00240 void BIO_set_flags(BIO *b, int flags);
00241 int BIO_test_flags(const BIO *b, int flags);
00242 void BIO_clear_flags(BIO *b, int flags);
00243 
00244 # define BIO_get_flags(b) BIO_test_flags(b, ~(0x0))
00245 # define BIO_set_retry_special(b) \
00246                 BIO_set_flags(b, (BIO_FLAGS_IO_SPECIAL|BIO_FLAGS_SHOULD_RETRY))
00247 # define BIO_set_retry_read(b) \
00248                 BIO_set_flags(b, (BIO_FLAGS_READ|BIO_FLAGS_SHOULD_RETRY))
00249 # define BIO_set_retry_write(b) \
00250                 BIO_set_flags(b, (BIO_FLAGS_WRITE|BIO_FLAGS_SHOULD_RETRY))
00251 
00252 /* These are normally used internally in BIOs */
00253 # define BIO_clear_retry_flags(b) \
00254                 BIO_clear_flags(b, (BIO_FLAGS_RWS|BIO_FLAGS_SHOULD_RETRY))
00255 # define BIO_get_retry_flags(b) \
00256                 BIO_test_flags(b, (BIO_FLAGS_RWS|BIO_FLAGS_SHOULD_RETRY))
00257 
00258 /* These should be used by the application to tell why we should retry */
00259 # define BIO_should_read(a)              BIO_test_flags(a, BIO_FLAGS_READ)
00260 # define BIO_should_write(a)             BIO_test_flags(a, BIO_FLAGS_WRITE)
00261 # define BIO_should_io_special(a)        BIO_test_flags(a, BIO_FLAGS_IO_SPECIAL)
00262 # define BIO_retry_type(a)               BIO_test_flags(a, BIO_FLAGS_RWS)
00263 # define BIO_should_retry(a)             BIO_test_flags(a, BIO_FLAGS_SHOULD_RETRY)
00264 
00265 /*
00266  * The next three are used in conjunction with the BIO_should_io_special()
00267  * condition.  After this returns true, BIO *BIO_get_retry_BIO(BIO *bio, int
00268  * *reason); will walk the BIO stack and return the 'reason' for the special
00269  * and the offending BIO. Given a BIO, BIO_get_retry_reason(bio) will return
00270  * the code.
00271  */
00272 /*
00273  * Returned from the SSL bio when the certificate retrieval code had an error
00274  */
00275 # define BIO_RR_SSL_X509_LOOKUP          0x01
00276 /* Returned from the connect BIO when a connect would have blocked */
00277 # define BIO_RR_CONNECT                  0x02
00278 /* Returned from the accept BIO when an accept would have blocked */
00279 # define BIO_RR_ACCEPT                   0x03
00280 
00281 /* These are passed by the BIO callback */
00282 # define BIO_CB_FREE     0x01
00283 # define BIO_CB_READ     0x02
00284 # define BIO_CB_WRITE    0x03
00285 # define BIO_CB_PUTS     0x04
00286 # define BIO_CB_GETS     0x05
00287 # define BIO_CB_CTRL     0x06
00288 
00289 /*
00290  * The callback is called before and after the underling operation, The
00291  * BIO_CB_RETURN flag indicates if it is after the call
00292  */
00293 # define BIO_CB_RETURN   0x80
00294 # define BIO_CB_return(a) ((a)|BIO_CB_RETURN)
00295 # define BIO_cb_pre(a)   (!((a)&BIO_CB_RETURN))
00296 # define BIO_cb_post(a)  ((a)&BIO_CB_RETURN)
00297 
00298 long (*BIO_get_callback(const BIO *b)) (struct bio_st *, int, const char *,
00299                                         int, long, long);
00300 void BIO_set_callback(BIO *b,
00301                       long (*callback) (struct bio_st *, int, const char *,
00302                                         int, long, long));
00303 char *BIO_get_callback_arg(const BIO *b);
00304 void BIO_set_callback_arg(BIO *b, char *arg);
00305 
00306 const char *BIO_method_name(const BIO *b);
00307 int BIO_method_type(const BIO *b);
00308 
00309 typedef void bio_info_cb (struct bio_st *, int, const char *, int, long,
00310                           long);
00311 
00312 typedef struct bio_method_st {
00313     int type;
00314     const char *name;
00315     int (*bwrite) (BIO *, const char *, int);
00316     int (*bread) (BIO *, char *, int);
00317     int (*bputs) (BIO *, const char *);
00318     int (*bgets) (BIO *, char *, int);
00319     long (*ctrl) (BIO *, int, long, void *);
00320     int (*create) (BIO *);
00321     int (*destroy) (BIO *);
00322     long (*callback_ctrl) (BIO *, int, bio_info_cb *);
00323 } BIO_METHOD;
00324 
00325 struct bio_st {
00326     BIO_METHOD *method;
00327     /* bio, mode, argp, argi, argl, ret */
00328     long (*callback) (struct bio_st *, int, const char *, int, long, long);
00329     char *cb_arg;               /* first argument for the callback */
00330     int init;
00331     int shutdown;
00332     int flags;                  /* extra storage */
00333     int retry_reason;
00334     int num;
00335     void *ptr;
00336     struct bio_st *next_bio;    /* used by filter BIOs */
00337     struct bio_st *prev_bio;    /* used by filter BIOs */
00338     int references;
00339     unsigned long num_read;
00340     unsigned long num_write;
00341     CRYPTO_EX_DATA ex_data;
00342 };
00343 
00344 DECLARE_STACK_OF(BIO)
00345 
00346 typedef struct bio_f_buffer_ctx_struct {
00347     /*-
00348      * Buffers are setup like this:
00349      *
00350      * <---------------------- size ----------------------->
00351      * +---------------------------------------------------+
00352      * | consumed | remaining          | free space        |
00353      * +---------------------------------------------------+
00354      * <-- off --><------- len ------->
00355      */
00356     /*- BIO *bio; *//*
00357      * this is now in the BIO struct
00358      */
00359     int ibuf_size;              /* how big is the input buffer */
00360     int obuf_size;              /* how big is the output buffer */
00361     char *ibuf;                 /* the char array */
00362     int ibuf_len;               /* how many bytes are in it */
00363     int ibuf_off;               /* write/read offset */
00364     char *obuf;                 /* the char array */
00365     int obuf_len;               /* how many bytes are in it */
00366     int obuf_off;               /* write/read offset */
00367 } BIO_F_BUFFER_CTX;
00368 
00369 /* Prefix and suffix callback in ASN1 BIO */
00370 typedef int asn1_ps_func (BIO *b, unsigned char **pbuf, int *plen,
00371                           void *parg);
00372 
00373 # ifndef OPENSSL_NO_SCTP
00374 /* SCTP parameter structs */
00375 struct bio_dgram_sctp_sndinfo {
00376     uint16_t snd_sid;
00377     uint16_t snd_flags;
00378     uint32_t snd_ppid;
00379     uint32_t snd_context;
00380 };
00381 
00382 struct bio_dgram_sctp_rcvinfo {
00383     uint16_t rcv_sid;
00384     uint16_t rcv_ssn;
00385     uint16_t rcv_flags;
00386     uint32_t rcv_ppid;
00387     uint32_t rcv_tsn;
00388     uint32_t rcv_cumtsn;
00389     uint32_t rcv_context;
00390 };
00391 
00392 struct bio_dgram_sctp_prinfo {
00393     uint16_t pr_policy;
00394     uint32_t pr_value;
00395 };
00396 # endif
00397 
00398 /* connect BIO stuff */
00399 # define BIO_CONN_S_BEFORE               1
00400 # define BIO_CONN_S_GET_IP               2
00401 # define BIO_CONN_S_GET_PORT             3
00402 # define BIO_CONN_S_CREATE_SOCKET        4
00403 # define BIO_CONN_S_CONNECT              5
00404 # define BIO_CONN_S_OK                   6
00405 # define BIO_CONN_S_BLOCKED_CONNECT      7
00406 # define BIO_CONN_S_NBIO                 8
00407 /*
00408  * #define BIO_CONN_get_param_hostname BIO_ctrl
00409  */
00410 
00411 # define BIO_C_SET_CONNECT                       100
00412 # define BIO_C_DO_STATE_MACHINE                  101
00413 # define BIO_C_SET_NBIO                          102
00414 # define BIO_C_SET_PROXY_PARAM                   103
00415 # define BIO_C_SET_FD                            104
00416 # define BIO_C_GET_FD                            105
00417 # define BIO_C_SET_FILE_PTR                      106
00418 # define BIO_C_GET_FILE_PTR                      107
00419 # define BIO_C_SET_FILENAME                      108
00420 # define BIO_C_SET_SSL                           109
00421 # define BIO_C_GET_SSL                           110
00422 # define BIO_C_SET_MD                            111
00423 # define BIO_C_GET_MD                            112
00424 # define BIO_C_GET_CIPHER_STATUS                 113
00425 # define BIO_C_SET_BUF_MEM                       114
00426 # define BIO_C_GET_BUF_MEM_PTR                   115
00427 # define BIO_C_GET_BUFF_NUM_LINES                116
00428 # define BIO_C_SET_BUFF_SIZE                     117
00429 # define BIO_C_SET_ACCEPT                        118
00430 # define BIO_C_SSL_MODE                          119
00431 # define BIO_C_GET_MD_CTX                        120
00432 # define BIO_C_GET_PROXY_PARAM                   121
00433 # define BIO_C_SET_BUFF_READ_DATA                122/* data to read first */
00434 # define BIO_C_GET_CONNECT                       123
00435 # define BIO_C_GET_ACCEPT                        124
00436 # define BIO_C_SET_SSL_RENEGOTIATE_BYTES         125
00437 # define BIO_C_GET_SSL_NUM_RENEGOTIATES          126
00438 # define BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT       127
00439 # define BIO_C_FILE_SEEK                         128
00440 # define BIO_C_GET_CIPHER_CTX                    129
00441 # define BIO_C_SET_BUF_MEM_EOF_RETURN            130/* return end of input
00442                                                      * value */
00443 # define BIO_C_SET_BIND_MODE                     131
00444 # define BIO_C_GET_BIND_MODE                     132
00445 # define BIO_C_FILE_TELL                         133
00446 # define BIO_C_GET_SOCKS                         134
00447 # define BIO_C_SET_SOCKS                         135
00448 
00449 # define BIO_C_SET_WRITE_BUF_SIZE                136/* for BIO_s_bio */
00450 # define BIO_C_GET_WRITE_BUF_SIZE                137
00451 # define BIO_C_MAKE_BIO_PAIR                     138
00452 # define BIO_C_DESTROY_BIO_PAIR                  139
00453 # define BIO_C_GET_WRITE_GUARANTEE               140
00454 # define BIO_C_GET_READ_REQUEST                  141
00455 # define BIO_C_SHUTDOWN_WR                       142
00456 # define BIO_C_NREAD0                            143
00457 # define BIO_C_NREAD                             144
00458 # define BIO_C_NWRITE0                           145
00459 # define BIO_C_NWRITE                            146
00460 # define BIO_C_RESET_READ_REQUEST                147
00461 # define BIO_C_SET_MD_CTX                        148
00462 
00463 # define BIO_C_SET_PREFIX                        149
00464 # define BIO_C_GET_PREFIX                        150
00465 # define BIO_C_SET_SUFFIX                        151
00466 # define BIO_C_GET_SUFFIX                        152
00467 
00468 # define BIO_C_SET_EX_ARG                        153
00469 # define BIO_C_GET_EX_ARG                        154
00470 
00471 # define BIO_set_app_data(s,arg)         BIO_set_ex_data(s,0,arg)
00472 # define BIO_get_app_data(s)             BIO_get_ex_data(s,0)
00473 
00474 /* BIO_s_connect() and BIO_s_socks4a_connect() */
00475 # define BIO_set_conn_hostname(b,name) BIO_ctrl(b,BIO_C_SET_CONNECT,0,(char *)name)
00476 # define BIO_set_conn_port(b,port) BIO_ctrl(b,BIO_C_SET_CONNECT,1,(char *)port)
00477 # define BIO_set_conn_ip(b,ip)     BIO_ctrl(b,BIO_C_SET_CONNECT,2,(char *)ip)
00478 # define BIO_set_conn_int_port(b,port) BIO_ctrl(b,BIO_C_SET_CONNECT,3,(char *)port)
00479 # define BIO_get_conn_hostname(b)  BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,0)
00480 # define BIO_get_conn_port(b)      BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1)
00481 # define BIO_get_conn_ip(b)               BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2)
00482 # define BIO_get_conn_int_port(b) BIO_int_ctrl(b,BIO_C_GET_CONNECT,3,0)
00483 
00484 # define BIO_set_nbio(b,n)       BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL)
00485 
00486 /* BIO_s_accept_socket() */
00487 # define BIO_set_accept_port(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0,(char *)name)
00488 # define BIO_get_accept_port(b)  BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,0)
00489 /* #define BIO_set_nbio(b,n)    BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) */
00490 # define BIO_set_nbio_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,1,(n)?(void *)"a":NULL)
00491 # define BIO_set_accept_bios(b,bio) BIO_ctrl(b,BIO_C_SET_ACCEPT,2,(char *)bio)
00492 
00493 # define BIO_BIND_NORMAL                 0
00494 # define BIO_BIND_REUSEADDR_IF_UNUSED    1
00495 # define BIO_BIND_REUSEADDR              2
00496 # define BIO_set_bind_mode(b,mode) BIO_ctrl(b,BIO_C_SET_BIND_MODE,mode,NULL)
00497 # define BIO_get_bind_mode(b,mode) BIO_ctrl(b,BIO_C_GET_BIND_MODE,0,NULL)
00498 
00499 # define BIO_do_connect(b)       BIO_do_handshake(b)
00500 # define BIO_do_accept(b)        BIO_do_handshake(b)
00501 # define BIO_do_handshake(b)     BIO_ctrl(b,BIO_C_DO_STATE_MACHINE,0,NULL)
00502 
00503 /* BIO_s_proxy_client() */
00504 # define BIO_set_url(b,url)      BIO_ctrl(b,BIO_C_SET_PROXY_PARAM,0,(char *)(url))
00505 # define BIO_set_proxies(b,p)    BIO_ctrl(b,BIO_C_SET_PROXY_PARAM,1,(char *)(p))
00506 /* BIO_set_nbio(b,n) */
00507 # define BIO_set_filter_bio(b,s) BIO_ctrl(b,BIO_C_SET_PROXY_PARAM,2,(char *)(s))
00508 /* BIO *BIO_get_filter_bio(BIO *bio); */
00509 # define BIO_set_proxy_cb(b,cb) BIO_callback_ctrl(b,BIO_C_SET_PROXY_PARAM,3,(void *(*cb)()))
00510 # define BIO_set_proxy_header(b,sk) BIO_ctrl(b,BIO_C_SET_PROXY_PARAM,4,(char *)sk)
00511 # define BIO_set_no_connect_return(b,bool) BIO_int_ctrl(b,BIO_C_SET_PROXY_PARAM,5,bool)
00512 
00513 # define BIO_get_proxy_header(b,skp) BIO_ctrl(b,BIO_C_GET_PROXY_PARAM,0,(char *)skp)
00514 # define BIO_get_proxies(b,pxy_p) BIO_ctrl(b,BIO_C_GET_PROXY_PARAM,1,(char *)(pxy_p))
00515 # define BIO_get_url(b,url)      BIO_ctrl(b,BIO_C_GET_PROXY_PARAM,2,(char *)(url))
00516 # define BIO_get_no_connect_return(b)    BIO_ctrl(b,BIO_C_GET_PROXY_PARAM,5,NULL)
00517 
00518 # define BIO_set_fd(b,fd,c)      BIO_int_ctrl(b,BIO_C_SET_FD,c,fd)
00519 # define BIO_get_fd(b,c)         BIO_ctrl(b,BIO_C_GET_FD,0,(char *)c)
00520 
00521 # define BIO_set_fp(b,fp,c)      BIO_ctrl(b,BIO_C_SET_FILE_PTR,c,(char *)fp)
00522 # define BIO_get_fp(b,fpp)       BIO_ctrl(b,BIO_C_GET_FILE_PTR,0,(char *)fpp)
00523 
00524 # define BIO_seek(b,ofs) (int)BIO_ctrl(b,BIO_C_FILE_SEEK,ofs,NULL)
00525 # define BIO_tell(b)     (int)BIO_ctrl(b,BIO_C_FILE_TELL,0,NULL)
00526 
00527 /*
00528  * name is cast to lose const, but might be better to route through a
00529  * function so we can do it safely
00530  */
00531 # ifdef CONST_STRICT
00532 /*
00533  * If you are wondering why this isn't defined, its because CONST_STRICT is
00534  * purely a compile-time kludge to allow const to be checked.
00535  */
00536 int BIO_read_filename(BIO *b, const char *name);
00537 # else
00538 #  define BIO_read_filename(b,name) BIO_ctrl(b,BIO_C_SET_FILENAME, \
00539                 BIO_CLOSE|BIO_FP_READ,(char *)name)
00540 # endif
00541 # define BIO_write_filename(b,name) BIO_ctrl(b,BIO_C_SET_FILENAME, \
00542                 BIO_CLOSE|BIO_FP_WRITE,name)
00543 # define BIO_append_filename(b,name) BIO_ctrl(b,BIO_C_SET_FILENAME, \
00544                 BIO_CLOSE|BIO_FP_APPEND,name)
00545 # define BIO_rw_filename(b,name) BIO_ctrl(b,BIO_C_SET_FILENAME, \
00546                 BIO_CLOSE|BIO_FP_READ|BIO_FP_WRITE,name)
00547 
00548 /*
00549  * WARNING WARNING, this ups the reference count on the read bio of the SSL
00550  * structure.  This is because the ssl read BIO is now pointed to by the
00551  * next_bio field in the bio.  So when you free the BIO, make sure you are
00552  * doing a BIO_free_all() to catch the underlying BIO.
00553  */
00554 # define BIO_set_ssl(b,ssl,c)    BIO_ctrl(b,BIO_C_SET_SSL,c,(char *)ssl)
00555 # define BIO_get_ssl(b,sslp)     BIO_ctrl(b,BIO_C_GET_SSL,0,(char *)sslp)
00556 # define BIO_set_ssl_mode(b,client)      BIO_ctrl(b,BIO_C_SSL_MODE,client,NULL)
00557 # define BIO_set_ssl_renegotiate_bytes(b,num) \
00558         BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_BYTES,num,NULL);
00559 # define BIO_get_num_renegotiates(b) \
00560         BIO_ctrl(b,BIO_C_GET_SSL_NUM_RENEGOTIATES,0,NULL);
00561 # define BIO_set_ssl_renegotiate_timeout(b,seconds) \
00562         BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT,seconds,NULL);
00563 
00564 /* defined in evp.h */
00565 /* #define BIO_set_md(b,md)     BIO_ctrl(b,BIO_C_SET_MD,1,(char *)md) */
00566 
00567 # define BIO_get_mem_data(b,pp)  BIO_ctrl(b,BIO_CTRL_INFO,0,(char *)pp)
00568 # define BIO_set_mem_buf(b,bm,c) BIO_ctrl(b,BIO_C_SET_BUF_MEM,c,(char *)bm)
00569 # define BIO_get_mem_ptr(b,pp)   BIO_ctrl(b,BIO_C_GET_BUF_MEM_PTR,0,(char *)pp)
00570 # define BIO_set_mem_eof_return(b,v) \
00571                                 BIO_ctrl(b,BIO_C_SET_BUF_MEM_EOF_RETURN,v,NULL)
00572 
00573 /* For the BIO_f_buffer() type */
00574 # define BIO_get_buffer_num_lines(b)     BIO_ctrl(b,BIO_C_GET_BUFF_NUM_LINES,0,NULL)
00575 # define BIO_set_buffer_size(b,size)     BIO_ctrl(b,BIO_C_SET_BUFF_SIZE,size,NULL)
00576 # define BIO_set_read_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,0)
00577 # define BIO_set_write_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,1)
00578 # define BIO_set_buffer_read_data(b,buf,num) BIO_ctrl(b,BIO_C_SET_BUFF_READ_DATA,num,buf)
00579 
00580 /* Don't use the next one unless you know what you are doing :-) */
00581 # define BIO_dup_state(b,ret)    BIO_ctrl(b,BIO_CTRL_DUP,0,(char *)(ret))
00582 
00583 # define BIO_reset(b)            (int)BIO_ctrl(b,BIO_CTRL_RESET,0,NULL)
00584 # define BIO_eof(b)              (int)BIO_ctrl(b,BIO_CTRL_EOF,0,NULL)
00585 # define BIO_set_close(b,c)      (int)BIO_ctrl(b,BIO_CTRL_SET_CLOSE,(c),NULL)
00586 # define BIO_get_close(b)        (int)BIO_ctrl(b,BIO_CTRL_GET_CLOSE,0,NULL)
00587 # define BIO_pending(b)          (int)BIO_ctrl(b,BIO_CTRL_PENDING,0,NULL)
00588 # define BIO_wpending(b)         (int)BIO_ctrl(b,BIO_CTRL_WPENDING,0,NULL)
00589 /* ...pending macros have inappropriate return type */
00590 size_t BIO_ctrl_pending(BIO *b);
00591 size_t BIO_ctrl_wpending(BIO *b);
00592 # define BIO_flush(b)            (int)BIO_ctrl(b,BIO_CTRL_FLUSH,0,NULL)
00593 # define BIO_get_info_callback(b,cbp) (int)BIO_ctrl(b,BIO_CTRL_GET_CALLBACK,0, \
00594                                                    cbp)
00595 # define BIO_set_info_callback(b,cb) (int)BIO_callback_ctrl(b,BIO_CTRL_SET_CALLBACK,cb)
00596 
00597 /* For the BIO_f_buffer() type */
00598 # define BIO_buffer_get_num_lines(b) BIO_ctrl(b,BIO_CTRL_GET,0,NULL)
00599 
00600 /* For BIO_s_bio() */
00601 # define BIO_set_write_buf_size(b,size) (int)BIO_ctrl(b,BIO_C_SET_WRITE_BUF_SIZE,size,NULL)
00602 # define BIO_get_write_buf_size(b,size) (size_t)BIO_ctrl(b,BIO_C_GET_WRITE_BUF_SIZE,size,NULL)
00603 # define BIO_make_bio_pair(b1,b2)   (int)BIO_ctrl(b1,BIO_C_MAKE_BIO_PAIR,0,b2)
00604 # define BIO_destroy_bio_pair(b)    (int)BIO_ctrl(b,BIO_C_DESTROY_BIO_PAIR,0,NULL)
00605 # define BIO_shutdown_wr(b) (int)BIO_ctrl(b, BIO_C_SHUTDOWN_WR, 0, NULL)
00606 /* macros with inappropriate type -- but ...pending macros use int too: */
00607 # define BIO_get_write_guarantee(b) (int)BIO_ctrl(b,BIO_C_GET_WRITE_GUARANTEE,0,NULL)
00608 # define BIO_get_read_request(b)    (int)BIO_ctrl(b,BIO_C_GET_READ_REQUEST,0,NULL)
00609 size_t BIO_ctrl_get_write_guarantee(BIO *b);
00610 size_t BIO_ctrl_get_read_request(BIO *b);
00611 int BIO_ctrl_reset_read_request(BIO *b);
00612 
00613 /* ctrl macros for dgram */
00614 # define BIO_ctrl_dgram_connect(b,peer)  \
00615                      (int)BIO_ctrl(b,BIO_CTRL_DGRAM_CONNECT,0, (char *)peer)
00616 # define BIO_ctrl_set_connected(b, state, peer) \
00617          (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_CONNECTED, state, (char *)peer)
00618 # define BIO_dgram_recv_timedout(b) \
00619          (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP, 0, NULL)
00620 # define BIO_dgram_send_timedout(b) \
00621          (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP, 0, NULL)
00622 # define BIO_dgram_get_peer(b,peer) \
00623          (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)peer)
00624 # define BIO_dgram_set_peer(b,peer) \
00625          (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)peer)
00626 # define BIO_dgram_get_mtu_overhead(b) \
00627          (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL)
00628 
00629 /* These two aren't currently implemented */
00630 /* int BIO_get_ex_num(BIO *bio); */
00631 /* void BIO_set_ex_free_func(BIO *bio,int idx,void (*cb)()); */
00632 int BIO_set_ex_data(BIO *bio, int idx, void *data);
00633 void *BIO_get_ex_data(BIO *bio, int idx);
00634 int BIO_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
00635                          CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
00636 unsigned long BIO_number_read(BIO *bio);
00637 unsigned long BIO_number_written(BIO *bio);
00638 
00639 /* For BIO_f_asn1() */
00640 int BIO_asn1_set_prefix(BIO *b, asn1_ps_func *prefix,
00641                         asn1_ps_func *prefix_free);
00642 int BIO_asn1_get_prefix(BIO *b, asn1_ps_func **pprefix,
00643                         asn1_ps_func **pprefix_free);
00644 int BIO_asn1_set_suffix(BIO *b, asn1_ps_func *suffix,
00645                         asn1_ps_func *suffix_free);
00646 int BIO_asn1_get_suffix(BIO *b, asn1_ps_func **psuffix,
00647                         asn1_ps_func **psuffix_free);
00648 
00649 # ifndef OPENSSL_NO_FP_API
00650 BIO_METHOD *BIO_s_file(void);
00651 BIO *BIO_new_file(const char *filename, const char *mode);
00652 BIO *BIO_new_fp(FILE *stream, int close_flag);
00653 #  define BIO_s_file_internal    BIO_s_file
00654 # endif
00655 BIO *BIO_new(BIO_METHOD *type);
00656 int BIO_set(BIO *a, BIO_METHOD *type);
00657 int BIO_free(BIO *a);
00658 void BIO_vfree(BIO *a);
00659 int BIO_read(BIO *b, void *data, int len);
00660 int BIO_gets(BIO *bp, char *buf, int size);
00661 int BIO_write(BIO *b, const void *data, int len);
00662 int BIO_puts(BIO *bp, const char *buf);
00663 int BIO_indent(BIO *b, int indent, int max);
00664 long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg);
00665 long BIO_callback_ctrl(BIO *b, int cmd,
00666                        void (*fp) (struct bio_st *, int, const char *, int,
00667                                    long, long));
00668 char *BIO_ptr_ctrl(BIO *bp, int cmd, long larg);
00669 long BIO_int_ctrl(BIO *bp, int cmd, long larg, int iarg);
00670 BIO *BIO_push(BIO *b, BIO *append);
00671 BIO *BIO_pop(BIO *b);
00672 void BIO_free_all(BIO *a);
00673 BIO *BIO_find_type(BIO *b, int bio_type);
00674 BIO *BIO_next(BIO *b);
00675 BIO *BIO_get_retry_BIO(BIO *bio, int *reason);
00676 int BIO_get_retry_reason(BIO *bio);
00677 BIO *BIO_dup_chain(BIO *in);
00678 
00679 int BIO_nread0(BIO *bio, char **buf);
00680 int BIO_nread(BIO *bio, char **buf, int num);
00681 int BIO_nwrite0(BIO *bio, char **buf);
00682 int BIO_nwrite(BIO *bio, char **buf, int num);
00683 
00684 long BIO_debug_callback(BIO *bio, int cmd, const char *argp, int argi,
00685                         long argl, long ret);
00686 
00687 BIO_METHOD *BIO_s_mem(void);
00688 BIO *BIO_new_mem_buf(void *buf, int len);
00689 BIO_METHOD *BIO_s_socket(void);
00690 BIO_METHOD *BIO_s_connect(void);
00691 BIO_METHOD *BIO_s_accept(void);
00692 BIO_METHOD *BIO_s_fd(void);
00693 # ifndef OPENSSL_SYS_OS2
00694 BIO_METHOD *BIO_s_log(void);
00695 # endif
00696 BIO_METHOD *BIO_s_bio(void);
00697 BIO_METHOD *BIO_s_null(void);
00698 BIO_METHOD *BIO_f_null(void);
00699 BIO_METHOD *BIO_f_buffer(void);
00700 # ifdef OPENSSL_SYS_VMS
00701 BIO_METHOD *BIO_f_linebuffer(void);
00702 # endif
00703 BIO_METHOD *BIO_f_nbio_test(void);
00704 # ifndef OPENSSL_NO_DGRAM
00705 BIO_METHOD *BIO_s_datagram(void);
00706 #  ifndef OPENSSL_NO_SCTP
00707 BIO_METHOD *BIO_s_datagram_sctp(void);
00708 #  endif
00709 # endif
00710 
00711 /* BIO_METHOD *BIO_f_ber(void); */
00712 
00713 int BIO_sock_should_retry(int i);
00714 int BIO_sock_non_fatal_error(int error);
00715 int BIO_dgram_non_fatal_error(int error);
00716 
00717 int BIO_fd_should_retry(int i);
00718 int BIO_fd_non_fatal_error(int error);
00719 int BIO_dump_cb(int (*cb) (const void *data, size_t len, void *u),
00720                 void *u, const char *s, int len);
00721 int BIO_dump_indent_cb(int (*cb) (const void *data, size_t len, void *u),
00722                        void *u, const char *s, int len, int indent);
00723 int BIO_dump(BIO *b, const char *bytes, int len);
00724 int BIO_dump_indent(BIO *b, const char *bytes, int len, int indent);
00725 # ifndef OPENSSL_NO_FP_API
00726 int BIO_dump_fp(FILE *fp, const char *s, int len);
00727 int BIO_dump_indent_fp(FILE *fp, const char *s, int len, int indent);
00728 # endif
00729 int BIO_hex_string(BIO *out, int indent, int width, unsigned char *data,
00730                    int datalen);
00731 
00732 struct hostent *BIO_gethostbyname(const char *name);
00733 /*-
00734  * We might want a thread-safe interface too:
00735  * struct hostent *BIO_gethostbyname_r(const char *name,
00736  *     struct hostent *result, void *buffer, size_t buflen);
00737  * or something similar (caller allocates a struct hostent,
00738  * pointed to by "result", and additional buffer space for the various
00739  * substructures; if the buffer does not suffice, NULL is returned
00740  * and an appropriate error code is set).
00741  */
00742 int BIO_sock_error(int sock);
00743 int BIO_socket_ioctl(int fd, long type, void *arg);
00744 int BIO_socket_nbio(int fd, int mode);
00745 int BIO_get_port(const char *str, unsigned short *port_ptr);
00746 int BIO_get_host_ip(const char *str, unsigned char *ip);
00747 int BIO_get_accept_socket(char *host_port, int mode);
00748 int BIO_accept(int sock, char **ip_port);
00749 int BIO_sock_init(void);
00750 void BIO_sock_cleanup(void);
00751 int BIO_set_tcp_ndelay(int sock, int turn_on);
00752 
00753 BIO *BIO_new_socket(int sock, int close_flag);
00754 BIO *BIO_new_dgram(int fd, int close_flag);
00755 # ifndef OPENSSL_NO_SCTP
00756 BIO *BIO_new_dgram_sctp(int fd, int close_flag);
00757 int BIO_dgram_is_sctp(BIO *bio);
00758 int BIO_dgram_sctp_notification_cb(BIO *b,
00759                                    void (*handle_notifications) (BIO *bio,
00760                                                                  void
00761                                                                  *context,
00762                                                                  void *buf),
00763                                    void *context);
00764 int BIO_dgram_sctp_wait_for_dry(BIO *b);
00765 int BIO_dgram_sctp_msg_waiting(BIO *b);
00766 # endif
00767 BIO *BIO_new_fd(int fd, int close_flag);
00768 BIO *BIO_new_connect(const char *host_port);
00769 BIO *BIO_new_accept(const char *host_port);
00770 
00771 int BIO_new_bio_pair(BIO **bio1, size_t writebuf1,
00772                      BIO **bio2, size_t writebuf2);
00773 /*
00774  * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints.
00775  * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default
00776  * value.
00777  */
00778 
00779 void BIO_copy_next_retry(BIO *b);
00780 
00781 /*
00782  * long BIO_ghbn_ctrl(int cmd,int iarg,char *parg);
00783  */
00784 
00785 # ifdef __GNUC__
00786 #  define __bio_h__attr__ __attribute__
00787 # else
00788 #  define __bio_h__attr__(x)
00789 # endif
00790 int BIO_printf(BIO *bio, const char *format, ...)
00791 __bio_h__attr__((__format__(__printf__, 2, 3)));
00792 int BIO_vprintf(BIO *bio, const char *format, va_list args)
00793 __bio_h__attr__((__format__(__printf__, 2, 0)));
00794 int BIO_snprintf(char *buf, size_t n, const char *format, ...)
00795 __bio_h__attr__((__format__(__printf__, 3, 4)));
00796 int BIO_vsnprintf(char *buf, size_t n, const char *format, va_list args)
00797 __bio_h__attr__((__format__(__printf__, 3, 0)));
00798 # undef __bio_h__attr__
00799 
00800 /* BEGIN ERROR CODES */
00801 /*
00802  * The following lines are auto generated by the script mkerr.pl. Any changes
00803  * made after this point may be overwritten when the script is next run.
00804  */
00805 void ERR_load_BIO_strings(void);
00806 
00807 /* Error codes for the BIO functions. */
00808 
00809 /* Function codes. */
00810 # define BIO_F_ACPT_STATE                                 100
00811 # define BIO_F_BIO_ACCEPT                                 101
00812 # define BIO_F_BIO_BER_GET_HEADER                         102
00813 # define BIO_F_BIO_CALLBACK_CTRL                          131
00814 # define BIO_F_BIO_CTRL                                   103
00815 # define BIO_F_BIO_GETHOSTBYNAME                          120
00816 # define BIO_F_BIO_GETS                                   104
00817 # define BIO_F_BIO_GET_ACCEPT_SOCKET                      105
00818 # define BIO_F_BIO_GET_HOST_IP                            106
00819 # define BIO_F_BIO_GET_PORT                               107
00820 # define BIO_F_BIO_MAKE_PAIR                              121
00821 # define BIO_F_BIO_NEW                                    108
00822 # define BIO_F_BIO_NEW_FILE                               109
00823 # define BIO_F_BIO_NEW_MEM_BUF                            126
00824 # define BIO_F_BIO_NREAD                                  123
00825 # define BIO_F_BIO_NREAD0                                 124
00826 # define BIO_F_BIO_NWRITE                                 125
00827 # define BIO_F_BIO_NWRITE0                                122
00828 # define BIO_F_BIO_PUTS                                   110
00829 # define BIO_F_BIO_READ                                   111
00830 # define BIO_F_BIO_SOCK_INIT                              112
00831 # define BIO_F_BIO_WRITE                                  113
00832 # define BIO_F_BUFFER_CTRL                                114
00833 # define BIO_F_CONN_CTRL                                  127
00834 # define BIO_F_CONN_STATE                                 115
00835 # define BIO_F_DGRAM_SCTP_READ                            132
00836 # define BIO_F_DGRAM_SCTP_WRITE                           133
00837 # define BIO_F_FILE_CTRL                                  116
00838 # define BIO_F_FILE_READ                                  130
00839 # define BIO_F_LINEBUFFER_CTRL                            129
00840 # define BIO_F_MEM_READ                                   128
00841 # define BIO_F_MEM_WRITE                                  117
00842 # define BIO_F_SSL_NEW                                    118
00843 # define BIO_F_WSASTARTUP                                 119
00844 
00845 /* Reason codes. */
00846 # define BIO_R_ACCEPT_ERROR                               100
00847 # define BIO_R_BAD_FOPEN_MODE                             101
00848 # define BIO_R_BAD_HOSTNAME_LOOKUP                        102
00849 # define BIO_R_BROKEN_PIPE                                124
00850 # define BIO_R_CONNECT_ERROR                              103
00851 # define BIO_R_EOF_ON_MEMORY_BIO                          127
00852 # define BIO_R_ERROR_SETTING_NBIO                         104
00853 # define BIO_R_ERROR_SETTING_NBIO_ON_ACCEPTED_SOCKET      105
00854 # define BIO_R_ERROR_SETTING_NBIO_ON_ACCEPT_SOCKET        106
00855 # define BIO_R_GETHOSTBYNAME_ADDR_IS_NOT_AF_INET          107
00856 # define BIO_R_INVALID_ARGUMENT                           125
00857 # define BIO_R_INVALID_IP_ADDRESS                         108
00858 # define BIO_R_IN_USE                                     123
00859 # define BIO_R_KEEPALIVE                                  109
00860 # define BIO_R_NBIO_CONNECT_ERROR                         110
00861 # define BIO_R_NO_ACCEPT_PORT_SPECIFIED                   111
00862 # define BIO_R_NO_HOSTNAME_SPECIFIED                      112
00863 # define BIO_R_NO_PORT_DEFINED                            113
00864 # define BIO_R_NO_PORT_SPECIFIED                          114
00865 # define BIO_R_NO_SUCH_FILE                               128
00866 # define BIO_R_NULL_PARAMETER                             115
00867 # define BIO_R_TAG_MISMATCH                               116
00868 # define BIO_R_UNABLE_TO_BIND_SOCKET                      117
00869 # define BIO_R_UNABLE_TO_CREATE_SOCKET                    118
00870 # define BIO_R_UNABLE_TO_LISTEN_SOCKET                    119
00871 # define BIO_R_UNINITIALIZED                              120
00872 # define BIO_R_UNSUPPORTED_METHOD                         121
00873 # define BIO_R_WRITE_TO_READ_ONLY_BIO                     126
00874 # define BIO_R_WSASTARTUP                                 122
00875 
00876 #ifdef  __cplusplus
00877 }
00878 #endif
00879 #endif