]> git.sur5r.net Git - openldap/blobdiff - include/lber.h
Update configure to:
[openldap] / include / lber.h
index 6f7c165e37d09a03a59e9cbc0720d2b75df61e06..bf939f90b31a44449621c6106830f797745cb657 100644 (file)
@@ -1,4 +1,13 @@
 /*
+ * Copyright 1998,1999 The OpenLDAP Foundation, Redwood City, California, USA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are permitted only
+ * as authorized by the OpenLDAP Public License.  A copy of this
+ * license is available at http://www.OpenLDAP.org/license.html or
+ * in file LICENSE in the top-level directory of the distribution.
+ */
+/* Portions
  * Copyright (c) 1990 Regents of the University of Michigan.
  * All rights reserved.
  *
@@ -40,6 +49,7 @@ LDAP_BEGIN_DECL
  */
 #define LBER_ERROR             0xffffffffL
 #define LBER_DEFAULT           0xffffffffL
+/* #define LBER_END_SEQORSET   0xfffffffeL *//* no part of LDAP C-API */
 
 /* general BER types we know about */
 #define LBER_BOOLEAN           0x01L
@@ -58,57 +68,45 @@ typedef int (*BERTranslateProc) LDAP_P(( char **bufp,
        unsigned long *buflenp,
        int free_input ));
 
-typedef struct berelement {
-       char            *ber_buf;
-       char            *ber_ptr;
-       char            *ber_end;
-       struct seqorset *ber_sos;
-       unsigned long   ber_tag;
-       unsigned long   ber_len;
-       int             ber_usertag;
-       char            ber_options;
+/* LBER BerElement options */
 #define LBER_USE_DER           0x01
 #define LBER_USE_INDEFINITE_LEN        0x02
 #define LBER_TRANSLATE_STRINGS 0x04
-       char            *ber_rwptr;
-       BERTranslateProc ber_encode_translate_proc;
-       BERTranslateProc ber_decode_translate_proc;
-} BerElement;
+
+/* get/set options for BerElement */
+#define LBER_OPT_BER_OPTIONS   0x01
+#define LBER_OPT_BER_DEBUG             0x02
+
+#define LBER_OPT_DEBUG_LEVEL   LBER_OPT_BER_DEBUG
+#define LBER_OPT_LOG_PRINT_FN  0x8001
+
+typedef void (*BER_LOG_PRINT_FN) LDAP_P(( char *buf ));
+
+/* LBER Sockbuf options */ 
+#define LBER_TO_FILE           0x01    /* to a file referenced by sb_fd   */
+#define LBER_TO_FILE_ONLY      0x02    /* only write to file, not network */
+#define LBER_MAX_INCOMING_SIZE 0x04    /* impose limit on incoming stuff  */
+#define LBER_NO_READ_AHEAD     0x08    /* read only as much as requested  */
+
+/* get/set options for Sockbuf */
+#define LBER_OPT_SOCKBUF_DESC          0x1000
+#define LBER_OPT_SOCKBUF_OPTIONS       0x1001
+#define LBER_OPT_SOCKBUF_DEBUG         0x1002
+
+/* on/off values */
+#define LBER_OPT_ON            ((void *) 1)
+#define LBER_OPT_OFF   ((void *) 0)
+
+#define LBER_OPT_SUCCESS       0
+#define LBER_OPT_ERROR         (-1)
+
+typedef struct berelement BerElement;
 #define NULLBER        ((BerElement *) 0)
 
