Xc@sddkZddkZddkZddkZdZdZdZdZdZdZ dZ dZ dZ d Z d Zd Zd Zd ZdZdZdZdZdZdZdZdZeZdd.dYZdZdd/dYZdd0dYZdZ dZ!dZ"dZ#dZ$dZ%dZ&dZ'd Z(d!Z)d"Z*d#Z+d$Z,d%Z-d&Z.d'Z/d(Z0d)Z1e2d*joRe3Zd+GHe1e4ei5djoei5dpd,eeZ6ei7d-ndS(1iNiiiiiiii i i i iiii!tDNSQueryHeadercBs2eZdZdZdZdZdZRS(s!HBBHHHHcCsyd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ dS(Ni( tdns_idtdns_rdtdns_tctdns_aat dns_opcodetdns_qrt dns_rcodetdns_ztdns_rat dns_qdcountt dns_ancountt dns_nscountt dns_arcount(tself((s7/usr/lib/python2.6/site-packages/ipapython/dnsclient.pyt__init__4s            c Cstiti|i|id@|id@d>B|id@d>B|id@d>B|i d@d>B|i d@|i d@d>B|i d@d>B|i |i|i|iS(Niiiiii(tstructtpackRtFORMATRRRRRRRRR R R R R (R((s7/usr/lib/python2.6/site-packages/ipapython/dnsclient.pyRCs 7c Cstiti|d|i!\|_}}|_|_|_|_ |d@|_ |d?d@|_ |d?d@|_ |d?d@|_ |d?d@|_|d@|_|d?d@|_|d?d@|_dS(Niiiiiii(RtunpackRRtsizeRR R R R RRRRRRRR (Rtdatatbyte1tbyte2((s7/usr/lib/python2.6/site-packages/ipapython/dnsclient.pyRSsF  cCstitiS(N(RtcalcsizeRR(R((s7/usr/lib/python2.6/site-packages/ipapython/dnsclient.pyR_s(t__name__t __module__RRRRR(((s7/usr/lib/python2.6/site-packages/ipapython/dnsclient.pyR2s    cCst}|i||S(N(RR(Rtheader((s7/usr/lib/python2.6/site-packages/ipapython/dnsclient.pytunpackQueryHeaderbs  t DNSResultcBsJeZdZdZdZdZdZdZdZdZ RS(s!HHIHs!HHcCsCd|_d|_d|_d|_d|_d|_d|_dS(Nti(tdns_nametdns_typet dns_classtdns_ttlt dns_rlengthtNonetrdatatsection(R((s7/usr/lib/python2.6/site-packages/ipapython/dnsclient.pyRjs      cCs>titi|d|i!\|_|_|_|_dS(Ni( RRRRRR R!R"R#(RR((s7/usr/lib/python2.6/site-packages/ipapython/dnsclient.pyRsscCs2titi|d|i!\|_|_dS(Ni(RRRtQFORMATtqsizeR R!(RR((s7/usr/lib/python2.6/site-packages/ipapython/dnsclient.pytqunpackwscCstitiS(N(RRRR(R((s7/usr/lib/python2.6/site-packages/ipapython/dnsclient.pyRzscCstitiS(N(RRRR'(R((s7/usr/lib/python2.6/site-packages/ipapython/dnsclient.pyR(}scCsFy&d|i|i|i|if}Wntj o d}nX|S(Ns.DNSResult::name:%s,type:%d,class:%d,rdata={%s}R(RR R!R%t Exception(Rtresult((s7/usr/lib/python2.6/site-packages/ipapython/dnsclient.pyt__str__s # ( RRRR'RRR)RR(R,(((s7/usr/lib/python2.6/site-packages/ipapython/dnsclient.pyRgs    tDNSRDatacBseZdZdZRS(cCsdS(N((R((s7/usr/lib/python2.6/site-packages/ipapython/dnsclient.pyRsc CsgyGdig}|iiD]\}}|d||fq~}Wntj o d}nX|S(Nt,s%s:%sR(tjoint__dict__t iteritemsR*(Rt_[1]tkeytvalueR%((s7/usr/lib/python2.6/site-packages/ipapython/dnsclient.pyR,s  : (RRRR,(((s7/usr/lib/python2.6/site-packages/ipapython/dnsclient.pyR-s cCsDd}|id}x(|D] }|tt||7}qW|S(NRt.(tsplittchrtlen(tnametouttpart((s7/usr/lib/python2.6/site-packages/ipapython/dnsclient.pytdnsNameToLabels cCst}d|_d|_d|_d|_d|_t|}|pdS|i|}|t|d?7}|t|d@7}|t|d?7}|t|d@7}|S(NiiRii( RRRRRR R<RR7(tquerytqclasstqtypeRtqlabelR:((s7/usr/lib/python2.6/site-packages/ipapython/dnsclient.pytdnsFormatQuerys       c Cs)|pd Sd}|}d}d}yxt|dot|dd@oL|t|dd@d>t|d}|o|d7}nd}q*n||dt|dd!d7}|o|t|dd7}n|t|dd}q*WWntj od SX||||fS( NRiiii?iiR5(RN(RN(R$tordt IndexError(tlabeltbasetupdatetresttoutputtskip((s7/usr/lib/python2.6/site-packages/ipapython/dnsclient.pyt dnsParseLabels,*#!cCst}t|djod|_dSt|dd>t|dd>Bt|dd>Bt|dd>B|_toAd t|dt|dt|dt|dfGHn|S( NiiiiiiiisA = %d.%d.%d.%d.(R-R8taddressR$RBtDEBUG_DNSCLIENT(RRER%((s7/usr/lib/python2.6/site-packages/ipapython/dnsclient.pyt dnsParseAs  MAcCswt}t|djod|_dSttid||_to'ti ti ti d|iGHn|S(Niis!16B( R-R8RKR$tlistRRRLtsockett inet_ntoptAF_INET6R(RRER%((s7/usr/lib/python2.6/site-packages/ipapython/dnsclient.pyt dnsParseAAAAs   cCsat|djodSt|d}t||djodS||d|d|d!fS(NiRi(RN(RN(R8R$RB(Rttlen((s7/usr/lib/python2.6/site-packages/ipapython/dnsclient.pyt dnsParseTexts cCs<t}t||\}|_tod|iGHn|S(NsNS DNAME = "%s".(R-RJtnsdnameRL(RRER%RG((s7/usr/lib/python2.6/site-packages/ipapython/dnsclient.pyt dnsParseNSs  cCs<t}t||\}|_tod|iGHn|S(Ns CNAME = "%s".(R-RJtcnameRL(RRER%RG((s7/usr/lib/python2.6/site-packages/ipapython/dnsclient.pyt dnsParseCNAMEs  cCs*t}d}t||\}|_|idjodSt||\}|_|idjodSt|ti|jodSti||ti| \|_ |_ |_ |_ |_ toXd|iGHd|iGHd|i GHd|i GHd|i GHd|i GHd|i GHn|S( Ns!IIIIIsSOA(mname) = "%s".sSOA(rname) = "%s".sSOA(serial) = %d.sSOA(refresh) = %d.sSOA(retry) = %d.sSOA(expire) = %d.sSOA(minimum) = %d.(R-RJtmnameR$trnameR8RRRtserialtrefreshtretrytexpiretminimumRL(RRER%tformatRG((s7/usr/lib/python2.6/site-packages/ipapython/dnsclient.pyt dnsParseSOAs( =      cCsdS(N(R$(RRE((s7/usr/lib/python2.6/site-packages/ipapython/dnsclient.pyt dnsParseNULLscCsdS(N(R$(RRE((s7/usr/lib/python2.6/site-packages/ipapython/dnsclient.pyt dnsParseWKSscCset}t|\}|_|ot|\}|_ntod|iGHd|iGHn|S(NsHINFO(cpu) = "%s".sHINFO(os) = "%s".(R-RTtcputosRL(RRER%RG((s7/usr/lib/python2.6/site-packages/ipapython/dnsclient.pyt dnsParseHINFOs  cCst}t|djodSt|dd>t|dB|_t|d|\}|_tod|iGHd|iGHn|S(NiiiisMX(exchanger) = "%s".sMX(preference) = %d.(R-R8R$RBt preferenceRJtexchangeRL(RRER%RG((s7/usr/lib/python2.6/site-packages/ipapython/dnsclient.pyt dnsParseMX#s % cCs9t}t|\}|_tod|iGHn|S(Ns TXT = "%s".(R-RTRRL(RRER%RG((s7/usr/lib/python2.6/site-packages/ipapython/dnsclient.pyt dnsParseTXT.s  cCs<t}t||\}|_tod|iGHn|S(Ns PTR = "%s".(R-RJtptrdnameRL(RRER%RG((s7/usr/lib/python2.6/site-packages/ipapython/dnsclient.pyt dnsParsePTR5s  cCst}d}ti|}t||jodSti||| \|_|_|_t |||\}|_ t o4d|i GHd|iGHd|iGHd|iGHn|S(Ns!HHHsSRV(server) = "%s".sSRV(weight) = %d.sSRV(priority) = %d.sSRV(port) = %d.( R-RRR8R$RtprioritytweighttportRJtserverRL(RRER%R`tflenRG((s7/usr/lib/python2.6/site-packages/ipapython/dnsclient.pyt dnsParseSRV<s (   c Cs yt|}Wntij ogSX|idjogS|idjogS||i}g}xt|iD]}|pgSt}t ||\}}|djogSt ||i jogS|i |||i }tod||i|ifGHqzqzWx|itf|itf|itffD]\}}xt|D]}t ||\}}|djogSt} || _|| _t || ijogS| i||| i}to(d|| i| i| i| ifGHnt || ijoto dGHngSh tt6tt6t t!6t"t#6t$t%6t&t'6t(t)6t*t+6t,t-6t.t/6t0t16t2t36} | i| jotod| iGHqn!| | i|| i || _4|| i}|| g7}qbWqIW|S(Niis(Queried for '%s', class = %d, type = %d.s4Answer %d for '%s', class = %d, type = %d, ttl = %d.sAnswer too short.s#Don't know how to parse RR type %d!(5RRterrorRRRtxrangeR RRJR$R8R(R)RLR!R R t DNS_S_ANSWERR tDNS_S_AUTHORITYR tDNS_S_ADDITIONALRR&RR"R#RMtDNS_T_ARVtDNS_T_NSRXt DNS_T_CNAMERat DNS_T_SOARbt DNS_T_NULLRct DNS_T_WKSRlt DNS_T_PTRRft DNS_T_HINFORitDNS_T_MXRjt DNS_T_TXTRRt DNS_T_AAAARrt DNS_T_SRVR%( tresultsRRGtrrlisttitqqRDt rec_countt section_idtrrtfmap((s7/usr/lib/python2.6/site-packages/ipapython/dnsclient.pytdnsParseResultsLs|              cCsCt|||}|pgSti|}|pgSt|S(N(RAtacutiltres_sendR(R=R>R?tqdatatanswer((s7/usr/lib/python2.6/site-packages/ipapython/dnsclient.pyR=st__main__sSending query.sdevserv.devel.redhat.com.i((((8RROtsysRtDNS_C_INtDNS_C_CSt DNS_C_CHAOStDNS_C_HSt DNS_C_ANYRxRyRzR{R|R}R~RRRRRt DNS_T_ANYt DNS_S_QUERYRuRvRwtFalseRLRRRR-R<RARJRMRRRTRVRXRaRbRcRfRiRjRlRrRR=RtTrueR8targvRtexit(((s7/usr/lib/python2.6/site-packages/ipapython/dnsclient.pytsl    0 !             U *