]> git.sur5r.net Git - openldap/blob - libraries/liblber/lber-int.h
6ee5e7389ef22b3c354c189cabf2878c26e9166d
[openldap] / libraries / liblber / lber-int.h
1 /* $OpenLDAP$ */
2 /*
3  * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved.
4  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
5  */
6 /* Portions
7  * Copyright (c) 1990 Regents of the University of Michigan.
8  * All rights reserved.
9  *
10  * Redistribution and use in source and binary forms are permitted
11  * provided that this notice is preserved and that due credit is given
12  * to the University of Michigan at Ann Arbor. The name of the University
13  * may not be used to endorse or promote products derived from this
14  * software without specific prior written permission. This software
15  * is provided ``as is'' without express or implied warranty.
16  */
17
18 #ifndef _LBER_INT_H
19 #define _LBER_INT_H
20
21 #include "lber.h"
22 #include "ldap_log.h"
23 #include "lber_pvt.h"
24
25 LDAP_BEGIN_DECL
26
27 LBER_F (BER_ERRNO_FN) ber_int_errno_fn;
28
29 struct lber_options {
30         short lbo_valid;
31         unsigned short          lbo_options;
32         int                     lbo_debug;
33         long            lbo_meminuse;
34 };
35
36 #define LBER_UNINITIALIZED              0x0
37 #define LBER_INITIALIZED                0x1
38 #define LBER_VALID_BERELEMENT   0x2
39 #define LBER_VALID_SOCKBUF              0x3
40
41 LBER_F (struct lber_options) ber_int_options;
42 #define ber_int_debug ber_int_options.lbo_debug
43
44 struct berelement {
45         struct          lber_options ber_opts;
46 #define ber_valid               ber_opts.lbo_valid
47 #define ber_options             ber_opts.lbo_options
48 #define ber_debug               ber_opts.lbo_debug
49
50         ber_tag_t       ber_usertag;
51
52         ber_tag_t       ber_tag;
53         ber_len_t       ber_len;
54
55         char            *ber_buf;
56         char            *ber_ptr;
57         char            *ber_end;
58
59         struct seqorset *ber_sos;
60         char            *ber_rwptr;
61 };
62 #define BER_VALID(ber)  ((ber)->ber_valid==LBER_VALID_BERELEMENT)
63
64 #define ber_pvt_ber_bytes(ber)          ((ber)->ber_ptr - (ber)->ber_buf)
65 #define ber_pvt_ber_remaining(ber)      ((ber)->ber_end - (ber)->ber_ptr)
66
67 struct sockbuf {
68         struct lber_options sb_opts;
69         Sockbuf_IO_Desc         *sb_iod;                /* I/O functions */
70 #define sb_valid                sb_opts.lbo_valid
71 #define sb_options              sb_opts.lbo_options
72 #define sb_debug                sb_opts.lbo_debug
73         ber_socket_t            sb_fd;
74         int             sb_trans_needs_read:1;
75         int             sb_trans_needs_write:1;
76 };
77
78 #define SOCKBUF_VALID( sb )     ( (sb)->sb_valid == LBER_VALID_SOCKBUF )
79
80 #define READBUFSIZ      8192
81
82 struct seqorset {
83         BerElement      *sos_ber;
84         ber_len_t       sos_clen;
85         ber_tag_t       sos_tag;
86         char            *sos_first;
87         char            *sos_ptr;
88         struct seqorset *sos_next;
89 };
90
91
92 /*
93  * io.c
94  */
95 int ber_realloc LDAP_P((
96         BerElement *ber,
97         ber_len_t len ));
98
99 /*
100  * bprint.c
101  */
102 #define ber_log_printf ber_pvt_log_printf
103
104 LBER_F( int )
105 ber_log_bprint LDAP_P((
106         int errlvl,
107         int loglvl,
108         const char *data,
109         ber_len_t len ));
110
111 LBER_F( int )
112 ber_log_dump LDAP_P((
113         int errlvl,
114         int loglvl,
115         BerElement *ber,
116         int inout ));
117
118 LBER_F( int )
119 ber_log_sos_dump LDAP_P((
120         int errlvl,
121         int loglvl,
122         Seqorset *sos ));
123
124
125 /* memory.c */
126         /* simple macros to realloc for now */
127 LBER_F (BerMemoryFunctions *)   ber_int_memory_fns;
128
129 #ifdef CSRIMALLOC
130 #define LBER_INT_MALLOC         malloc
131 #define LBER_INT_CALLOC         calloc
132 #define LBER_INT_REALLOC        realloc
133 #define LBER_INT_FREE           free
134 #define LBER_INT_VFREE          ber_memvfree
135 #define LBER_INT_STRDUP         strdup
136
137 #define LBER_MALLOC                     malloc
138 #define LBER_CALLOC                     calloc
139 #define LBER_REALLOC            realloc
140 #define LBER_FREE                       free
141 #define LBER_VFREE                      ber_memvfree
142 #define LBER_STRDUP                     strdup
143
144 #else
145 #define LBER_INT_MALLOC(s)              ber_memalloc((s))
146 #define LBER_INT_CALLOC(n,s)    ber_memcalloc((n),(s))
147 #define LBER_INT_REALLOC(p,s)   ber_memrealloc((p),(s))
148 #define LBER_INT_FREE(p)                ber_memfree((p))
149 #define LBER_INT_VFREE(v)               ber_memvfree((void**)(v))
150 #define LBER_INT_STRDUP(s)              ber_strdup((s))
151
152 #define LBER_MALLOC(s)          ber_memalloc((s))
153 #define LBER_CALLOC(n,s)        ber_memcalloc((n),(s))
154 #define LBER_REALLOC(p,s)       ber_memrealloc((p),(s))
155 #define LBER_FREE(p)            ber_memfree((p))        
156 #define LBER_VFREE(v)           ber_memvfree((void**)(v))
157 #define LBER_STRDUP(s)          ber_strdup((s))
158 #endif
159
160 /* sockbuf.c */
161
162 LBER_F( int )
163 ber_int_sb_init LDAP_P(( Sockbuf *sb ));
164
165 LBER_F( int )
166 ber_int_sb_close LDAP_P(( Sockbuf *sb ));
167
168 LBER_F( int )
169 ber_int_sb_destroy LDAP_P(( Sockbuf *sb ));
170
171 LBER_F( ber_slen_t )
172 ber_int_sb_read LDAP_P(( Sockbuf *sb, void *buf, ber_len_t len ));
173
174 LBER_F( ber_slen_t )
175 ber_int_sb_write LDAP_P(( Sockbuf *sb, void *buf, ber_len_t len ));
176
177 LDAP_END_DECL
178
179 #endif /* _LBER_INT_H */