00001  00002  00003  00004  00005  00006  00007  00008  00009  00010  00011  00012  00013  00014  00015  00016  00017  00018  00019  00020 00021 
#ifndef __POSLIB_RR_H 00022 
#define __POSLIB_RR_H 00023 
 00024 
#include "dnsmessage.h" 00025 
00040 enum _rr_flags { 00041 
R_NONE = 0, 00042 
R_ASP = 1, 00044 
R_COMPRESS = 2, 00046 
R_ASPCOMPRESS = 3, 00048 }; 00049 
00057 struct rr_type { 
00064 char name[9]; 00065 
00072 u_int16 type; 00073 
00092 char properties[9]; 00093 
00101 _rr_flags flags; 00102 }; 00103 
00111 extern const int n_rr_types; 00112 
00122 extern const rr_type rr_types[]; 00123 00124  00125 00135 
rr_type *
rrtype_getinfo(u_int16 type); 00136 00145 
rr_type *
rrtype_getinfo(
const char *name); 00146 00155 
char *
rrtype_getname(u_int16 type); 00156 00166 uint16_t 
qtype_getcode(
const char *name); 00167 00179 
bool answers_qtype(uint16_t rrtype, uint16_t qtype); 00180 00190 
bool is_common_rr(uint16_t rrtype); 00191 00205 
void rr_read(u_int16 RRTYPE, 
char*& RDATA, uint16_t &RDLEN, 
message_buff &buff, 
int ix, 
int len); 00206 00218 
void rr_write(u_int16 RRTYPE, 
char *RDATA, uint16_t RDLEN, stl_string &dnsmessage, 
stl_slist(
dom_compr_info) &comprinfo); 00219 00231 stl_string 
rr_tostring(u_int16 RRTYPE, 
const char *RDATA, 
int RDLENGTH); 00232 00251 stl_string 
rr_fromstring(u_int16 RRTYPE, 
const char *data, _domain origin = 
""); 00252 00271 stl_string 
rr_fromstring(u_int16 RRTYPE, 
const char *data, 
domainname origin); 00272 00286 
_domain rr_getbindomain(
const char *RDATA, u_int16 RRTYPE, 
int ix = 0); 00287 00293 
domainname rr_getdomain(
const char *RDATA, u_int16 RRTYPE, 
int ix = 0); 00294 00300 
char *
rr_getbinmail(
const char *RDATA, u_int16 RRTYPE, 
int ix = 0); 00301 00307 
domainname rr_getmail(
const char *RDATA, u_int16 RRTYPE, 
int ix = 0); 00308 00314 
u_int16 rr_getshort(
const char *RDATA, u_int16 RRTYPE, 
int ix = 0); 00315 00321 
u_int32 rr_getlong(
const char *RDATA, u_int16 RRTYPE, 
int ix = 0); 00322 00328 
char *
rr_getip4(
const char *RDATA, u_int16 RRTYPE, 
int ix = 0); 00329 00335 
char *
rr_getip6(
const char *RDATA, u_int16 RRTYPE, 
int ix = 0); 00336 00350 stl_string 
read_entry(
char*& data); 00351 00380 
void read_line(
char *buff, FILE *f, 
int *linenum = NULL, 
int *linenum2 = NULL, 00381 
int buffsz = 1024); 00382 00383 
#endif  00384