rdata.h

Go to the documentation of this file.
00001 /*
00002  * rdata.h
00003  *
00004  * rdata definitions
00005  *
00006  * a Net::DNS like library for C
00007  *
00008  * (c) NLnet Labs, 2005-2006
00009  *
00010  * See the file LICENSE for the license
00011  */
00012 
00013 
00021 #ifndef LDNS_RDATA_H
00022 #define LDNS_RDATA_H
00023 
00024 #include <ldns/common.h>
00025 #include <ldns/error.h>
00026 
00027 #define LDNS_MAX_RDFLEN 65535
00028 
00029 #define LDNS_RDF_SIZE_BYTE              1
00030 #define LDNS_RDF_SIZE_WORD              2
00031 #define LDNS_RDF_SIZE_DOUBLEWORD        4
00032 #define LDNS_RDF_SIZE_6BYTES            6
00033 #define LDNS_RDF_SIZE_16BYTES           16
00034 
00038 enum ldns_enum_rdf_type
00039 {
00041         LDNS_RDF_TYPE_NONE,
00043         LDNS_RDF_TYPE_DNAME,
00045         LDNS_RDF_TYPE_INT8,
00047         LDNS_RDF_TYPE_INT16,
00049         LDNS_RDF_TYPE_INT32,
00051         LDNS_RDF_TYPE_A,        
00053         LDNS_RDF_TYPE_AAAA,
00055         LDNS_RDF_TYPE_STR,
00057         LDNS_RDF_TYPE_APL,
00059         LDNS_RDF_TYPE_B64,
00061         LDNS_RDF_TYPE_HEX,
00063         LDNS_RDF_TYPE_NSEC, 
00065         LDNS_RDF_TYPE_TYPE, 
00067         LDNS_RDF_TYPE_CLASS,
00069         LDNS_RDF_TYPE_CERT_ALG,
00071         LDNS_RDF_TYPE_ALG,
00073         LDNS_RDF_TYPE_UNKNOWN,
00075         LDNS_RDF_TYPE_TIME,
00077         LDNS_RDF_TYPE_PERIOD,
00079         LDNS_RDF_TYPE_TSIGTIME,
00080         LDNS_RDF_TYPE_TSIG,
00083         LDNS_RDF_TYPE_INT16_DATA,
00085         LDNS_RDF_TYPE_SERVICE,
00087         LDNS_RDF_TYPE_LOC,
00089         LDNS_RDF_TYPE_WKS,
00091         LDNS_RDF_TYPE_NSAP,
00093         LDNS_RDF_TYPE_IPSECKEY
00094 };
00095 typedef enum ldns_enum_rdf_type ldns_rdf_type;
00096 
00100 enum ldns_enum_cert_algorithm
00101 {
00102         LDNS_CERT_PKIX          = 1,
00103         LDNS_CERT_SPKI          = 2,
00104         LDNS_CERT_PGP           = 3,
00105         LDNS_CERT_URI           = 253,
00106         LDNS_CERT_OID           = 254
00107 };
00108 typedef enum ldns_enum_cert_algorithm ldns_cert_algorithm;
00109 
00110 
00111 
00119 struct ldns_struct_rdf
00120 {
00122         size_t _size;
00124         ldns_rdf_type _type;
00126         void  *_data;
00127 };
00128 typedef struct ldns_struct_rdf ldns_rdf;
00129 
00130 /* prototypes */
00131 
00132 /* write access functions */
00139 void            ldns_rdf_set_size(ldns_rdf *rd, size_t size);
00146 void            ldns_rdf_set_type(ldns_rdf *rd, ldns_rdf_type type);
00153 void            ldns_rdf_set_data(ldns_rdf *rd, void *data);
00154 
00155 /* read access */
00161 size_t        ldns_rdf_size(const ldns_rdf *rd);
00168 ldns_rdf_type   ldns_rdf_get_type(const ldns_rdf *rd);
00174 uint8_t         *ldns_rdf_data(const ldns_rdf *rd);
00175 
00176 /* creator functions */
00177 
00187 ldns_rdf        *ldns_rdf_new(ldns_rdf_type type, size_t size, void *data);
00188 
00198 ldns_rdf        *ldns_rdf_new_frm_data(ldns_rdf_type type, size_t size, const void *data);
00199 
00206 ldns_rdf        *ldns_rdf_new_frm_str(ldns_rdf_type type, const char *str);
00207 
00215 ldns_status ldns_rdf_new_frm_fp(ldns_rdf **r, ldns_rdf_type type, FILE *fp);
00216 
00225 ldns_status  ldns_rdf_new_frm_fp_l(ldns_rdf **r, ldns_rdf_type type, FILE *fp, int *line_nr);
00226 
00227 /* destroy functions */
00228 
00235 void            ldns_rdf_free(ldns_rdf *rd);
00236 
00243 void            ldns_rdf_deep_free(ldns_rdf *rd);
00244 
00245 /* conversion functions */
00246 
00253 ldns_rdf        *ldns_native2rdf_int8(ldns_rdf_type type, uint8_t value);
00254 
00261 ldns_rdf        *ldns_native2rdf_int16(ldns_rdf_type type, uint16_t value);
00262 
00272 ldns_rdf        *ldns_native2rdf_int32(ldns_rdf_type type, uint32_t value);
00273 
00283 ldns_rdf        *ldns_native2rdf_int16_data(size_t size, uint8_t *data);
00284 
00291 ldns_rdf        *ldns_rdf_address_reverse(ldns_rdf *rd);
00292 
00298 uint8_t         ldns_rdf2native_int8(const ldns_rdf *rd);
00299 
00305 uint16_t        ldns_rdf2native_int16(const ldns_rdf *rd);
00306 
00312 uint32_t        ldns_rdf2native_int32(const ldns_rdf *rd);
00313 
00319 time_t          ldns_rdf2native_time_t(const ldns_rdf *rd);
00320 
00327 uint32_t        ldns_str2period(const char *nptr, const char **endptr);
00328 
00336 ldns_status     ldns_octet(char *word, size_t *length);
00337 
00343 ldns_rdf        *ldns_rdf_clone(const ldns_rdf *rd);
00344 
00354 int             ldns_rdf_compare(const ldns_rdf *rd1, const ldns_rdf *rd2);
00355 
00356 #endif  /* LDNS_RDATA_H */

Generated on Wed Feb 20 20:24:22 2008 for ldns by  doxygen 1.5.5