00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 00012 00013 00014 00015 00016 00017 00018 00019 00020 00021
#ifndef __POSLIB_DOMAINFN_H 00022
#define __POSLIB_DOMAINFN_H 00023
00024
class domainname; 00025 00026
#include "sysstl.h" 00027
#include "dnsmessage.h" 00028
00047 #define DOM_LEN 255 00048
00055 #define DOMLABEL_LEN 63 00056
00064 class domainname { 00065
public: 00071
domainname(); 00072 00082
domainname(
const char *text,
domainname origin); 00083 00096
domainname(
const char *text,
const _domain origin =
""); 00097 00107
domainname(
message_buff &buff,
int ix); 00108 00119
domainname(
bool is_binary,
const _domain dom); 00120 00127
domainname(
const domainname& nam); 00128 00137
bool operator==(
const domainname& nam); 00138 00147
bool operator!=(
const domainname& nam); 00148 00156
domainname&
operator=(
const domainname& nam); 00157 00166
domainname&
operator=(
const char *buff); 00167 00179
domainname&
operator+=(
const domainname& dom); 00188
domainname&
operator+(
const domainname& dom); 00189 00199
bool operator>=(
const domainname& dom); 00200 00210
bool operator>(
const domainname& dom); 00211 00217
~domainname(); 00218 00226
_domain c_str(); 00227 00236
int len(); 00237 00246 stl_string
tostring(); 00247
00256 #define tocstr() tostring().c_str() 00257
00266
int nlabels(); 00267 00277 stl_string label(
int ix); 00278 00287
domainname from(
int ix); 00288 00298
domainname to(
int labels); 00299 00311 stl_string torelstring(
domainname &root); 00312 00323
int ncommon(
domainname &dom); 00324 00325
private: 00326
char *domain; 00327 }; 00328
00334 typedef char _sdomain[
DOM_LEN]; 00335 00345
void *
memdup(
const void *src,
int len); 00346 00356
int dom_comprlen(
message_buff &buff,
int ix); 00357 00367
_domain dom_uncompress(
message_buff &buff,
int ix); 00368
00374 struct dom_compr_info { 00375
public: 00376
dom_compr_info(
_domain _dom,
int _ix,
int _nl,
int _nul);
00377 _domain dom;
00378 int ix;
00379 int nl;
00380 int nul; 00381 }; 00382 00392
void dom_write(stl_string &ret, _domain dom,
stl_slist(
dom_compr_info)& compr); 00393 00394 00395 00404
_domain domfrom(_domain dom,
int ix); 00405 00415
bool domisparent(_domain parent, _domain child); 00416 00426
int domlen(
const _domain dom); 00427 00436
_domain domdup(
const _domain dom); 00437 00446
bool domlcmp(
const _domain dom1,
const _domain dom2); 00447 00456
bool domcmp(
const _domain dom1,
const _domain dom2); 00457 00466
void domcat(_domain target,
const _domain src); 00467 00477
void domcpy(_domain res,
const _domain src); 00478 00489
void domfromlabel(_domain dom,
const char *label,
int len = -1); 00490 00499 stl_string
dom_tostring(
const _domain dom); 00500 00509
int dom_nlabels(
const _domain dom); 00510 00520 stl_string
dom_label(
const _domain dom,
int label); 00521 00531
const _domain dom_plabel(
const _domain dom,
int label); 00532 00543
int domncommon(
const _domain dom1,
const _domain dom2); 00544 00560
int domccmp(
const _domain _dom1,
const _domain _dom2); 00561 00573
void domto(_domain ret,
const _domain src,
int labels); 00574 00575
#endif