Main Page | Data Structures | Directories | File List | Data Fields | Globals | Related Pages

rdata.h

Go to the documentation of this file.
00001 /*
00002  * 
00003  * rdata.h
00004  *
00005  * rdata definitions
00006  *
00007  * a Net::DNS like library for C
00008  *
00009  * (c) NLnet Labs, 2004, 2005
00010  *
00011  * See the file LICENSE for the license
00012  */
00013 
00014 #ifndef _LDNS_RDATA_H
00015 #define _LDNS_RDATA_H
00016 
00017 #include <ldns/common.h>
00018 #include <ldns/error.h>
00019 
00020 #define LDNS_MAX_RDFLEN 65535
00021 
00022 #define LDNS_RDF_SIZE_BYTE              1
00023 #define LDNS_RDF_SIZE_WORD              2
00024 #define LDNS_RDF_SIZE_DOUBLEWORD        4
00025 #define LDNS_RDF_SIZE_6BYTES            6
00026 #define LDNS_RDF_SIZE_16BYTES           16
00027 
00031 enum ldns_enum_rdf_type
00032 {
00034         LDNS_RDF_TYPE_NONE,
00036         LDNS_RDF_TYPE_DNAME,
00038         LDNS_RDF_TYPE_INT8,
00040         LDNS_RDF_TYPE_INT16,
00042         LDNS_RDF_TYPE_INT32,
00044         LDNS_RDF_TYPE_A,        
00046         LDNS_RDF_TYPE_AAAA,
00048         LDNS_RDF_TYPE_STR,
00050         LDNS_RDF_TYPE_APL,
00052         LDNS_RDF_TYPE_B64,
00054         LDNS_RDF_TYPE_HEX,
00056         LDNS_RDF_TYPE_NSEC, 
00058         LDNS_RDF_TYPE_TYPE, 
00060         LDNS_RDF_TYPE_CLASS,
00062         LDNS_RDF_TYPE_CERT_ALG,
00064         LDNS_RDF_TYPE_ALG,
00066         LDNS_RDF_TYPE_UNKNOWN,
00068         LDNS_RDF_TYPE_TIME,
00070         LDNS_RDF_TYPE_PERIOD,
00072         LDNS_RDF_TYPE_TSIGTIME,
00073         LDNS_RDF_TYPE_TSIG,
00076         LDNS_RDF_TYPE_INT16_DATA,
00078         LDNS_RDF_TYPE_SERVICE,
00080         LDNS_RDF_TYPE_LOC,
00082         LDNS_RDF_TYPE_WKS,
00084         LDNS_RDF_TYPE_NSAP,
00086         LDNS_RDF_TYPE_IPSECKEY
00087 };
00088 typedef enum ldns_enum_rdf_type ldns_rdf_type;
00089 
00093 enum ldns_enum_cert_algorithm
00094 {
00095         LDNS_CERT_PKIX          = 1,
00096         LDNS_CERT_SPKI          = 2,
00097         LDNS_CERT_PGP           = 3,
00098         LDNS_CERT_URI           = 253,
00099         LDNS_CERT_OID           = 254
00100 };
00101 typedef enum ldns_enum_cert_algorithm ldns_cert_algorithm;
00102 
00103 
00104 
00112 struct ldns_struct_rdf
00113 {
00115         size_t _size;
00117         ldns_rdf_type _type;
00119         void  *_data;
00120 };
00121 typedef struct ldns_struct_rdf ldns_rdf;
00122 
00123 /* prototypes */
00124 
00125 /* write access functions */
00132 void            ldns_rdf_set_size(ldns_rdf *rd, size_t size);
00139 void            ldns_rdf_set_type(ldns_rdf *rd, ldns_rdf_type type);
00146 void            ldns_rdf_set_data(ldns_rdf *rd, void *data);
00147 
00148 /* read access */
00154 size_t        ldns_rdf_size(const ldns_rdf *rd);
00161 ldns_rdf_type   ldns_rdf_get_type(const ldns_rdf *rd);
00167 uint8_t         *ldns_rdf_data(const ldns_rdf *rd);
00168 
00169 /* creator functions */
00170 
00180 ldns_rdf        *ldns_rdf_new(ldns_rdf_type type, size_t size, void *data);
00181 
00191 ldns_rdf        *ldns_rdf_new_frm_data(ldns_rdf_type type, size_t size, const void *data);
00192 
00199 ldns_rdf        *ldns_rdf_new_frm_str(ldns_rdf_type type, const char *str);
00200 
00207 ldns_rdf        *ldns_rdf_new_frm_fp(ldns_rdf_type type, FILE *fp);
00208 
00216 ldns_rdf        *ldns_rdf_new_frm_fp_l(ldns_rdf_type type, FILE *fp, int *line_nr);
00217 
00218 /* destroy functions */
00219 
00226 void            ldns_rdf_free(ldns_rdf *rd);
00227 
00234 void            ldns_rdf_deep_free(ldns_rdf *rd);
00235 
00236 /* conversion functions */
00237 
00244 ldns_rdf        *ldns_native2rdf_int8(ldns_rdf_type type, uint8_t value);
00245 
00252 ldns_rdf        *ldns_native2rdf_int16(ldns_rdf_type type, uint16_t value);
00253 
00263 ldns_rdf        *ldns_native2rdf_int32(ldns_rdf_type type, uint32_t value);
00264 
00274 ldns_rdf        *ldns_native2rdf_int16_data(size_t size, uint8_t *data);
00275 
00282 ldns_rdf        *ldns_rdf_address_reverse(ldns_rdf *rd);
00283 
00289 uint8_t         ldns_rdf2native_int8(ldns_rdf *rd);
00290 
00296 uint16_t        ldns_rdf2native_int16(ldns_rdf *rd);
00297 
00303 uint32_t        ldns_rdf2native_int32(ldns_rdf *rd);
00304 
00310 time_t          ldns_rdf2native_time_t(ldns_rdf *rd);
00311 
00318 uint32_t        ldns_str2period(const char *nptr, const char **endptr);
00319 
00328 struct sockaddr_storage * ldns_rdf2native_sockaddr_storage(ldns_rdf *rd, uint16_t port, size_t *size);
00329 
00336 ldns_rdf * ldns_sockaddr_storage2rdf(struct sockaddr_storage *sock, uint16_t *port);
00337 
00345 ldns_status     ldns_octet(char *word, size_t *length);
00346 
00352 ldns_rdf        *ldns_rdf_clone(const ldns_rdf *rd);
00353 
00362 int             ldns_rdf_compare(const ldns_rdf *rd1, const ldns_rdf *rd2);
00363 
00364 #endif  /* !_LDNS_RDATA_H */

Generated on Tue Jan 24 02:22:27 2006 for ldns by  doxygen 1.4.4