00001
00018 #ifndef LDNS_HOST2STR_H
00019 #define LDNS_HOST2STR_H
00020
00021 #include <ldns/common.h>
00022 #include <ldns/error.h>
00023 #include <ldns/rr.h>
00024 #include <ldns/rdata.h>
00025 #include <ldns/packet.h>
00026 #include <ldns/buffer.h>
00027 #include <ldns/resolver.h>
00028 #include <ldns/zone.h>
00029 #include <ctype.h>
00030
00031 #include "ldns/util.h"
00032
00033 #ifdef __cplusplus
00034 extern "C" {
00035 #endif
00036
00037 #define LDNS_APL_IP4 1
00038 #define LDNS_APL_IP6 2
00039 #define LDNS_APL_MASK 0x7f
00040 #define LDNS_APL_NEGATION 0x80
00041
00046
00047
00048 #define LDNS_COMMENT_NULLS (1 << 0)
00049
00050 #define LDNS_COMMENT_KEY_ID (1 << 1)
00051
00052 #define LDNS_COMMENT_KEY_TYPE (1 << 2)
00053
00054 #define LDNS_COMMENT_KEY_SIZE (1 << 3)
00055
00056 #define LDNS_COMMENT_BUBBLEBABBLE (1 << 4)
00057
00058 #define LDNS_COMMENT_FLAGS (1 << 5)
00059
00060 #define LDNS_COMMENT_NSEC3_CHAIN (1 << 6)
00061
00062 #define LDNS_COMMENT_LAYOUT (1 << 7)
00063
00064 #define LDNS_COMMENT_RRSIGS (1 << 8)
00065 #define LDNS_FMT_ZEROIZE_RRSIGS (1 << 9)
00066 #define LDNS_FMT_PAD_SOA_SERIAL (1 << 10)
00067 #define LDNS_FMT_RFC3597 (1 << 11)
00068
00069 #define LDNS_FMT_FLAGS_WITH_DATA 2
00070
00072 #define LDNS_COMMENT_KEY (LDNS_COMMENT_KEY_ID \
00073 |LDNS_COMMENT_KEY_TYPE\
00074 |LDNS_COMMENT_KEY_SIZE)
00075
00086 struct ldns_struct_output_format
00087 {
00089 int flags;
00091 void *data;
00092 };
00093 typedef struct ldns_struct_output_format ldns_output_format;
00094
00100 struct ldns_struct_output_format_storage
00101 { int flags;
00102 ldns_rbtree_t* hashmap;
00103 ldns_rdf* bitmap;
00104 };
00105 typedef struct ldns_struct_output_format_storage ldns_output_format_storage;
00106
00111 extern const ldns_output_format *ldns_output_format_nocomments;
00116 extern const ldns_output_format *ldns_output_format_onlykeyids;
00120 extern const ldns_output_format *ldns_output_format_default;
00126 extern const ldns_output_format *ldns_output_format_bubblebabble;
00127
00133 INLINE
00134 ldns_output_format* ldns_output_format_init(ldns_output_format_storage* fmt) {
00135 fmt->flags = ldns_output_format_default->flags;
00136 fmt->hashmap = NULL;
00137 fmt->bitmap = NULL;
00138 return (ldns_output_format*)fmt;
00139 }
00140
00144 INLINE void ldns_output_format_set(ldns_output_format* fmt, int flag) {
00145 fmt->flags |= flag;
00146 }
00147
00151 INLINE void ldns_output_format_clear(ldns_output_format* fmt, int flag) {
00152 fmt->flags &= !flag;
00153 }
00154
00162 ldns_status
00163 ldns_output_format_set_type(ldns_output_format* fmt, ldns_rr_type type);
00164
00174 ldns_status
00175 ldns_output_format_clear_type(ldns_output_format* fmt, ldns_rr_type type);
00176
00184 ldns_status
00185 ldns_pkt_opcode2buffer_str(ldns_buffer *output, ldns_pkt_opcode opcode);
00186
00194 ldns_status
00195 ldns_pkt_rcode2buffer_str(ldns_buffer *output, ldns_pkt_rcode rcode);
00196
00204 ldns_status
00205 ldns_algorithm2buffer_str(ldns_buffer *output,
00206 ldns_algorithm algorithm);
00207
00215 ldns_status
00216 ldns_cert_algorithm2buffer_str(ldns_buffer *output,
00217 ldns_cert_algorithm cert_algorithm);
00218
00219
00228 char *ldns_pkt_opcode2str(ldns_pkt_opcode opcode);
00229
00238 char *ldns_pkt_rcode2str(ldns_pkt_rcode rcode);
00239
00248 char *ldns_pkt_algorithm2str(ldns_algorithm algorithm);
00249
00258 char *ldns_pkt_cert_algorithm2str(ldns_cert_algorithm cert_algorithm);
00259
00266 ldns_status ldns_rdf2buffer_str_a(ldns_buffer *output, const ldns_rdf *rdf);
00267
00274 ldns_status ldns_rdf2buffer_str_aaaa(ldns_buffer *output, const ldns_rdf *rdf);
00275
00282 ldns_status ldns_rdf2buffer_str_str(ldns_buffer *output, const ldns_rdf *rdf);
00283
00290 ldns_status ldns_rdf2buffer_str_b64(ldns_buffer *output, const ldns_rdf *rdf);
00291
00298 ldns_status ldns_rdf2buffer_str_b32_ext(ldns_buffer *output, const ldns_rdf *rdf);
00299
00306 ldns_status ldns_rdf2buffer_str_hex(ldns_buffer *output, const ldns_rdf *rdf);
00307
00314 ldns_status ldns_rdf2buffer_str_type(ldns_buffer *output, const ldns_rdf *rdf);
00315
00322 ldns_status ldns_rdf2buffer_str_class(ldns_buffer *output, const ldns_rdf *rdf);
00323
00330 ldns_status ldns_rdf2buffer_str_alg(ldns_buffer *output, const ldns_rdf *rdf);
00331
00339 ldns_status ldns_rr_type2buffer_str(ldns_buffer *output,
00340 const ldns_rr_type type);
00341
00350 char *ldns_rr_type2str(const ldns_rr_type type);
00351
00359 ldns_status ldns_rr_class2buffer_str(ldns_buffer *output,
00360 const ldns_rr_class klass);
00361
00370 char *ldns_rr_class2str(const ldns_rr_class klass);
00371
00372
00379 ldns_status ldns_rdf2buffer_str_cert_alg(ldns_buffer *output, const ldns_rdf *rdf);
00380
00387 ldns_status ldns_rdf2buffer_str_loc(ldns_buffer *output, const ldns_rdf *rdf);
00388
00395 ldns_status ldns_rdf2buffer_str_unknown(ldns_buffer *output, const ldns_rdf *rdf);
00396
00403 ldns_status ldns_rdf2buffer_str_nsap(ldns_buffer *output, const ldns_rdf *rdf);
00404
00411 ldns_status ldns_rdf2buffer_str_atma(ldns_buffer *output, const ldns_rdf *rdf);
00412
00419 ldns_status ldns_rdf2buffer_str_wks(ldns_buffer *output, const ldns_rdf *rdf);
00420
00427 ldns_status ldns_rdf2buffer_str_nsec(ldns_buffer *output, const ldns_rdf *rdf);
00428
00435 ldns_status ldns_rdf2buffer_str_period(ldns_buffer *output, const ldns_rdf *rdf);
00436
00443 ldns_status ldns_rdf2buffer_str_tsigtime(ldns_buffer *output, const ldns_rdf *rdf);
00444
00451 ldns_status ldns_rdf2buffer_str_apl(ldns_buffer *output, const ldns_rdf *rdf);
00452
00459 ldns_status ldns_rdf2buffer_str_int16_data(ldns_buffer *output, const ldns_rdf *rdf);
00460
00467 ldns_status ldns_rdf2buffer_str_ipseckey(ldns_buffer *output, const ldns_rdf *rdf);
00468
00477 ldns_status ldns_rdf2buffer_str(ldns_buffer *output, const ldns_rdf *rdf);
00478
00489 ldns_status ldns_rr2buffer_str(ldns_buffer *output, const ldns_rr *rr);
00490
00503 ldns_status ldns_rr2buffer_str_fmt(ldns_buffer *output,
00504 const ldns_output_format *fmt, const ldns_rr *rr);
00505
00514 ldns_status ldns_pkt2buffer_str(ldns_buffer *output, const ldns_pkt *pkt);
00515
00525 ldns_status ldns_pkt2buffer_str_fmt(ldns_buffer *output,
00526 const ldns_output_format *fmt, const ldns_pkt *pkt);
00527
00534 ldns_status ldns_rdf2buffer_str_nsec3_salt(ldns_buffer *output, const ldns_rdf *rdf);
00535
00536
00545 ldns_status ldns_key2buffer_str(ldns_buffer *output, const ldns_key *k);
00546
00553 ldns_status ldns_rdf2buffer_str_int8(ldns_buffer *output, const ldns_rdf *rdf);
00554
00561 ldns_status ldns_rdf2buffer_str_int16(ldns_buffer *output, const ldns_rdf *rdf);
00562
00569 ldns_status ldns_rdf2buffer_str_int32(ldns_buffer *output, const ldns_rdf *rdf);
00570
00577 ldns_status ldns_rdf2buffer_str_time(ldns_buffer *output, const ldns_rdf *rdf);
00578
00586 ldns_status ldns_rdf2buffer_str_ilnp64(ldns_buffer *output,
00587 const ldns_rdf *rdf);
00588
00596 ldns_status ldns_rdf2buffer_str_eui48(ldns_buffer *output,
00597 const ldns_rdf *rdf);
00598
00606 ldns_status ldns_rdf2buffer_str_eui64(ldns_buffer *output,
00607 const ldns_rdf *rdf);
00608
00616 ldns_status ldns_rdf2buffer_str_tag(ldns_buffer *output,
00617 const ldns_rdf *rdf);
00618
00626 ldns_status ldns_rdf2buffer_str_long_str(ldns_buffer *output,
00627 const ldns_rdf *rdf);
00628
00636 ldns_status ldns_rdf2buffer_str_hip(ldns_buffer *output,
00637 const ldns_rdf *rdf);
00638
00647 char *ldns_rdf2str(const ldns_rdf *rdf);
00648
00657 char *ldns_rr2str(const ldns_rr *rr);
00658
00668 char *ldns_rr2str_fmt(const ldns_output_format *fmt, const ldns_rr *rr);
00669
00678 char *ldns_pkt2str(const ldns_pkt *pkt);
00679
00689 char *ldns_pkt2str_fmt(const ldns_output_format *fmt, const ldns_pkt *pkt);
00690
00699 char *ldns_key2str(const ldns_key *k);
00700
00709 char *ldns_rr_list2str(const ldns_rr_list *rr_list);
00710
00720 char *ldns_rr_list2str_fmt(
00721 const ldns_output_format *fmt, const ldns_rr_list *rr_list);
00722
00731 char *ldns_buffer2str(ldns_buffer *buffer);
00732
00742 char *ldns_buffer_export2str(ldns_buffer *buffer);
00743
00752 void ldns_rdf_print(FILE *output, const ldns_rdf *rdf);
00753
00762 void ldns_rr_print(FILE *output, const ldns_rr *rr);
00763
00773 void ldns_rr_print_fmt(FILE *output,
00774 const ldns_output_format *fmt, const ldns_rr *rr);
00775
00784 void ldns_pkt_print(FILE *output, const ldns_pkt *pkt);
00785
00795 void ldns_pkt_print_fmt(FILE *output,
00796 const ldns_output_format *fmt, const ldns_pkt *pkt);
00797
00805 ldns_status ldns_rr_list2buffer_str(ldns_buffer *output, const ldns_rr_list *list);
00806
00815 ldns_status ldns_rr_list2buffer_str_fmt(ldns_buffer *output,
00816 const ldns_output_format *fmt, const ldns_rr_list *list);
00817
00825 ldns_status ldns_pktheader2buffer_str(ldns_buffer *output, const ldns_pkt *pkt);
00826
00832 void ldns_rr_list_print(FILE *output, const ldns_rr_list *list);
00833
00840 void ldns_rr_list_print_fmt(FILE *output,
00841 const ldns_output_format *fmt, const ldns_rr_list *list);
00842
00849 void ldns_resolver_print(FILE *output, const ldns_resolver *r);
00850
00858 void ldns_resolver_print_fmt(FILE *output,
00859 const ldns_output_format *fmt, const ldns_resolver *r);
00860
00867 void ldns_zone_print(FILE *output, const ldns_zone *z);
00868
00876 void ldns_zone_print_fmt(FILE *output,
00877 const ldns_output_format *fmt, const ldns_zone *z);
00878
00885 ldns_status ldns_rdf2buffer_str_dname(ldns_buffer *output, const ldns_rdf *dname);
00886
00887 #ifdef __cplusplus
00888 }
00889 #endif
00890
00891 #endif