00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
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 65535
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_8BYTES 8
00038 #define LDNS_RDF_SIZE_16BYTES 16
00039
00040 #define LDNS_NSEC3_VARS_OPTOUT_MASK 0x01
00041
00045 enum ldns_enum_rdf_type
00046 {
00048 LDNS_RDF_TYPE_NONE,
00050 LDNS_RDF_TYPE_DNAME,
00052 LDNS_RDF_TYPE_INT8,
00054 LDNS_RDF_TYPE_INT16,
00056 LDNS_RDF_TYPE_INT32,
00058 LDNS_RDF_TYPE_A,
00060 LDNS_RDF_TYPE_AAAA,
00062 LDNS_RDF_TYPE_STR,
00064 LDNS_RDF_TYPE_APL,
00066 LDNS_RDF_TYPE_B32_EXT,
00068 LDNS_RDF_TYPE_B64,
00070 LDNS_RDF_TYPE_HEX,
00072 LDNS_RDF_TYPE_NSEC,
00074 LDNS_RDF_TYPE_TYPE,
00076 LDNS_RDF_TYPE_CLASS,
00078 LDNS_RDF_TYPE_CERT_ALG,
00080 LDNS_RDF_TYPE_ALG,
00082 LDNS_RDF_TYPE_UNKNOWN,
00084 LDNS_RDF_TYPE_TIME,
00086 LDNS_RDF_TYPE_PERIOD,
00088 LDNS_RDF_TYPE_TSIGTIME,
00092 LDNS_RDF_TYPE_HIP,
00095 LDNS_RDF_TYPE_INT16_DATA,
00097 LDNS_RDF_TYPE_SERVICE,
00099 LDNS_RDF_TYPE_LOC,
00101 LDNS_RDF_TYPE_WKS,
00103 LDNS_RDF_TYPE_NSAP,
00105 LDNS_RDF_TYPE_ATMA,
00107 LDNS_RDF_TYPE_IPSECKEY,
00109 LDNS_RDF_TYPE_NSEC3_SALT,
00111 LDNS_RDF_TYPE_NSEC3_NEXT_OWNER,
00112
00116 LDNS_RDF_TYPE_ILNP64,
00117
00119 LDNS_RDF_TYPE_EUI48,
00121 LDNS_RDF_TYPE_EUI64,
00122
00126 LDNS_RDF_TYPE_TAG,
00127
00132 LDNS_RDF_TYPE_LONG_STR,
00133
00134
00135 LDNS_RDF_TYPE_BITMAP = LDNS_RDF_TYPE_NSEC
00136 };
00137 typedef enum ldns_enum_rdf_type ldns_rdf_type;
00138
00142 enum ldns_enum_cert_algorithm
00143 {
00144 LDNS_CERT_PKIX = 1,
00145 LDNS_CERT_SPKI = 2,
00146 LDNS_CERT_PGP = 3,
00147 LDNS_CERT_IPKIX = 4,
00148 LDNS_CERT_ISPKI = 5,
00149 LDNS_CERT_IPGP = 6,
00150 LDNS_CERT_ACPKIX = 7,
00151 LDNS_CERT_IACPKIX = 8,
00152 LDNS_CERT_URI = 253,
00153 LDNS_CERT_OID = 254
00154 };
00155 typedef enum ldns_enum_cert_algorithm ldns_cert_algorithm;
00156
00157
00158
00166 struct ldns_struct_rdf
00167 {
00169 size_t _size;
00171 ldns_rdf_type _type;
00173 void *_data;
00174 };
00175 typedef struct ldns_struct_rdf ldns_rdf;
00176
00177
00178
00179
00180
00187 void ldns_rdf_set_size(ldns_rdf *rd, size_t size);
00188
00195 void ldns_rdf_set_type(ldns_rdf *rd, ldns_rdf_type type);
00196
00203 void ldns_rdf_set_data(ldns_rdf *rd, void *data);
00204
00205
00206
00212 size_t ldns_rdf_size(const ldns_rdf *rd);
00213
00220 ldns_rdf_type ldns_rdf_get_type(const ldns_rdf *rd);
00221
00228 uint8_t *ldns_rdf_data(const ldns_rdf *rd);
00229
00230
00231
00241 ldns_rdf *ldns_rdf_new(ldns_rdf_type type, size_t size, void *data);
00242
00252 ldns_rdf *ldns_rdf_new_frm_data(ldns_rdf_type type, size_t size, const void *data);
00253
00260 ldns_rdf *ldns_rdf_new_frm_str(ldns_rdf_type type, const char *str);
00261
00269 ldns_status ldns_rdf_new_frm_fp(ldns_rdf **r, ldns_rdf_type type, FILE *fp);
00270
00279 ldns_status ldns_rdf_new_frm_fp_l(ldns_rdf **r, ldns_rdf_type type, FILE *fp, int *line_nr);
00280
00281
00282
00289 void ldns_rdf_free(ldns_rdf *rd);
00290
00297 void ldns_rdf_deep_free(ldns_rdf *rd);
00298
00299
00300
00307 ldns_rdf *ldns_native2rdf_int8(ldns_rdf_type type, uint8_t value);
00308
00315 ldns_rdf *ldns_native2rdf_int16(ldns_rdf_type type, uint16_t value);
00316
00326 ldns_rdf *ldns_native2rdf_int32(ldns_rdf_type type, uint32_t value);
00327
00338 ldns_rdf *ldns_native2rdf_int16_data(size_t size, uint8_t *data);
00339
00346 ldns_rdf *ldns_rdf_address_reverse(ldns_rdf *rd);
00347
00353 uint8_t ldns_rdf2native_int8(const ldns_rdf *rd);
00354
00360 uint16_t ldns_rdf2native_int16(const ldns_rdf *rd);
00361
00367 uint32_t ldns_rdf2native_int32(const ldns_rdf *rd);
00368
00374 time_t ldns_rdf2native_time_t(const ldns_rdf *rd);
00375
00382 uint32_t ldns_str2period(const char *nptr, const char **endptr);
00383
00391 ldns_status ldns_octet(char *word, size_t *length);
00392
00398 ldns_rdf *ldns_rdf_clone(const ldns_rdf *rd);
00399
00409 int ldns_rdf_compare(const ldns_rdf *rd1, const ldns_rdf *rd2);
00410
00422 ldns_status ldns_rdf_hip_get_alg_hit_pk(ldns_rdf *rdf, uint8_t* alg,
00423 uint8_t *hit_size, uint8_t** hit,
00424 uint16_t *pk_size, uint8_t** pk);
00425
00436 ldns_status ldns_rdf_hip_new_frm_alg_hit_pk(ldns_rdf** rdf, uint8_t alg,
00437 uint8_t hit_size, uint8_t *hit, uint16_t pk_size, uint8_t *pk);
00438
00439 #ifdef __cplusplus
00440 }
00441 #endif
00442
00443 #endif