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 #ifdef __cplusplus
00028 extern "C" {
00029 #endif
00030 
00031 #define LDNS_MAX_RDFLEN 8192
00032 
00033 #define LDNS_RDF_SIZE_BYTE              1
00034 #define LDNS_RDF_SIZE_WORD              2
00035 #define LDNS_RDF_SIZE_DOUBLEWORD        4
00036 #define LDNS_RDF_SIZE_6BYTES            6
00037 #define LDNS_RDF_SIZE_16BYTES           16
00038 
00039 #define LDNS_NSEC3_VARS_OPTOUT_MASK 0x01
00040 
00044 enum ldns_enum_rdf_type
00045 {
00047         LDNS_RDF_TYPE_NONE,
00049         LDNS_RDF_TYPE_DNAME,
00051         LDNS_RDF_TYPE_INT8,
00053         LDNS_RDF_TYPE_INT16,
00055         LDNS_RDF_TYPE_INT32,
00057         LDNS_RDF_TYPE_A,
00059         LDNS_RDF_TYPE_AAAA,
00061         LDNS_RDF_TYPE_STR,
00063         LDNS_RDF_TYPE_APL,
00065         LDNS_RDF_TYPE_B32_EXT,
00067         LDNS_RDF_TYPE_B64,
00069         LDNS_RDF_TYPE_HEX,
00071         LDNS_RDF_TYPE_NSEC,
00073         LDNS_RDF_TYPE_TYPE,
00075         LDNS_RDF_TYPE_CLASS,
00077         LDNS_RDF_TYPE_CERT_ALG,
00079         LDNS_RDF_TYPE_ALG,
00081         LDNS_RDF_TYPE_UNKNOWN,
00083         LDNS_RDF_TYPE_TIME,
00085         LDNS_RDF_TYPE_PERIOD,
00087         LDNS_RDF_TYPE_TSIGTIME,
00088         LDNS_RDF_TYPE_TSIG,
00091         LDNS_RDF_TYPE_INT16_DATA,
00093         LDNS_RDF_TYPE_SERVICE,
00095         LDNS_RDF_TYPE_LOC,
00097         LDNS_RDF_TYPE_WKS,
00099         LDNS_RDF_TYPE_NSAP,
00101         LDNS_RDF_TYPE_ATMA,
00103         LDNS_RDF_TYPE_IPSECKEY,
00105         LDNS_RDF_TYPE_NSEC3_SALT,
00107         LDNS_RDF_TYPE_NSEC3_NEXT_OWNER
00108 };
00109 typedef enum ldns_enum_rdf_type ldns_rdf_type;
00110 
00114 enum ldns_enum_cert_algorithm
00115 {
00116         LDNS_CERT_PKIX          = 1,
00117         LDNS_CERT_SPKI          = 2,
00118         LDNS_CERT_PGP           = 3,
00119         LDNS_CERT_IPKIX         = 4,
00120         LDNS_CERT_ISPKI         = 5,
00121         LDNS_CERT_IPGP          = 6,
00122         LDNS_CERT_ACPKIX        = 7,
00123         LDNS_CERT_IACPKIX       = 8,
00124         LDNS_CERT_URI           = 253,
00125         LDNS_CERT_OID           = 254
00126 };
00127 typedef enum ldns_enum_cert_algorithm ldns_cert_algorithm;
00128 
00129 
00130 
00138 struct ldns_struct_rdf
00139 {
00141         size_t _size;
00143         ldns_rdf_type _type;
00145         void  *_data;
00146 };
00147 typedef struct ldns_struct_rdf ldns_rdf;
00148 
00149 /* prototypes */
00150 
00151 /* write access functions */
00152 
00159 void ldns_rdf_set_size(ldns_rdf *rd, size_t size);
00160 
00167 void ldns_rdf_set_type(ldns_rdf *rd, ldns_rdf_type type);
00168 
00175 void ldns_rdf_set_data(ldns_rdf *rd, void *data);
00176 
00177 /* read access */
00178 
00184 size_t ldns_rdf_size(const ldns_rdf *rd);
00185 
00192 ldns_rdf_type ldns_rdf_get_type(const ldns_rdf *rd);
00193 
00200 uint8_t *ldns_rdf_data(const ldns_rdf *rd);
00201 
00202 /* creator functions */
00203 
00213 ldns_rdf *ldns_rdf_new(ldns_rdf_type type, size_t size, void *data);
00214 
00224 ldns_rdf *ldns_rdf_new_frm_data(ldns_rdf_type type, size_t size, const void *data);
00225 
00232 ldns_rdf *ldns_rdf_new_frm_str(ldns_rdf_type type, const char *str);
00233 
00241 ldns_status ldns_rdf_new_frm_fp(ldns_rdf **r, ldns_rdf_type type, FILE *fp);
00242 
00251 ldns_status ldns_rdf_new_frm_fp_l(ldns_rdf **r, ldns_rdf_type type, FILE *fp, int *line_nr);
00252 
00253 /* destroy functions */
00254 
00261 void ldns_rdf_free(ldns_rdf *rd);
00262 
00269 void ldns_rdf_deep_free(ldns_rdf *rd);
00270 
00271 /* conversion functions */
00272 
00279 ldns_rdf *ldns_native2rdf_int8(ldns_rdf_type type, uint8_t value);
00280 
00287 ldns_rdf *ldns_native2rdf_int16(ldns_rdf_type type, uint16_t value);
00288 
00298 ldns_rdf *ldns_native2rdf_int32(ldns_rdf_type type, uint32_t value);
00299 
00310 ldns_rdf *ldns_native2rdf_int16_data(size_t size, uint8_t *data);
00311 
00318 ldns_rdf *ldns_rdf_address_reverse(ldns_rdf *rd);
00319 
00325 uint8_t         ldns_rdf2native_int8(const ldns_rdf *rd);
00326 
00332 uint16_t        ldns_rdf2native_int16(const ldns_rdf *rd);
00333 
00339 uint32_t ldns_rdf2native_int32(const ldns_rdf *rd);
00340 
00346 time_t ldns_rdf2native_time_t(const ldns_rdf *rd);
00347 
00354 uint32_t ldns_str2period(const char *nptr, const char **endptr);
00355 
00363 ldns_status ldns_octet(char *word, size_t *length);
00364 
00370 ldns_rdf *ldns_rdf_clone(const ldns_rdf *rd);
00371 
00381 int ldns_rdf_compare(const ldns_rdf *rd1, const ldns_rdf *rd2);
00382 
00383 #ifdef __cplusplus
00384 }
00385 #endif
00386 
00387 #endif  /* LDNS_RDATA_H */

Generated on 9 Feb 2013 for ldns by  doxygen 1.6.1