-typedef struct sockbuf {
-#ifndef MACOS
-       int             sb_sd;
-#else /* MACOS */
-       void            *sb_sd;
-#endif /* MACOS */
-       BerElement      sb_ber;
-
-       int             sb_naddr;       /* > 0 implies using CLDAP (UDP) */
-       void            *sb_useaddr;    /* pointer to sockaddr to use next */
-       void            *sb_fromaddr;   /* pointer to message source sockaddr */
-       void            **sb_addrs;     /* actually an array of pointers to
-                                               sockaddrs */
-
-       int             sb_options;     /* to support copying ber elements */
-#define LBER_TO_FILE           0x01    /* to a file referenced by sb_fd   */
-#define LBER_TO_FILE_ONLY      0x02    /* only write to file, not network */
-#define LBER_MAX_INCOMING_SIZE 0x04    /* impose limit on incoming stuff  */
-#define LBER_NO_READ_AHEAD     0x08    /* read only as much as requested  */
-       int             sb_fd;
-       long            sb_max_incoming;
-} Sockbuf;
-#define READBUFSIZ     8192
-
-typedef struct seqorset {
-       BerElement      *sos_ber;
-       unsigned long   sos_clen;
-       unsigned long   sos_tag;
-       char            *sos_first;
-       char            *sos_ptr;
-       struct seqorset *sos_next;
-} Seqorset;
-#define NULLSEQORSET   ((Seqorset *) 0)
+typedef struct sockbuf Sockbuf;
+
+typedef struct seqorset Seqorset;
+#define NULLSEQORSET ((Seqorset *) 0)
 
 /* structure for returning a sequence of octet strings + length */
 struct berval {
@@ -116,12 +114,16 @@ struct berval {
        char            *bv_val;
 };
 
-extern int lber_debug;
-
 /*
  * in bprint.c:
  */
-LDAP_F void lber_bprint LDAP_P(( char *data, int len ));
+LDAP_F void ber_print_error LDAP_P(( char *data ));
+LDAP_F void ber_bprint LDAP_P(( char *data, int len ));
+#define lber_bprint(d,l)       ber_bprint((d),(l))
+
+LDAP_F void ber_dump LDAP_P(( BerElement *ber, int inout ));
+LDAP_F void ber_sos_dump LDAP_P(( Seqorset *sos ));
+
 
 /*
  * in decode.c:
@@ -167,7 +169,6 @@ LDAP_F int ber_start_set LDAP_P(( BerElement *ber, unsigned long tag ));
 LDAP_F int ber_put_seq LDAP_P(( BerElement *ber ));
 LDAP_F int ber_put_set LDAP_P(( BerElement *ber ));
 LDAP_F int ber_printf LDAP_P(( BerElement *ber, char *fmt, ... ));
-
 /*
  * in io.c:
  */
@@ -176,18 +177,39 @@ LDAP_F long ber_read LDAP_P(( BerElement *ber, char *buf, unsigned long len ));
 LDAP_F long ber_write LDAP_P(( BerElement *ber, char *buf, unsigned long len,
        int nosos ));
 LDAP_F void ber_free LDAP_P(( BerElement *ber, int freebuf ));
+LDAP_F void ber_clear LDAP_P(( BerElement *ber, int freebuf ));
 LDAP_F int ber_flush LDAP_P(( Sockbuf *sb, BerElement *ber, int freeit ));
 LDAP_F BerElement *ber_alloc LDAP_P(( void ));
 LDAP_F BerElement *der_alloc LDAP_P(( void ));
 LDAP_F BerElement *ber_alloc_t LDAP_P(( int options ));
 LDAP_F BerElement *ber_dup LDAP_P(( BerElement *ber ));
-LDAP_F void ber_dump LDAP_P(( BerElement *ber, int inout ));
-LDAP_F void ber_sos_dump LDAP_P(( Seqorset *sos ));
 LDAP_F unsigned long ber_get_next LDAP_P(( Sockbuf *sb, unsigned long *len,
        BerElement *ber ));
-LDAP_F void ber_init LDAP_P(( BerElement *ber, int options ));
+LDAP_F void ber_init_w_nullc LDAP_P(( BerElement *ber, int options ));
 LDAP_F void ber_reset LDAP_P(( BerElement *ber, int was_writing ));
 
+/*
+ * LBER draft-ietf-ldapext-ldap-c-api-01 routines
+ */
+LDAP_F BerElement *ber_init LDAP_P(( struct berval *bv ));
+LDAP_F int ber_flatten LDAP_P(( BerElement *ber, struct berval **bvPtr ));
+
+/*
+ * LBER ber accessor functions
+ */
+LDAP_F int
+lber_get_option LDAP_P((void *item, int option, void *outvalue));
+
+LDAP_F int
+lber_set_option LDAP_P((void *item, int option, void *invalue));
+
+/*
+ * LBER Sockbuf functions
+ */
+LDAP_F Sockbuf *lber_pvt_sk_alloc LDAP_P((void));
+LDAP_F Sockbuf *lber_pvt_sb_alloc_fd LDAP_P((int fd));
+LDAP_F void lber_pvt_sb_free LDAP_P((Sockbuf *sb));
+
 LDAP_END_DECL
 
 #endif /* _LBER_H */