Main Page | Data Structures | Directories | File List | Data Fields

tlv.h

00001 /*
00002  * Handle TLV encoded data
00003  *
00004  * Copyright (C) 2003, Olaf Kirch <okir@suse.de>
00005  */
00006 
00007 #ifndef OPENCT_TLV_H
00008 #define OPENCT_TLV_H
00009 
00010 #ifdef __cplusplus
00011 extern "C" {
00012 #endif
00013 
00014 #include <openct/protocol.h>
00015 #include <openct/buffer.h>
00016 
00017 typedef unsigned char   ifd_tag_t;
00018 
00019 typedef struct ct_tlv_parser {
00020         unsigned char   use_large_tags;
00021         unsigned char * val[256];
00022         unsigned int    len[256];
00023 } ct_tlv_parser_t;
00024 
00025 typedef struct ct_tlv_builder {
00026         int             error;
00027         unsigned char   use_large_tags;
00028         ct_buf_t *      buf;
00029         unsigned int    len;
00030         unsigned char * lenp;
00031 } ct_tlv_builder_t;
00032 
00033 extern int      ct_tlv_parse(ct_tlv_parser_t *, ct_buf_t *);
00034 extern int      ct_tlv_get_int(ct_tlv_parser_t *,
00035                                 ifd_tag_t, unsigned int *);
00036 extern int      ct_tlv_get_string(ct_tlv_parser_t *,
00037                                 ifd_tag_t, char *, size_t);
00038 extern int      ct_tlv_get_opaque(ct_tlv_parser_t *,
00039                                 ifd_tag_t, unsigned char **, size_t *);
00040 extern int      ct_tlv_get_bytes(ct_tlv_parser_t *,
00041                                 ifd_tag_t, void *, size_t);
00042 
00043 extern void     ct_tlv_builder_init(ct_tlv_builder_t *, ct_buf_t *, int);
00044 extern void     ct_tlv_put_int(ct_tlv_builder_t *,
00045                                 ifd_tag_t, unsigned int);
00046 extern void     ct_tlv_put_string(ct_tlv_builder_t *,
00047                                 ifd_tag_t, const char *);
00048 extern void     ct_tlv_put_opaque(ct_tlv_builder_t *, ifd_tag_t,
00049                                 const unsigned char *, size_t);
00050 extern void     ct_tlv_put_tag(ct_tlv_builder_t *, ifd_tag_t);
00051 extern void     ct_tlv_add_byte(ct_tlv_builder_t *, unsigned char);
00052 extern void     ct_tlv_add_bytes(ct_tlv_builder_t *,
00053                                 const unsigned char *, size_t);
00054 
00055 #ifdef __cplusplus
00056 }
00057 #endif
00058 
00059 #endif /* OPENCT_TLV_H */

Generated on Sun Sep 11 12:11:04 2005 for OpenCT by  doxygen 1.4.2