PNG  IHDRX cHRMz&u0`:pQ<bKGD pHYsodtIME MeqIDATxw]Wug^Qd˶ 6`!N:!@xI~)%7%@Bh&`lnjVF29gΨ4E$|>cɚ{gk= %,a KX%,a KX%,a KX%,a KX%,a KX%,a KX%, b` ǟzeאfp]<!SJmɤY޲ڿ,%c ~ع9VH.!Ͳz&QynֺTkRR.BLHi٪:l;@(!MԴ=žI,:o&N'Kù\vRmJ雵֫AWic H@" !: Cé||]k-Ha oݜ:y F())u]aG7*JV@J415p=sZH!=!DRʯvɱh~V\}v/GKY$n]"X"}t@ xS76^[bw4dsce)2dU0 CkMa-U5tvLƀ~mlMwfGE/-]7XAƟ`׮g ewxwC4\[~7@O-Q( a*XGƒ{ ՟}$_y3tĐƤatgvێi|K=uVyrŲlLӪuܿzwk$m87k( `múcE)"@rK( z4$D; 2kW=Xb$V[Ru819קR~qloѱDyįݎ*mxw]y5e4K@ЃI0A D@"BDk_)N\8͜9dz"fK0zɿvM /.:2O{ Nb=M=7>??Zuo32 DLD@D| &+֎C #B8ַ`bOb $D#ͮҪtx]%`ES`Ru[=¾!@Od37LJ0!OIR4m]GZRJu$‡c=%~s@6SKy?CeIh:[vR@Lh | (BhAMy=݃  G"'wzn޺~8ԽSh ~T*A:xR[ܹ?X[uKL_=fDȊ؂p0}7=D$Ekq!/t.*2ʼnDbŞ}DijYaȲ(""6HA;:LzxQ‘(SQQ}*PL*fc\s `/d'QXW, e`#kPGZuŞuO{{wm[&NBTiiI0bukcA9<4@SӊH*؎4U/'2U5.(9JuDfrޱtycU%j(:RUbArLֺN)udA':uGQN"-"Is.*+k@ `Ojs@yU/ H:l;@yyTn}_yw!VkRJ4P)~y#)r,D =ě"Q]ci'%HI4ZL0"MJy 8A{ aN<8D"1#IJi >XjX֔#@>-{vN!8tRݻ^)N_╗FJEk]CT՟ YP:_|H1@ CBk]yKYp|og?*dGvzنzӴzjֺNkC~AbZƷ`.H)=!QͷVTT(| u78y֮}|[8-Vjp%2JPk[}ԉaH8Wpqhwr:vWª<}l77_~{s۴V+RCģ%WRZ\AqHifɤL36: #F:p]Bq/z{0CU6ݳEv_^k7'>sq*+kH%a`0ԣisqにtү04gVgW΂iJiS'3w.w}l6MC2uԯ|>JF5`fV5m`Y**Db1FKNttu]4ccsQNnex/87+}xaUW9y>ͯ骵G{䩓Գ3+vU}~jJ.NFRD7<aJDB1#ҳgSb,+CS?/ VG J?|?,2#M9}B)MiE+G`-wo߫V`fio(}S^4e~V4bHOYb"b#E)dda:'?}׮4繏`{7Z"uny-?ǹ;0MKx{:_pÚmFמ:F " .LFQLG)Q8qN q¯¯3wOvxDb\. BKD9_NN &L:4D{mm o^tֽ:q!ƥ}K+<"m78N< ywsard5+вz~mnG)=}lYݧNj'QJS{S :UYS-952?&O-:W}(!6Mk4+>A>j+i|<<|;ر^߉=HE|V#F)Emm#}/"y GII웻Jі94+v뾧xu~5C95~ūH>c@덉pʃ1/4-A2G%7>m;–Y,cyyaln" ?ƻ!ʪ<{~h~i y.zZB̃/,雋SiC/JFMmBH&&FAbϓO^tubbb_hZ{_QZ-sύodFgO(6]TJA˯#`۶ɟ( %$&+V'~hiYy>922 Wp74Zkq+Ovn錄c>8~GqܲcWꂎz@"1A.}T)uiW4="jJ2W7mU/N0gcqܗOO}?9/wìXžΏ0 >֩(V^Rh32!Hj5`;O28؇2#ݕf3 ?sJd8NJ@7O0 b־?lldщ̡&|9C.8RTWwxWy46ah嘦mh٤&l zCy!PY?: CJyв]dm4ǜҐR޻RլhX{FƯanшQI@x' ao(kUUuxW_Ñ줮[w8 FRJ(8˼)_mQ _!RJhm=!cVmm ?sFOnll6Qk}alY}; "baӌ~M0w,Ggw2W:G/k2%R,_=u`WU R.9T"v,<\Ik޽/2110Ӿxc0gyC&Ny޽JҢrV6N ``یeA16"J³+Rj*;BϜkZPJaÍ<Jyw:NP8/D$ 011z֊Ⱳ3ι֘k1V_"h!JPIΣ'ɜ* aEAd:ݺ>y<}Lp&PlRfTb1]o .2EW\ͮ]38؋rTJsǏP@芎sF\> P^+dYJLbJ C-xϐn> ι$nj,;Ǖa FU *择|h ~izť3ᤓ`K'-f tL7JK+vf2)V'-sFuB4i+m+@My=O҈0"|Yxoj,3]:cо3 $#uŘ%Y"y죯LebqtҢVzq¼X)~>4L׶m~[1_k?kxֺQ`\ |ٛY4Ѯr!)N9{56(iNq}O()Em]=F&u?$HypWUeB\k]JɩSع9 Zqg4ZĊo oMcjZBU]B\TUd34ݝ~:7ڶSUsB0Z3srx 7`:5xcx !qZA!;%͚7&P H<WL!džOb5kF)xor^aujƍ7 Ǡ8/p^(L>ὴ-B,{ۇWzֺ^k]3\EE@7>lYBȝR.oHnXO/}sB|.i@ɥDB4tcm,@ӣgdtJ!lH$_vN166L__'Z)y&kH;:,Y7=J 9cG) V\hjiE;gya~%ks_nC~Er er)muuMg2;֫R)Md) ,¶ 2-wr#F7<-BBn~_(o=KO㭇[Xv eN_SMgSҐ BS헃D%g_N:/pe -wkG*9yYSZS.9cREL !k}<4_Xs#FmҶ:7R$i,fi!~' # !6/S6y@kZkZcX)%5V4P]VGYq%H1!;e1MV<!ϐHO021Dp= HMs~~a)ަu7G^];git!Frl]H/L$=AeUvZE4P\.,xi {-~p?2b#amXAHq)MWǾI_r`S Hz&|{ +ʖ_= (YS(_g0a03M`I&'9vl?MM+m~}*xT۲(fY*V4x@29s{DaY"toGNTO+xCAO~4Ϳ;p`Ѫ:>Ҵ7K 3}+0 387x\)a"/E>qpWB=1 ¨"MP(\xp߫́A3+J] n[ʼnӼaTbZUWb={~2ooKױӰp(CS\S筐R*JغV&&"FA}J>G֐p1ٸbk7 ŘH$JoN <8s^yk_[;gy-;߉DV{c B yce% aJhDȶ 2IdйIB/^n0tNtџdcKj4϶v~- CBcgqx9= PJ) dMsjpYB] GD4RDWX +h{y`,3ꊕ$`zj*N^TP4L:Iz9~6s) Ga:?y*J~?OrMwP\](21sZUD ?ܟQ5Q%ggW6QdO+\@ ̪X'GxN @'4=ˋ+*VwN ne_|(/BDfj5(Dq<*tNt1х!MV.C0 32b#?n0pzj#!38}޴o1KovCJ`8ŗ_"]] rDUy޲@ Ȗ-;xџ'^Y`zEd?0„ DAL18IS]VGq\4o !swV7ˣι%4FѮ~}6)OgS[~Q vcYbL!wG3 7띸*E Pql8=jT\꘿I(z<[6OrR8ºC~ډ]=rNl[g|v TMTղb-o}OrP^Q]<98S¤!k)G(Vkwyqyr޽Nv`N/e p/~NAOk \I:G6]4+K;j$R:Mi #*[AȚT,ʰ,;N{HZTGMoּy) ]%dHء9Պ䠬|<45,\=[bƟ8QXeB3- &dҩ^{>/86bXmZ]]yޚN[(WAHL$YAgDKp=5GHjU&99v簪C0vygln*P)9^͞}lMuiH!̍#DoRBn9l@ xA/_v=ȺT{7Yt2N"4!YN`ae >Q<XMydEB`VU}u]嫇.%e^ánE87Mu\t`cP=AD/G)sI"@MP;)]%fH9'FNsj1pVhY&9=0pfuJ&gޤx+k:!r˭wkl03׼Ku C &ѓYt{.O.zҏ z}/tf_wEp2gvX)GN#I ݭ߽v/ .& и(ZF{e"=V!{zW`, ]+LGz"(UJp|j( #V4, 8B 0 9OkRrlɱl94)'VH9=9W|>PS['G(*I1==C<5"Pg+x'K5EMd؞Af8lG ?D FtoB[je?{k3zQ vZ;%Ɠ,]E>KZ+T/ EJxOZ1i #T<@ I}q9/t'zi(EMqw`mYkU6;[t4DPeckeM;H}_g pMww}k6#H㶏+b8雡Sxp)&C $@'b,fPߑt$RbJ'vznuS ~8='72_`{q纶|Q)Xk}cPz9p7O:'|G~8wx(a 0QCko|0ASD>Ip=4Q, d|F8RcU"/KM opKle M3#i0c%<7׿p&pZq[TR"BpqauIp$ 8~Ĩ!8Սx\ւdT>>Z40ks7 z2IQ}ItԀ<-%S⍤};zIb$I 5K}Q͙D8UguWE$Jh )cu4N tZl+[]M4k8֦Zeq֮M7uIqG 1==tLtR,ƜSrHYt&QP윯Lg' I,3@P'}'R˪e/%-Auv·ñ\> vDJzlӾNv5:|K/Jb6KI9)Zh*ZAi`?S {aiVDԲuy5W7pWeQJk֤#5&V<̺@/GH?^τZL|IJNvI:'P=Ϛt"¨=cud S Q.Ki0 !cJy;LJR;G{BJy޺[^8fK6)=yʊ+(k|&xQ2`L?Ȓ2@Mf 0C`6-%pKpm')c$׻K5[J*U[/#hH!6acB JA _|uMvDyk y)6OPYjœ50VT K}cǻP[ $:]4MEA.y)|B)cf-A?(e|lɉ#P9V)[9t.EiQPDѠ3ϴ;E:+Օ t ȥ~|_N2,ZJLt4! %ա]u {+=p.GhNcŞQI?Nd'yeh n7zi1DB)1S | S#ًZs2|Ɛy$F SxeX{7Vl.Src3E℃Q>b6G ўYCmtկ~=K0f(=LrAS GN'ɹ9<\!a`)֕y[uՍ[09` 9 +57ts6}b4{oqd+J5fa/,97J#6yν99mRWxJyѡyu_TJc`~W>l^q#Ts#2"nD1%fS)FU w{ܯ R{ ˎ󅃏џDsZSQS;LV;7 Od1&1n$ N /.q3~eNɪ]E#oM~}v֯FڦwyZ=<<>Xo稯lfMFV6p02|*=tV!c~]fa5Y^Q_WN|Vs 0ҘދU97OI'N2'8N֭fgg-}V%y]U4 峧p*91#9U kCac_AFңĪy뚇Y_AiuYyTTYЗ-(!JFLt›17uTozc. S;7A&&<ԋ5y;Ro+:' *eYJkWR[@F %SHWP 72k4 qLd'J "zB6{AC0ƁA6U.'F3:Ȅ(9ΜL;D]m8ڥ9}dU "v!;*13Rg^fJyShyy5auA?ɩGHRjo^]׽S)Fm\toy 4WQS@mE#%5ʈfFYDX ~D5Ϡ9tE9So_aU4?Ѽm%&c{n>.KW1Tlb}:j uGi(JgcYj0qn+>) %\!4{LaJso d||u//P_y7iRJ߬nHOy) l+@$($VFIQ9%EeKʈU. ia&FY̒mZ=)+qqoQn >L!qCiDB;Y<%} OgBxB!ØuG)WG9y(Ą{_yesuZmZZey'Wg#C~1Cev@0D $a@˲(.._GimA:uyw֬%;@!JkQVM_Ow:P.s\)ot- ˹"`B,e CRtaEUP<0'}r3[>?G8xU~Nqu;Wm8\RIkբ^5@k+5(By'L&'gBJ3ݶ!/㮻w҅ yqPWUg<e"Qy*167΃sJ\oz]T*UQ<\FԎ`HaNmڜ6DysCask8wP8y9``GJ9lF\G g's Nn͵MLN֪u$| /|7=]O)6s !ĴAKh]q_ap $HH'\1jB^s\|- W1:=6lJBqjY^LsPk""`]w)󭃈,(HC ?䔨Y$Sʣ{4Z+0NvQkhol6C.婧/u]FwiVjZka&%6\F*Ny#8O,22+|Db~d ~Çwc N:FuuCe&oZ(l;@ee-+Wn`44AMK➝2BRՈt7g*1gph9N) *"TF*R(#'88pm=}X]u[i7bEc|\~EMn}P瘊J)K.0i1M6=7'_\kaZ(Th{K*GJyytw"IO-PWJk)..axӝ47"89Cc7ĐBiZx 7m!fy|ϿF9CbȩV 9V-՛^pV̌ɄS#Bv4-@]Vxt-Z, &ֺ*diؠ2^VXbs֔Ìl.jQ]Y[47gj=幽ex)A0ip׳ W2[ᎇhuE^~q흙L} #-b۸oFJ_QP3r6jr+"nfzRJTUqoaۍ /$d8Mx'ݓ= OՃ| )$2mcM*cЙj}f };n YG w0Ia!1Q.oYfr]DyISaP}"dIӗթO67jqR ҊƐƈaɤGG|h;t]䗖oSv|iZqX)oalv;۩meEJ\!8=$4QU4Xo&VEĊ YS^E#d,yX_> ۘ-e\ "Wa6uLĜZi`aD9.% w~mB(02G[6y.773a7 /=o7D)$Z 66 $bY^\CuP. (x'"J60׿Y:Oi;F{w佩b+\Yi`TDWa~|VH)8q/=9!g߆2Y)?ND)%?Ǐ`k/sn:;O299yB=a[Ng 3˲N}vLNy;*?x?~L&=xyӴ~}q{qE*IQ^^ͧvü{Huu=R|>JyUlZV, B~/YF!Y\u_ݼF{_C)LD]m {H 0ihhadd nUkf3oٺCvE\)QJi+֥@tDJkB$1!Đr0XQ|q?d2) Ӣ_}qv-< FŊ߫%roppVBwü~JidY4:}L6M7f٬F "?71<2#?Jyy4뷢<_a7_=Q E=S1И/9{+93֮E{ǂw{))?maÆm(uLE#lïZ  ~d];+]h j?!|$F}*"4(v'8s<ŏUkm7^7no1w2ؗ}TrͿEk>p'8OB7d7R(A 9.*Mi^ͳ; eeUwS+C)uO@ =Sy]` }l8^ZzRXj[^iUɺ$tj))<sbDJfg=Pk_{xaKo1:-uyG0M ԃ\0Lvuy'ȱc2Ji AdyVgVh!{]/&}}ċJ#%d !+87<;qN޼Nفl|1N:8ya  8}k¾+-$4FiZYÔXk*I&'@iI99)HSh4+2G:tGhS^繿 Kتm0 вDk}֚+QT4;sC}rՅE,8CX-e~>G&'9xpW,%Fh,Ry56Y–hW-(v_,? ; qrBk4-V7HQ;ˇ^Gv1JVV%,ik;D_W!))+BoS4QsTM;gt+ndS-~:11Sgv!0qRVh!"Ȋ(̦Yl.]PQWgٳE'`%W1{ndΗBk|Ž7ʒR~,lnoa&:ü$ 3<a[CBݮwt"o\ePJ=Hz"_c^Z.#ˆ*x z̝grY]tdkP*:97YľXyBkD4N.C_[;F9`8& !AMO c `@BA& Ost\-\NX+Xp < !bj3C&QL+*&kAQ=04}cC!9~820G'PC9xa!w&bo_1 Sw"ܱ V )Yl3+ס2KoXOx]"`^WOy :3GO0g;%Yv㐫(R/r (s } u B &FeYZh0y> =2<Ϟc/ -u= c&׭,.0"g"7 6T!vl#sc>{u/Oh Bᾈ)۴74]x7 gMӒ"d]U)}" v4co[ ɡs 5Gg=XR14?5A}D "b{0$L .\4y{_fe:kVS\\O]c^W52LSBDM! C3Dhr̦RtArx4&agaN3Cf<Ԉp4~ B'"1@.b_/xQ} _߃҉/gٓ2Qkqp0շpZ2fԫYz< 4L.Cyυι1t@鎫Fe sYfsF}^ V}N<_`p)alٶ "(XEAVZ<)2},:Ir*#m_YӼ R%a||EƼIJ,,+f"96r/}0jE/)s)cjW#w'Sʯ5<66lj$a~3Kʛy 2:cZ:Yh))+a߭K::N,Q F'qB]={.]h85C9cr=}*rk?vwV렵ٸW Rs%}rNAkDv|uFLBkWY YkX מ|)1!$#3%y?pF<@<Rr0}: }\J [5FRxY<9"SQdE(Q*Qʻ)q1E0B_O24[U'],lOb ]~WjHޏTQ5Syu wq)xnw8~)c 쫬gٲߠ H% k5dƝk> kEj,0% b"vi2Wس_CuK)K{n|>t{P1򨾜j>'kEkƗBg*H%'_aY6Bn!TL&ɌOb{c`'d^{t\i^[uɐ[}q0lM˕G:‚4kb祔c^:?bpg… +37stH:0}en6x˟%/<]BL&* 5&fK9Mq)/iyqtA%kUe[ڛKN]Ě^,"`/ s[EQQm?|XJ߅92m]G.E΃ח U*Cn.j_)Tѧj̿30ڇ!A0=͜ar I3$C^-9#|pk!)?7.x9 @OO;WƝZBFU keZ75F6Tc6"ZȚs2y/1 ʵ:u4xa`C>6Rb/Yм)^=+~uRd`/|_8xbB0?Ft||Z\##|K 0>>zxv8۴吅q 8ĥ)"6>~\8:qM}#͚'ĉ#p\׶ l#bA?)|g g9|8jP(cr,BwV (WliVxxᡁ@0Okn;ɥh$_ckCgriv}>=wGzβ KkBɛ[˪ !J)h&k2%07δt}!d<9;I&0wV/ v 0<H}L&8ob%Hi|޶o&h1L|u֦y~󛱢8fٲUsւ)0oiFx2}X[zVYr_;N(w]_4B@OanC?gĦx>мgx>ΛToZoOMp>40>V Oy V9iq!4 LN,ˢu{jsz]|"R޻&'ƚ{53ўFu(<٪9:΋]B;)B>1::8;~)Yt|0(pw2N%&X,URBK)3\zz&}ax4;ǟ(tLNg{N|Ǽ\G#C9g$^\}p?556]/RP.90 k,U8/u776s ʪ_01چ|\N 0VV*3H鴃J7iI!wG_^ypl}r*jɤSR 5QN@ iZ#1ٰy;_\3\BQQ x:WJv츟ٯ$"@6 S#qe딇(/P( Dy~TOϻ<4:-+F`0||;Xl-"uw$Цi󼕝mKʩorz"mϺ$F:~E'ҐvD\y?Rr8_He@ e~O,T.(ފR*cY^m|cVR[8 JҡSm!ΆԨb)RHG{?MpqrmN>߶Y)\p,d#xۆWY*,l6]v0h15M˙MS8+EdI='LBJIH7_9{Caз*Lq,dt >+~ّeʏ?xԕ4bBAŚjﵫ!'\Ը$WNvKO}ӽmSşذqsOy?\[,d@'73'j%kOe`1.g2"e =YIzS2|zŐƄa\U,dP;jhhhaxǶ?КZ՚.q SE+XrbOu%\GتX(H,N^~]JyEZQKceTQ]VGYqnah;y$cQahT&QPZ*iZ8UQQM.qo/T\7X"u?Mttl2Xq(IoW{R^ ux*SYJ! 4S.Jy~ BROS[V|žKNɛP(L6V^|cR7i7nZW1Fd@ Ara{詑|(T*dN]Ko?s=@ |_EvF]׍kR)eBJc" MUUbY6`~V޴dJKß&~'d3i WWWWWW
Current Directory: /usr/lib64/python3.6/site-packages
Viewing File: /usr/lib64/python3.6/site-packages/unbound.py
# This file was automatically generated by SWIG (http://www.swig.org). # Version 3.0.12 # # Do not make changes to this file unless you know what you are doing--modify # the SWIG interface file instead. from sys import version_info as _swig_python_version_info if _swig_python_version_info >= (2, 7, 0): def swig_import_helper(): import importlib pkg = __name__.rpartition('.')[0] mname = '.'.join((pkg, '_unbound')).lstrip('.') try: return importlib.import_module(mname) except ImportError: return importlib.import_module('_unbound') _unbound = swig_import_helper() del swig_import_helper elif _swig_python_version_info >= (2, 6, 0): def swig_import_helper(): from os.path import dirname import imp fp = None try: fp, pathname, description = imp.find_module('_unbound', [dirname(__file__)]) except ImportError: import _unbound return _unbound try: _mod = imp.load_module('_unbound', fp, pathname, description) finally: if fp is not None: fp.close() return _mod _unbound = swig_import_helper() del swig_import_helper else: import _unbound del _swig_python_version_info try: _swig_property = property except NameError: pass # Python < 2.2 doesn't have 'property'. try: import builtins as __builtin__ except ImportError: import __builtin__ def _swig_setattr_nondynamic(self, class_type, name, value, static=1): if (name == "thisown"): return self.this.own(value) if (name == "this"): if type(value).__name__ == 'SwigPyObject': self.__dict__[name] = value return method = class_type.__swig_setmethods__.get(name, None) if method: return method(self, value) if (not static): if _newclass: object.__setattr__(self, name, value) else: self.__dict__[name] = value else: raise AttributeError("You cannot add attributes to %s" % self) def _swig_setattr(self, class_type, name, value): return _swig_setattr_nondynamic(self, class_type, name, value, 0) def _swig_getattr(self, class_type, name): if (name == "thisown"): return self.this.own() method = class_type.__swig_getmethods__.get(name, None) if method: return method(self) raise AttributeError("'%s' object has no attribute '%s'" % (class_type.__name__, name)) def _swig_repr(self): try: strthis = "proxy of " + self.this.__repr__() except __builtin__.Exception: strthis = "" return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,) try: _object = object _newclass = 1 except __builtin__.Exception: class _object: pass _newclass = 0 import encodings.idna try: import builtins except ImportError: import __builtin__ as builtins # Ensure compatibility with older python versions if 'bytes' not in vars(): bytes = str def ord(s): if isinstance(s, int): return s return builtins.ord(s) def ub_ctx_free_dbg(c): return _unbound.ub_ctx_free_dbg(c) ub_ctx_free_dbg = _unbound.ub_ctx_free_dbg RR_TYPE_A = _unbound.RR_TYPE_A RR_TYPE_NS = _unbound.RR_TYPE_NS RR_TYPE_MD = _unbound.RR_TYPE_MD RR_TYPE_MF = _unbound.RR_TYPE_MF RR_TYPE_CNAME = _unbound.RR_TYPE_CNAME RR_TYPE_SOA = _unbound.RR_TYPE_SOA RR_TYPE_MB = _unbound.RR_TYPE_MB RR_TYPE_MG = _unbound.RR_TYPE_MG RR_TYPE_MR = _unbound.RR_TYPE_MR RR_TYPE_NULL = _unbound.RR_TYPE_NULL RR_TYPE_WKS = _unbound.RR_TYPE_WKS RR_TYPE_PTR = _unbound.RR_TYPE_PTR RR_TYPE_HINFO = _unbound.RR_TYPE_HINFO RR_TYPE_MINFO = _unbound.RR_TYPE_MINFO RR_TYPE_MX = _unbound.RR_TYPE_MX RR_TYPE_TXT = _unbound.RR_TYPE_TXT RR_TYPE_RP = _unbound.RR_TYPE_RP RR_TYPE_AFSDB = _unbound.RR_TYPE_AFSDB RR_TYPE_X25 = _unbound.RR_TYPE_X25 RR_TYPE_ISDN = _unbound.RR_TYPE_ISDN RR_TYPE_RT = _unbound.RR_TYPE_RT RR_TYPE_NSAP = _unbound.RR_TYPE_NSAP RR_TYPE_NSAP_PTR = _unbound.RR_TYPE_NSAP_PTR RR_TYPE_SIG = _unbound.RR_TYPE_SIG RR_TYPE_KEY = _unbound.RR_TYPE_KEY RR_TYPE_PX = _unbound.RR_TYPE_PX RR_TYPE_GPOS = _unbound.RR_TYPE_GPOS RR_TYPE_AAAA = _unbound.RR_TYPE_AAAA RR_TYPE_LOC = _unbound.RR_TYPE_LOC RR_TYPE_NXT = _unbound.RR_TYPE_NXT RR_TYPE_EID = _unbound.RR_TYPE_EID RR_TYPE_NIMLOC = _unbound.RR_TYPE_NIMLOC RR_TYPE_SRV = _unbound.RR_TYPE_SRV RR_TYPE_ATMA = _unbound.RR_TYPE_ATMA RR_TYPE_NAPTR = _unbound.RR_TYPE_NAPTR RR_TYPE_KX = _unbound.RR_TYPE_KX RR_TYPE_CERT = _unbound.RR_TYPE_CERT RR_TYPE_A6 = _unbound.RR_TYPE_A6 RR_TYPE_DNAME = _unbound.RR_TYPE_DNAME RR_TYPE_SINK = _unbound.RR_TYPE_SINK RR_TYPE_OPT = _unbound.RR_TYPE_OPT RR_TYPE_APL = _unbound.RR_TYPE_APL RR_TYPE_DS = _unbound.RR_TYPE_DS RR_TYPE_SSHFP = _unbound.RR_TYPE_SSHFP RR_TYPE_IPSECKEY = _unbound.RR_TYPE_IPSECKEY RR_TYPE_RRSIG = _unbound.RR_TYPE_RRSIG RR_TYPE_NSEC = _unbound.RR_TYPE_NSEC RR_TYPE_DNSKEY = _unbound.RR_TYPE_DNSKEY RR_TYPE_DHCID = _unbound.RR_TYPE_DHCID RR_TYPE_NSEC3 = _unbound.RR_TYPE_NSEC3 RR_TYPE_NSEC3PARAMS = _unbound.RR_TYPE_NSEC3PARAMS RR_TYPE_UINFO = _unbound.RR_TYPE_UINFO RR_TYPE_UID = _unbound.RR_TYPE_UID RR_TYPE_GID = _unbound.RR_TYPE_GID RR_TYPE_UNSPEC = _unbound.RR_TYPE_UNSPEC RR_TYPE_TSIG = _unbound.RR_TYPE_TSIG RR_TYPE_IXFR = _unbound.RR_TYPE_IXFR RR_TYPE_AXFR = _unbound.RR_TYPE_AXFR RR_TYPE_MAILB = _unbound.RR_TYPE_MAILB RR_TYPE_MAILA = _unbound.RR_TYPE_MAILA RR_TYPE_ANY = _unbound.RR_TYPE_ANY RR_TYPE_CAA = _unbound.RR_TYPE_CAA RR_TYPE_DLV = _unbound.RR_TYPE_DLV RR_CLASS_IN = _unbound.RR_CLASS_IN RR_CLASS_CH = _unbound.RR_CLASS_CH RR_CLASS_HS = _unbound.RR_CLASS_HS RR_CLASS_NONE = _unbound.RR_CLASS_NONE RR_CLASS_ANY = _unbound.RR_CLASS_ANY def ub_resolve_free_dbg(r): return _unbound.ub_resolve_free_dbg(r) ub_resolve_free_dbg = _unbound.ub_resolve_free_dbg RCODE_NOERROR = _unbound.RCODE_NOERROR RCODE_FORMERR = _unbound.RCODE_FORMERR RCODE_SERVFAIL = _unbound.RCODE_SERVFAIL RCODE_NXDOMAIN = _unbound.RCODE_NXDOMAIN RCODE_NOTIMPL = _unbound.RCODE_NOTIMPL RCODE_REFUSED = _unbound.RCODE_REFUSED RCODE_YXDOMAIN = _unbound.RCODE_YXDOMAIN RCODE_YXRRSET = _unbound.RCODE_YXRRSET RCODE_NXRRSET = _unbound.RCODE_NXRRSET RCODE_NOTAUTH = _unbound.RCODE_NOTAUTH RCODE_NOTZONE = _unbound.RCODE_NOTZONE class ub_data: """Class which makes the resolution results accessible""" def __init__(self, data): """Creates ub_data class :param data: a list of the result data in RAW format """ if data == None: raise Exception("ub_data init: No data") self.data = data def __str__(self): """Represents data as string""" return ';'.join([' '.join(map(lambda x:"%02X" % ord(x),a)) for a in self.data]) @staticmethod def dname2str(s, ofs=0, maxlen=0): """Parses DNAME and produces a list of labels :param ofs: where the conversion should start to parse data :param maxlen: maximum length (0 means parse to the end) :returns: list of labels (string) """ if not s: return [] res = [] slen = len(s) if maxlen > 0: slen = min(slen, maxlen) idx = ofs while (idx < slen): complen = ord(s[idx]) # In python 3.x `str()` converts the string to unicode which is the expected text string type res.append(str(s[idx+1:idx+1+complen].decode())) idx += complen + 1 return res def as_raw_data(self): """Returns a list of RAW strings""" return self.data raw = property(as_raw_data, doc="Returns RAW data (a list of binary encoded strings). See :meth:`as_raw_data`") def as_mx_list(self): """Represents data as a list of MX records (query for RR_TYPE_MX) :returns: list of tuples (priority, dname) """ return [(256*ord(rdf[0])+ord(rdf[1]),'.'.join([a for a in self.dname2str(rdf,2)])) for rdf in self.data] mx_list = property(as_mx_list, doc="Returns a list of tuples containing priority and domain names. See :meth:`as_mx_list`") def as_idn_mx_list(self): """Represents data as a list of MX records (query for RR_TYPE_MX) :returns: list of tuples (priority, unicode dname) """ return [(256*ord(rdf[0])+ord(rdf[1]),'.'.join([encodings.idna.ToUnicode(a) for a in self.dname2str(rdf,2)])) for rdf in self.data] mx_list_idn = property(as_idn_mx_list, doc="Returns a list of tuples containing priority and IDN domain names. See :meth:`as_idn_mx_list`") def as_address_list(self): """Represents data as a list of IP addresses (query for RR_TYPE_PTR) :returns: list of strings """ return ['.'.join(map(lambda x:str(ord(x)),a)) for a in self.data] address_list = property(as_address_list, doc="Returns a list of IP addresses. See :meth:`as_address_list`") def as_domain_list(self): """Represents data as a list of domain names (query for RR_TYPE_A) :returns: list of strings """ return map(lambda x:'.'.join(self.dname2str(x)), self.data) domain_list = property(as_domain_list, doc="Returns a list of domain names. See :meth:`as_domain_list`") def as_idn_domain_list(self): """Represents data as a list of unicode domain names (query for RR_TYPE_A) :returns: list of strings """ return map(lambda x: '.'.join([encodings.idna.ToUnicode(a) for a in self.dname2str(x)]), self.data) domain_list_idn = property(as_idn_domain_list, doc="Returns a list of IDN domain names. See :meth:`as_idn_domain_list`") UNBOUND_VERSION_MAJOR = _unbound.UNBOUND_VERSION_MAJOR UNBOUND_VERSION_MINOR = _unbound.UNBOUND_VERSION_MINOR UNBOUND_VERSION_MICRO = _unbound.UNBOUND_VERSION_MICRO UNBOUND_VERSION_MAJOR_REAL = _unbound.UNBOUND_VERSION_MAJOR_REAL UNBOUND_VERSION_MINOR_REAL = _unbound.UNBOUND_VERSION_MINOR_REAL UNBOUND_VERSION_MICRO_REAL = _unbound.UNBOUND_VERSION_MICRO_REAL class ub_result(_object): """The validation and resolution results.""" __swig_setmethods__ = {} __setattr__ = lambda self, name, value: _swig_setattr(self, ub_result, name, value) __swig_getmethods__ = {} __getattr__ = lambda self, name: _swig_getattr(self, ub_result, name) def __init__(self, *args, **kwargs): raise AttributeError("No constructor defined") __repr__ = _swig_repr __swig_setmethods__["qname"] = _unbound.ub_result_qname_set __swig_getmethods__["qname"] = _unbound.ub_result_qname_get if _newclass: qname = _swig_property(_unbound.ub_result_qname_get, _unbound.ub_result_qname_set) __swig_setmethods__["qtype"] = _unbound.ub_result_qtype_set __swig_getmethods__["qtype"] = _unbound.ub_result_qtype_get if _newclass: qtype = _swig_property(_unbound.ub_result_qtype_get, _unbound.ub_result_qtype_set) __swig_setmethods__["qclass"] = _unbound.ub_result_qclass_set __swig_getmethods__["qclass"] = _unbound.ub_result_qclass_get if _newclass: qclass = _swig_property(_unbound.ub_result_qclass_get, _unbound.ub_result_qclass_set) __swig_setmethods__["_data"] = _unbound.ub_result__data_set __swig_getmethods__["_data"] = _unbound.ub_result__data_get if _newclass: _data = _swig_property(_unbound.ub_result__data_get, _unbound.ub_result__data_set) __swig_setmethods__["len"] = _unbound.ub_result_len_set __swig_getmethods__["len"] = _unbound.ub_result_len_get if _newclass: len = _swig_property(_unbound.ub_result_len_get, _unbound.ub_result_len_set) __swig_setmethods__["canonname"] = _unbound.ub_result_canonname_set __swig_getmethods__["canonname"] = _unbound.ub_result_canonname_get if _newclass: canonname = _swig_property(_unbound.ub_result_canonname_get, _unbound.ub_result_canonname_set) __swig_setmethods__["rcode"] = _unbound.ub_result_rcode_set __swig_getmethods__["rcode"] = _unbound.ub_result_rcode_get if _newclass: rcode = _swig_property(_unbound.ub_result_rcode_get, _unbound.ub_result_rcode_set) __swig_setmethods__["answer_packet"] = _unbound.ub_result_answer_packet_set __swig_getmethods__["answer_packet"] = _unbound.ub_result_answer_packet_get if _newclass: answer_packet = _swig_property(_unbound.ub_result_answer_packet_get, _unbound.ub_result_answer_packet_set) __swig_setmethods__["answer_len"] = _unbound.ub_result_answer_len_set __swig_getmethods__["answer_len"] = _unbound.ub_result_answer_len_get if _newclass: answer_len = _swig_property(_unbound.ub_result_answer_len_get, _unbound.ub_result_answer_len_set) __swig_setmethods__["havedata"] = _unbound.ub_result_havedata_set __swig_getmethods__["havedata"] = _unbound.ub_result_havedata_get if _newclass: havedata = _swig_property(_unbound.ub_result_havedata_get, _unbound.ub_result_havedata_set) __swig_setmethods__["nxdomain"] = _unbound.ub_result_nxdomain_set __swig_getmethods__["nxdomain"] = _unbound.ub_result_nxdomain_get if _newclass: nxdomain = _swig_property(_unbound.ub_result_nxdomain_get, _unbound.ub_result_nxdomain_set) __swig_setmethods__["secure"] = _unbound.ub_result_secure_set __swig_getmethods__["secure"] = _unbound.ub_result_secure_get if _newclass: secure = _swig_property(_unbound.ub_result_secure_get, _unbound.ub_result_secure_set) __swig_setmethods__["bogus"] = _unbound.ub_result_bogus_set __swig_getmethods__["bogus"] = _unbound.ub_result_bogus_get if _newclass: bogus = _swig_property(_unbound.ub_result_bogus_get, _unbound.ub_result_bogus_set) __swig_setmethods__["why_bogus"] = _unbound.ub_result_why_bogus_set __swig_getmethods__["why_bogus"] = _unbound.ub_result_why_bogus_get if _newclass: why_bogus = _swig_property(_unbound.ub_result_why_bogus_get, _unbound.ub_result_why_bogus_set) __swig_setmethods__["ttl"] = _unbound.ub_result_ttl_set __swig_getmethods__["ttl"] = _unbound.ub_result_ttl_get if _newclass: ttl = _swig_property(_unbound.ub_result_ttl_get, _unbound.ub_result_ttl_set) __swig_setmethods__["was_ratelimited"] = _unbound.ub_result_was_ratelimited_set __swig_getmethods__["was_ratelimited"] = _unbound.ub_result_was_ratelimited_get if _newclass: was_ratelimited = _swig_property(_unbound.ub_result_was_ratelimited_get, _unbound.ub_result_was_ratelimited_set) def _ub_result_data(self, result): return _unbound.ub_result__ub_result_data(self, result) def _packet(self): return _unbound.ub_result__packet(self) def __init__(self): raise Exception("This class can't be created directly.") #__swig_destroy__ = _unbound.ub_resolve_free_dbg __swig_destroy__ = _unbound._ub_resolve_free #havedata = property(_unbound.ub_result_havedata_get, _unbound.ub_result_havedata_set, "Havedata property") rcode2str = {RCODE_NOERROR:'no error', RCODE_FORMERR:'form error', RCODE_SERVFAIL:'serv fail', RCODE_NXDOMAIN:'nx domain', RCODE_NOTIMPL:'not implemented', RCODE_REFUSED:'refused', RCODE_YXDOMAIN:'yxdomain', RCODE_YXRRSET:'yxrrset', RCODE_NXRRSET:'nxrrset', RCODE_NOTAUTH:'not auth', RCODE_NOTZONE:'not zone'} def _get_rcode_str(self): """Returns rcode in display representation form :returns: string """ return self.rcode2str[self.rcode] rcode_str = property(_get_rcode_str) def _get_raw_data(self): """Result data, a list of network order DNS rdata items. Data are represented as a list of strings. To decode RAW data to the list of IP addresses use :attr:`data` attribute which returns an :class:`ub_data` instance containing conversion function. """ return self._ub_result_data(self) rawdata = property(_get_raw_data, doc="Returns raw data, a list of rdata items. To decode RAW data use the :attr:`data` attribute which returns an instance of :class:`ub_data` containing the conversion functions.") def _get_data(self): if not self.havedata: return None return ub_data(self._ub_result_data(self)) packet = property(_packet) data = property(_get_data, doc="Returns :class:`ub_data` instance containing various decoding functions or None") ub_result_swigregister = _unbound.ub_result_swigregister ub_result_swigregister(ub_result) UB_NOERROR = _unbound.UB_NOERROR UB_SOCKET = _unbound.UB_SOCKET UB_NOMEM = _unbound.UB_NOMEM UB_SYNTAX = _unbound.UB_SYNTAX UB_SERVFAIL = _unbound.UB_SERVFAIL UB_FORKFAIL = _unbound.UB_FORKFAIL UB_AFTERFINAL = _unbound.UB_AFTERFINAL UB_INITFAIL = _unbound.UB_INITFAIL UB_PIPE = _unbound.UB_PIPE UB_READFILE = _unbound.UB_READFILE UB_NOID = _unbound.UB_NOID def ub_ctx_create(): return _unbound.ub_ctx_create() ub_ctx_create = _unbound.ub_ctx_create def _ub_ctx_delete(ctx): return _unbound._ub_ctx_delete(ctx) _ub_ctx_delete = _unbound._ub_ctx_delete def ub_ctx_set_option(ctx, opt, val): return _unbound.ub_ctx_set_option(ctx, opt, val) ub_ctx_set_option = _unbound.ub_ctx_set_option def ub_ctx_get_option(ctx, opt, str): return _unbound.ub_ctx_get_option(ctx, opt, str) ub_ctx_get_option = _unbound.ub_ctx_get_option def ub_ctx_config(ctx, fname): return _unbound.ub_ctx_config(ctx, fname) ub_ctx_config = _unbound.ub_ctx_config def ub_ctx_set_fwd(ctx, addr): return _unbound.ub_ctx_set_fwd(ctx, addr) ub_ctx_set_fwd = _unbound.ub_ctx_set_fwd def ub_ctx_set_tls(ctx, tls): return _unbound.ub_ctx_set_tls(ctx, tls) ub_ctx_set_tls = _unbound.ub_ctx_set_tls def ub_ctx_set_stub(ctx, zone, addr, isprime): return _unbound.ub_ctx_set_stub(ctx, zone, addr, isprime) ub_ctx_set_stub = _unbound.ub_ctx_set_stub def ub_ctx_resolvconf(ctx, fname): return _unbound.ub_ctx_resolvconf(ctx, fname) ub_ctx_resolvconf = _unbound.ub_ctx_resolvconf def ub_ctx_hosts(ctx, fname): return _unbound.ub_ctx_hosts(ctx, fname) ub_ctx_hosts = _unbound.ub_ctx_hosts def ub_ctx_add_ta(ctx, ta): return _unbound.ub_ctx_add_ta(ctx, ta) ub_ctx_add_ta = _unbound.ub_ctx_add_ta def ub_ctx_add_ta_file(ctx, fname): return _unbound.ub_ctx_add_ta_file(ctx, fname) ub_ctx_add_ta_file = _unbound.ub_ctx_add_ta_file def ub_ctx_add_ta_autr(ctx, fname): return _unbound.ub_ctx_add_ta_autr(ctx, fname) ub_ctx_add_ta_autr = _unbound.ub_ctx_add_ta_autr def ub_ctx_trustedkeys(ctx, fname): return _unbound.ub_ctx_trustedkeys(ctx, fname) ub_ctx_trustedkeys = _unbound.ub_ctx_trustedkeys def ub_ctx_debuglevel(ctx, d): return _unbound.ub_ctx_debuglevel(ctx, d) ub_ctx_debuglevel = _unbound.ub_ctx_debuglevel def ub_ctx_async(ctx, dothread): return _unbound.ub_ctx_async(ctx, dothread) ub_ctx_async = _unbound.ub_ctx_async def ub_poll(ctx): return _unbound.ub_poll(ctx) ub_poll = _unbound.ub_poll def ub_wait(ctx): return _unbound.ub_wait(ctx) ub_wait = _unbound.ub_wait def ub_fd(ctx): return _unbound.ub_fd(ctx) ub_fd = _unbound.ub_fd def ub_process(ctx): return _unbound.ub_process(ctx) ub_process = _unbound.ub_process def ub_resolve(ctx, name, rrtype, rrclass): return _unbound.ub_resolve(ctx, name, rrtype, rrclass) ub_resolve = _unbound.ub_resolve def ub_resolve_async(ctx, name, rrtype, rrclass, mydata, callback, async_id): return _unbound.ub_resolve_async(ctx, name, rrtype, rrclass, mydata, callback, async_id) ub_resolve_async = _unbound.ub_resolve_async def ub_cancel(ctx, async_id): return _unbound.ub_cancel(ctx, async_id) ub_cancel = _unbound.ub_cancel def _ub_resolve_free(result): return _unbound._ub_resolve_free(result) _ub_resolve_free = _unbound._ub_resolve_free def ub_strerror(err): return _unbound.ub_strerror(err) ub_strerror = _unbound.ub_strerror def ub_ctx_print_local_zones(ctx): return _unbound.ub_ctx_print_local_zones(ctx) ub_ctx_print_local_zones = _unbound.ub_ctx_print_local_zones def ub_ctx_zone_add(ctx, zone_name, zone_type): return _unbound.ub_ctx_zone_add(ctx, zone_name, zone_type) ub_ctx_zone_add = _unbound.ub_ctx_zone_add def ub_ctx_zone_remove(ctx, zone_name): return _unbound.ub_ctx_zone_remove(ctx, zone_name) ub_ctx_zone_remove = _unbound.ub_ctx_zone_remove def ub_ctx_data_add(ctx, data): return _unbound.ub_ctx_data_add(ctx, data) ub_ctx_data_add = _unbound.ub_ctx_data_add def ub_ctx_data_remove(ctx, data): return _unbound.ub_ctx_data_remove(ctx, data) ub_ctx_data_remove = _unbound.ub_ctx_data_remove def ub_version(): return _unbound.ub_version() ub_version = _unbound.ub_version class ub_shm_stat_info(_object): __swig_setmethods__ = {} __setattr__ = lambda self, name, value: _swig_setattr(self, ub_shm_stat_info, name, value) __swig_getmethods__ = {} __getattr__ = lambda self, name: _swig_getattr(self, ub_shm_stat_info, name) __repr__ = _swig_repr __swig_setmethods__["num_threads"] = _unbound.ub_shm_stat_info_num_threads_set __swig_getmethods__["num_threads"] = _unbound.ub_shm_stat_info_num_threads_get if _newclass: num_threads = _swig_property(_unbound.ub_shm_stat_info_num_threads_get, _unbound.ub_shm_stat_info_num_threads_set) __swig_getmethods__["time"] = _unbound.ub_shm_stat_info_time_get if _newclass: time = _swig_property(_unbound.ub_shm_stat_info_time_get) __swig_getmethods__["mem"] = _unbound.ub_shm_stat_info_mem_get if _newclass: mem = _swig_property(_unbound.ub_shm_stat_info_mem_get) def __init__(self): this = _unbound.new_ub_shm_stat_info() try: self.this.append(this) except __builtin__.Exception: self.this = this __swig_destroy__ = _unbound.delete_ub_shm_stat_info __del__ = lambda self: None ub_shm_stat_info_swigregister = _unbound.ub_shm_stat_info_swigregister ub_shm_stat_info_swigregister(ub_shm_stat_info) class ub_shm_stat_info_mem(_object): __swig_setmethods__ = {} __setattr__ = lambda self, name, value: _swig_setattr(self, ub_shm_stat_info_mem, name, value) __swig_getmethods__ = {} __getattr__ = lambda self, name: _swig_getattr(self, ub_shm_stat_info_mem, name) __repr__ = _swig_repr __swig_setmethods__["msg"] = _unbound.ub_shm_stat_info_mem_msg_set __swig_getmethods__["msg"] = _unbound.ub_shm_stat_info_mem_msg_get if _newclass: msg = _swig_property(_unbound.ub_shm_stat_info_mem_msg_get, _unbound.ub_shm_stat_info_mem_msg_set) __swig_setmethods__["rrset"] = _unbound.ub_shm_stat_info_mem_rrset_set __swig_getmethods__["rrset"] = _unbound.ub_shm_stat_info_mem_rrset_get if _newclass: rrset = _swig_property(_unbound.ub_shm_stat_info_mem_rrset_get, _unbound.ub_shm_stat_info_mem_rrset_set) __swig_setmethods__["val"] = _unbound.ub_shm_stat_info_mem_val_set __swig_getmethods__["val"] = _unbound.ub_shm_stat_info_mem_val_get if _newclass: val = _swig_property(_unbound.ub_shm_stat_info_mem_val_get, _unbound.ub_shm_stat_info_mem_val_set) __swig_setmethods__["iter"] = _unbound.ub_shm_stat_info_mem_iter_set __swig_getmethods__["iter"] = _unbound.ub_shm_stat_info_mem_iter_get if _newclass: iter = _swig_property(_unbound.ub_shm_stat_info_mem_iter_get, _unbound.ub_shm_stat_info_mem_iter_set) __swig_setmethods__["subnet"] = _unbound.ub_shm_stat_info_mem_subnet_set __swig_getmethods__["subnet"] = _unbound.ub_shm_stat_info_mem_subnet_get if _newclass: subnet = _swig_property(_unbound.ub_shm_stat_info_mem_subnet_get, _unbound.ub_shm_stat_info_mem_subnet_set) __swig_setmethods__["ipsecmod"] = _unbound.ub_shm_stat_info_mem_ipsecmod_set __swig_getmethods__["ipsecmod"] = _unbound.ub_shm_stat_info_mem_ipsecmod_get if _newclass: ipsecmod = _swig_property(_unbound.ub_shm_stat_info_mem_ipsecmod_get, _unbound.ub_shm_stat_info_mem_ipsecmod_set) __swig_setmethods__["respip"] = _unbound.ub_shm_stat_info_mem_respip_set __swig_getmethods__["respip"] = _unbound.ub_shm_stat_info_mem_respip_get if _newclass: respip = _swig_property(_unbound.ub_shm_stat_info_mem_respip_get, _unbound.ub_shm_stat_info_mem_respip_set) __swig_setmethods__["dnscrypt_shared_secret"] = _unbound.ub_shm_stat_info_mem_dnscrypt_shared_secret_set __swig_getmethods__["dnscrypt_shared_secret"] = _unbound.ub_shm_stat_info_mem_dnscrypt_shared_secret_get if _newclass: dnscrypt_shared_secret = _swig_property(_unbound.ub_shm_stat_info_mem_dnscrypt_shared_secret_get, _unbound.ub_shm_stat_info_mem_dnscrypt_shared_secret_set) __swig_setmethods__["dnscrypt_nonce"] = _unbound.ub_shm_stat_info_mem_dnscrypt_nonce_set __swig_getmethods__["dnscrypt_nonce"] = _unbound.ub_shm_stat_info_mem_dnscrypt_nonce_get if _newclass: dnscrypt_nonce = _swig_property(_unbound.ub_shm_stat_info_mem_dnscrypt_nonce_get, _unbound.ub_shm_stat_info_mem_dnscrypt_nonce_set) __swig_setmethods__["dynlib"] = _unbound.ub_shm_stat_info_mem_dynlib_set __swig_getmethods__["dynlib"] = _unbound.ub_shm_stat_info_mem_dynlib_get if _newclass: dynlib = _swig_property(_unbound.ub_shm_stat_info_mem_dynlib_get, _unbound.ub_shm_stat_info_mem_dynlib_set) def __init__(self): this = _unbound.new_ub_shm_stat_info_mem() try: self.this.append(this) except __builtin__.Exception: self.this = this __swig_destroy__ = _unbound.delete_ub_shm_stat_info_mem __del__ = lambda self: None ub_shm_stat_info_mem_swigregister = _unbound.ub_shm_stat_info_mem_swigregister ub_shm_stat_info_mem_swigregister(ub_shm_stat_info_mem) class ub_shm_stat_info_time(_object): __swig_setmethods__ = {} __setattr__ = lambda self, name, value: _swig_setattr(self, ub_shm_stat_info_time, name, value) __swig_getmethods__ = {} __getattr__ = lambda self, name: _swig_getattr(self, ub_shm_stat_info_time, name) __repr__ = _swig_repr __swig_setmethods__["now_sec"] = _unbound.ub_shm_stat_info_time_now_sec_set __swig_getmethods__["now_sec"] = _unbound.ub_shm_stat_info_time_now_sec_get if _newclass: now_sec = _swig_property(_unbound.ub_shm_stat_info_time_now_sec_get, _unbound.ub_shm_stat_info_time_now_sec_set) __swig_setmethods__["now_usec"] = _unbound.ub_shm_stat_info_time_now_usec_set __swig_getmethods__["now_usec"] = _unbound.ub_shm_stat_info_time_now_usec_get if _newclass: now_usec = _swig_property(_unbound.ub_shm_stat_info_time_now_usec_get, _unbound.ub_shm_stat_info_time_now_usec_set) __swig_setmethods__["up_sec"] = _unbound.ub_shm_stat_info_time_up_sec_set __swig_getmethods__["up_sec"] = _unbound.ub_shm_stat_info_time_up_sec_get if _newclass: up_sec = _swig_property(_unbound.ub_shm_stat_info_time_up_sec_get, _unbound.ub_shm_stat_info_time_up_sec_set) __swig_setmethods__["up_usec"] = _unbound.ub_shm_stat_info_time_up_usec_set __swig_getmethods__["up_usec"] = _unbound.ub_shm_stat_info_time_up_usec_get if _newclass: up_usec = _swig_property(_unbound.ub_shm_stat_info_time_up_usec_get, _unbound.ub_shm_stat_info_time_up_usec_set) __swig_setmethods__["elapsed_sec"] = _unbound.ub_shm_stat_info_time_elapsed_sec_set __swig_getmethods__["elapsed_sec"] = _unbound.ub_shm_stat_info_time_elapsed_sec_get if _newclass: elapsed_sec = _swig_property(_unbound.ub_shm_stat_info_time_elapsed_sec_get, _unbound.ub_shm_stat_info_time_elapsed_sec_set) __swig_setmethods__["elapsed_usec"] = _unbound.ub_shm_stat_info_time_elapsed_usec_set __swig_getmethods__["elapsed_usec"] = _unbound.ub_shm_stat_info_time_elapsed_usec_get if _newclass: elapsed_usec = _swig_property(_unbound.ub_shm_stat_info_time_elapsed_usec_get, _unbound.ub_shm_stat_info_time_elapsed_usec_set) def __init__(self): this = _unbound.new_ub_shm_stat_info_time() try: self.this.append(this) except __builtin__.Exception: self.this = this __swig_destroy__ = _unbound.delete_ub_shm_stat_info_time __del__ = lambda self: None ub_shm_stat_info_time_swigregister = _unbound.ub_shm_stat_info_time_swigregister ub_shm_stat_info_time_swigregister(ub_shm_stat_info_time) UB_STATS_QTYPE_NUM = _unbound.UB_STATS_QTYPE_NUM UB_STATS_QCLASS_NUM = _unbound.UB_STATS_QCLASS_NUM UB_STATS_RCODE_NUM = _unbound.UB_STATS_RCODE_NUM UB_STATS_OPCODE_NUM = _unbound.UB_STATS_OPCODE_NUM UB_STATS_BUCKET_NUM = _unbound.UB_STATS_BUCKET_NUM UB_STATS_RPZ_ACTION_NUM = _unbound.UB_STATS_RPZ_ACTION_NUM class ub_server_stats(_object): __swig_setmethods__ = {} __setattr__ = lambda self, name, value: _swig_setattr(self, ub_server_stats, name, value) __swig_getmethods__ = {} __getattr__ = lambda self, name: _swig_getattr(self, ub_server_stats, name) __repr__ = _swig_repr __swig_setmethods__["num_queries"] = _unbound.ub_server_stats_num_queries_set __swig_getmethods__["num_queries"] = _unbound.ub_server_stats_num_queries_get if _newclass: num_queries = _swig_property(_unbound.ub_server_stats_num_queries_get, _unbound.ub_server_stats_num_queries_set) __swig_setmethods__["num_queries_ip_ratelimited"] = _unbound.ub_server_stats_num_queries_ip_ratelimited_set __swig_getmethods__["num_queries_ip_ratelimited"] = _unbound.ub_server_stats_num_queries_ip_ratelimited_get if _newclass: num_queries_ip_ratelimited = _swig_property(_unbound.ub_server_stats_num_queries_ip_ratelimited_get, _unbound.ub_server_stats_num_queries_ip_ratelimited_set) __swig_setmethods__["num_queries_missed_cache"] = _unbound.ub_server_stats_num_queries_missed_cache_set __swig_getmethods__["num_queries_missed_cache"] = _unbound.ub_server_stats_num_queries_missed_cache_get if _newclass: num_queries_missed_cache = _swig_property(_unbound.ub_server_stats_num_queries_missed_cache_get, _unbound.ub_server_stats_num_queries_missed_cache_set) __swig_setmethods__["num_queries_prefetch"] = _unbound.ub_server_stats_num_queries_prefetch_set __swig_getmethods__["num_queries_prefetch"] = _unbound.ub_server_stats_num_queries_prefetch_get if _newclass: num_queries_prefetch = _swig_property(_unbound.ub_server_stats_num_queries_prefetch_get, _unbound.ub_server_stats_num_queries_prefetch_set) __swig_setmethods__["sum_query_list_size"] = _unbound.ub_server_stats_sum_query_list_size_set __swig_getmethods__["sum_query_list_size"] = _unbound.ub_server_stats_sum_query_list_size_get if _newclass: sum_query_list_size = _swig_property(_unbound.ub_server_stats_sum_query_list_size_get, _unbound.ub_server_stats_sum_query_list_size_set) __swig_setmethods__["max_query_list_size"] = _unbound.ub_server_stats_max_query_list_size_set __swig_getmethods__["max_query_list_size"] = _unbound.ub_server_stats_max_query_list_size_get if _newclass: max_query_list_size = _swig_property(_unbound.ub_server_stats_max_query_list_size_get, _unbound.ub_server_stats_max_query_list_size_set) __swig_setmethods__["extended"] = _unbound.ub_server_stats_extended_set __swig_getmethods__["extended"] = _unbound.ub_server_stats_extended_get if _newclass: extended = _swig_property(_unbound.ub_server_stats_extended_get, _unbound.ub_server_stats_extended_set) __swig_setmethods__["qtype"] = _unbound.ub_server_stats_qtype_set __swig_getmethods__["qtype"] = _unbound.ub_server_stats_qtype_get if _newclass: qtype = _swig_property(_unbound.ub_server_stats_qtype_get, _unbound.ub_server_stats_qtype_set) __swig_setmethods__["qtype_big"] = _unbound.ub_server_stats_qtype_big_set __swig_getmethods__["qtype_big"] = _unbound.ub_server_stats_qtype_big_get if _newclass: qtype_big = _swig_property(_unbound.ub_server_stats_qtype_big_get, _unbound.ub_server_stats_qtype_big_set) __swig_setmethods__["qclass"] = _unbound.ub_server_stats_qclass_set __swig_getmethods__["qclass"] = _unbound.ub_server_stats_qclass_get if _newclass: qclass = _swig_property(_unbound.ub_server_stats_qclass_get, _unbound.ub_server_stats_qclass_set) __swig_setmethods__["qclass_big"] = _unbound.ub_server_stats_qclass_big_set __swig_getmethods__["qclass_big"] = _unbound.ub_server_stats_qclass_big_get if _newclass: qclass_big = _swig_property(_unbound.ub_server_stats_qclass_big_get, _unbound.ub_server_stats_qclass_big_set) __swig_setmethods__["qopcode"] = _unbound.ub_server_stats_qopcode_set __swig_getmethods__["qopcode"] = _unbound.ub_server_stats_qopcode_get if _newclass: qopcode = _swig_property(_unbound.ub_server_stats_qopcode_get, _unbound.ub_server_stats_qopcode_set) __swig_setmethods__["qtcp"] = _unbound.ub_server_stats_qtcp_set __swig_getmethods__["qtcp"] = _unbound.ub_server_stats_qtcp_get if _newclass: qtcp = _swig_property(_unbound.ub_server_stats_qtcp_get, _unbound.ub_server_stats_qtcp_set) __swig_setmethods__["qtcp_outgoing"] = _unbound.ub_server_stats_qtcp_outgoing_set __swig_getmethods__["qtcp_outgoing"] = _unbound.ub_server_stats_qtcp_outgoing_get if _newclass: qtcp_outgoing = _swig_property(_unbound.ub_server_stats_qtcp_outgoing_get, _unbound.ub_server_stats_qtcp_outgoing_set) __swig_setmethods__["qudp_outgoing"] = _unbound.ub_server_stats_qudp_outgoing_set __swig_getmethods__["qudp_outgoing"] = _unbound.ub_server_stats_qudp_outgoing_get if _newclass: qudp_outgoing = _swig_property(_unbound.ub_server_stats_qudp_outgoing_get, _unbound.ub_server_stats_qudp_outgoing_set) __swig_setmethods__["qtls"] = _unbound.ub_server_stats_qtls_set __swig_getmethods__["qtls"] = _unbound.ub_server_stats_qtls_get if _newclass: qtls = _swig_property(_unbound.ub_server_stats_qtls_get, _unbound.ub_server_stats_qtls_set) __swig_setmethods__["qhttps"] = _unbound.ub_server_stats_qhttps_set __swig_getmethods__["qhttps"] = _unbound.ub_server_stats_qhttps_get if _newclass: qhttps = _swig_property(_unbound.ub_server_stats_qhttps_get, _unbound.ub_server_stats_qhttps_set) __swig_setmethods__["qipv6"] = _unbound.ub_server_stats_qipv6_set __swig_getmethods__["qipv6"] = _unbound.ub_server_stats_qipv6_get if _newclass: qipv6 = _swig_property(_unbound.ub_server_stats_qipv6_get, _unbound.ub_server_stats_qipv6_set) __swig_setmethods__["qbit_QR"] = _unbound.ub_server_stats_qbit_QR_set __swig_getmethods__["qbit_QR"] = _unbound.ub_server_stats_qbit_QR_get if _newclass: qbit_QR = _swig_property(_unbound.ub_server_stats_qbit_QR_get, _unbound.ub_server_stats_qbit_QR_set) __swig_setmethods__["qbit_AA"] = _unbound.ub_server_stats_qbit_AA_set __swig_getmethods__["qbit_AA"] = _unbound.ub_server_stats_qbit_AA_get if _newclass: qbit_AA = _swig_property(_unbound.ub_server_stats_qbit_AA_get, _unbound.ub_server_stats_qbit_AA_set) __swig_setmethods__["qbit_TC"] = _unbound.ub_server_stats_qbit_TC_set __swig_getmethods__["qbit_TC"] = _unbound.ub_server_stats_qbit_TC_get if _newclass: qbit_TC = _swig_property(_unbound.ub_server_stats_qbit_TC_get, _unbound.ub_server_stats_qbit_TC_set) __swig_setmethods__["qbit_RD"] = _unbound.ub_server_stats_qbit_RD_set __swig_getmethods__["qbit_RD"] = _unbound.ub_server_stats_qbit_RD_get if _newclass: qbit_RD = _swig_property(_unbound.ub_server_stats_qbit_RD_get, _unbound.ub_server_stats_qbit_RD_set) __swig_setmethods__["qbit_RA"] = _unbound.ub_server_stats_qbit_RA_set __swig_getmethods__["qbit_RA"] = _unbound.ub_server_stats_qbit_RA_get if _newclass: qbit_RA = _swig_property(_unbound.ub_server_stats_qbit_RA_get, _unbound.ub_server_stats_qbit_RA_set) __swig_setmethods__["qbit_Z"] = _unbound.ub_server_stats_qbit_Z_set __swig_getmethods__["qbit_Z"] = _unbound.ub_server_stats_qbit_Z_get if _newclass: qbit_Z = _swig_property(_unbound.ub_server_stats_qbit_Z_get, _unbound.ub_server_stats_qbit_Z_set) __swig_setmethods__["qbit_AD"] = _unbound.ub_server_stats_qbit_AD_set __swig_getmethods__["qbit_AD"] = _unbound.ub_server_stats_qbit_AD_get if _newclass: qbit_AD = _swig_property(_unbound.ub_server_stats_qbit_AD_get, _unbound.ub_server_stats_qbit_AD_set) __swig_setmethods__["qbit_CD"] = _unbound.ub_server_stats_qbit_CD_set __swig_getmethods__["qbit_CD"] = _unbound.ub_server_stats_qbit_CD_get if _newclass: qbit_CD = _swig_property(_unbound.ub_server_stats_qbit_CD_get, _unbound.ub_server_stats_qbit_CD_set) __swig_setmethods__["qEDNS"] = _unbound.ub_server_stats_qEDNS_set __swig_getmethods__["qEDNS"] = _unbound.ub_server_stats_qEDNS_get if _newclass: qEDNS = _swig_property(_unbound.ub_server_stats_qEDNS_get, _unbound.ub_server_stats_qEDNS_set) __swig_setmethods__["qEDNS_DO"] = _unbound.ub_server_stats_qEDNS_DO_set __swig_getmethods__["qEDNS_DO"] = _unbound.ub_server_stats_qEDNS_DO_get if _newclass: qEDNS_DO = _swig_property(_unbound.ub_server_stats_qEDNS_DO_get, _unbound.ub_server_stats_qEDNS_DO_set) __swig_setmethods__["ans_rcode"] = _unbound.ub_server_stats_ans_rcode_set __swig_getmethods__["ans_rcode"] = _unbound.ub_server_stats_ans_rcode_get if _newclass: ans_rcode = _swig_property(_unbound.ub_server_stats_ans_rcode_get, _unbound.ub_server_stats_ans_rcode_set) __swig_setmethods__["ans_rcode_nodata"] = _unbound.ub_server_stats_ans_rcode_nodata_set __swig_getmethods__["ans_rcode_nodata"] = _unbound.ub_server_stats_ans_rcode_nodata_get if _newclass: ans_rcode_nodata = _swig_property(_unbound.ub_server_stats_ans_rcode_nodata_get, _unbound.ub_server_stats_ans_rcode_nodata_set) __swig_setmethods__["ans_secure"] = _unbound.ub_server_stats_ans_secure_set __swig_getmethods__["ans_secure"] = _unbound.ub_server_stats_ans_secure_get if _newclass: ans_secure = _swig_property(_unbound.ub_server_stats_ans_secure_get, _unbound.ub_server_stats_ans_secure_set) __swig_setmethods__["ans_bogus"] = _unbound.ub_server_stats_ans_bogus_set __swig_getmethods__["ans_bogus"] = _unbound.ub_server_stats_ans_bogus_get if _newclass: ans_bogus = _swig_property(_unbound.ub_server_stats_ans_bogus_get, _unbound.ub_server_stats_ans_bogus_set) __swig_setmethods__["rrset_bogus"] = _unbound.ub_server_stats_rrset_bogus_set __swig_getmethods__["rrset_bogus"] = _unbound.ub_server_stats_rrset_bogus_get if _newclass: rrset_bogus = _swig_property(_unbound.ub_server_stats_rrset_bogus_get, _unbound.ub_server_stats_rrset_bogus_set) __swig_setmethods__["queries_ratelimited"] = _unbound.ub_server_stats_queries_ratelimited_set __swig_getmethods__["queries_ratelimited"] = _unbound.ub_server_stats_queries_ratelimited_get if _newclass: queries_ratelimited = _swig_property(_unbound.ub_server_stats_queries_ratelimited_get, _unbound.ub_server_stats_queries_ratelimited_set) __swig_setmethods__["unwanted_replies"] = _unbound.ub_server_stats_unwanted_replies_set __swig_getmethods__["unwanted_replies"] = _unbound.ub_server_stats_unwanted_replies_get if _newclass: unwanted_replies = _swig_property(_unbound.ub_server_stats_unwanted_replies_get, _unbound.ub_server_stats_unwanted_replies_set) __swig_setmethods__["unwanted_queries"] = _unbound.ub_server_stats_unwanted_queries_set __swig_getmethods__["unwanted_queries"] = _unbound.ub_server_stats_unwanted_queries_get if _newclass: unwanted_queries = _swig_property(_unbound.ub_server_stats_unwanted_queries_get, _unbound.ub_server_stats_unwanted_queries_set) __swig_setmethods__["tcp_accept_usage"] = _unbound.ub_server_stats_tcp_accept_usage_set __swig_getmethods__["tcp_accept_usage"] = _unbound.ub_server_stats_tcp_accept_usage_get if _newclass: tcp_accept_usage = _swig_property(_unbound.ub_server_stats_tcp_accept_usage_get, _unbound.ub_server_stats_tcp_accept_usage_set) __swig_setmethods__["ans_expired"] = _unbound.ub_server_stats_ans_expired_set __swig_getmethods__["ans_expired"] = _unbound.ub_server_stats_ans_expired_get if _newclass: ans_expired = _swig_property(_unbound.ub_server_stats_ans_expired_get, _unbound.ub_server_stats_ans_expired_set) __swig_setmethods__["hist"] = _unbound.ub_server_stats_hist_set __swig_getmethods__["hist"] = _unbound.ub_server_stats_hist_get if _newclass: hist = _swig_property(_unbound.ub_server_stats_hist_get, _unbound.ub_server_stats_hist_set) __swig_setmethods__["msg_cache_count"] = _unbound.ub_server_stats_msg_cache_count_set __swig_getmethods__["msg_cache_count"] = _unbound.ub_server_stats_msg_cache_count_get if _newclass: msg_cache_count = _swig_property(_unbound.ub_server_stats_msg_cache_count_get, _unbound.ub_server_stats_msg_cache_count_set) __swig_setmethods__["rrset_cache_count"] = _unbound.ub_server_stats_rrset_cache_count_set __swig_getmethods__["rrset_cache_count"] = _unbound.ub_server_stats_rrset_cache_count_get if _newclass: rrset_cache_count = _swig_property(_unbound.ub_server_stats_rrset_cache_count_get, _unbound.ub_server_stats_rrset_cache_count_set) __swig_setmethods__["infra_cache_count"] = _unbound.ub_server_stats_infra_cache_count_set __swig_getmethods__["infra_cache_count"] = _unbound.ub_server_stats_infra_cache_count_get if _newclass: infra_cache_count = _swig_property(_unbound.ub_server_stats_infra_cache_count_get, _unbound.ub_server_stats_infra_cache_count_set) __swig_setmethods__["key_cache_count"] = _unbound.ub_server_stats_key_cache_count_set __swig_getmethods__["key_cache_count"] = _unbound.ub_server_stats_key_cache_count_get if _newclass: key_cache_count = _swig_property(_unbound.ub_server_stats_key_cache_count_get, _unbound.ub_server_stats_key_cache_count_set) __swig_setmethods__["num_query_dnscrypt_crypted"] = _unbound.ub_server_stats_num_query_dnscrypt_crypted_set __swig_getmethods__["num_query_dnscrypt_crypted"] = _unbound.ub_server_stats_num_query_dnscrypt_crypted_get if _newclass: num_query_dnscrypt_crypted = _swig_property(_unbound.ub_server_stats_num_query_dnscrypt_crypted_get, _unbound.ub_server_stats_num_query_dnscrypt_crypted_set) __swig_setmethods__["num_query_dnscrypt_cert"] = _unbound.ub_server_stats_num_query_dnscrypt_cert_set __swig_getmethods__["num_query_dnscrypt_cert"] = _unbound.ub_server_stats_num_query_dnscrypt_cert_get if _newclass: num_query_dnscrypt_cert = _swig_property(_unbound.ub_server_stats_num_query_dnscrypt_cert_get, _unbound.ub_server_stats_num_query_dnscrypt_cert_set) __swig_setmethods__["num_query_dnscrypt_cleartext"] = _unbound.ub_server_stats_num_query_dnscrypt_cleartext_set __swig_getmethods__["num_query_dnscrypt_cleartext"] = _unbound.ub_server_stats_num_query_dnscrypt_cleartext_get if _newclass: num_query_dnscrypt_cleartext = _swig_property(_unbound.ub_server_stats_num_query_dnscrypt_cleartext_get, _unbound.ub_server_stats_num_query_dnscrypt_cleartext_set) __swig_setmethods__["num_query_dnscrypt_crypted_malformed"] = _unbound.ub_server_stats_num_query_dnscrypt_crypted_malformed_set __swig_getmethods__["num_query_dnscrypt_crypted_malformed"] = _unbound.ub_server_stats_num_query_dnscrypt_crypted_malformed_get if _newclass: num_query_dnscrypt_crypted_malformed = _swig_property(_unbound.ub_server_stats_num_query_dnscrypt_crypted_malformed_get, _unbound.ub_server_stats_num_query_dnscrypt_crypted_malformed_set) __swig_setmethods__["num_query_dnscrypt_secret_missed_cache"] = _unbound.ub_server_stats_num_query_dnscrypt_secret_missed_cache_set __swig_getmethods__["num_query_dnscrypt_secret_missed_cache"] = _unbound.ub_server_stats_num_query_dnscrypt_secret_missed_cache_get if _newclass: num_query_dnscrypt_secret_missed_cache = _swig_property(_unbound.ub_server_stats_num_query_dnscrypt_secret_missed_cache_get, _unbound.ub_server_stats_num_query_dnscrypt_secret_missed_cache_set) __swig_setmethods__["shared_secret_cache_count"] = _unbound.ub_server_stats_shared_secret_cache_count_set __swig_getmethods__["shared_secret_cache_count"] = _unbound.ub_server_stats_shared_secret_cache_count_get if _newclass: shared_secret_cache_count = _swig_property(_unbound.ub_server_stats_shared_secret_cache_count_get, _unbound.ub_server_stats_shared_secret_cache_count_set) __swig_setmethods__["num_query_dnscrypt_replay"] = _unbound.ub_server_stats_num_query_dnscrypt_replay_set __swig_getmethods__["num_query_dnscrypt_replay"] = _unbound.ub_server_stats_num_query_dnscrypt_replay_get if _newclass: num_query_dnscrypt_replay = _swig_property(_unbound.ub_server_stats_num_query_dnscrypt_replay_get, _unbound.ub_server_stats_num_query_dnscrypt_replay_set) __swig_setmethods__["nonce_cache_count"] = _unbound.ub_server_stats_nonce_cache_count_set __swig_getmethods__["nonce_cache_count"] = _unbound.ub_server_stats_nonce_cache_count_get if _newclass: nonce_cache_count = _swig_property(_unbound.ub_server_stats_nonce_cache_count_get, _unbound.ub_server_stats_nonce_cache_count_set) __swig_setmethods__["num_query_authzone_up"] = _unbound.ub_server_stats_num_query_authzone_up_set __swig_getmethods__["num_query_authzone_up"] = _unbound.ub_server_stats_num_query_authzone_up_get if _newclass: num_query_authzone_up = _swig_property(_unbound.ub_server_stats_num_query_authzone_up_get, _unbound.ub_server_stats_num_query_authzone_up_set) __swig_setmethods__["num_query_authzone_down"] = _unbound.ub_server_stats_num_query_authzone_down_set __swig_getmethods__["num_query_authzone_down"] = _unbound.ub_server_stats_num_query_authzone_down_get if _newclass: num_query_authzone_down = _swig_property(_unbound.ub_server_stats_num_query_authzone_down_get, _unbound.ub_server_stats_num_query_authzone_down_set) __swig_setmethods__["num_neg_cache_noerror"] = _unbound.ub_server_stats_num_neg_cache_noerror_set __swig_getmethods__["num_neg_cache_noerror"] = _unbound.ub_server_stats_num_neg_cache_noerror_get if _newclass: num_neg_cache_noerror = _swig_property(_unbound.ub_server_stats_num_neg_cache_noerror_get, _unbound.ub_server_stats_num_neg_cache_noerror_set) __swig_setmethods__["num_neg_cache_nxdomain"] = _unbound.ub_server_stats_num_neg_cache_nxdomain_set __swig_getmethods__["num_neg_cache_nxdomain"] = _unbound.ub_server_stats_num_neg_cache_nxdomain_get if _newclass: num_neg_cache_nxdomain = _swig_property(_unbound.ub_server_stats_num_neg_cache_nxdomain_get, _unbound.ub_server_stats_num_neg_cache_nxdomain_set) __swig_setmethods__["num_query_subnet"] = _unbound.ub_server_stats_num_query_subnet_set __swig_getmethods__["num_query_subnet"] = _unbound.ub_server_stats_num_query_subnet_get if _newclass: num_query_subnet = _swig_property(_unbound.ub_server_stats_num_query_subnet_get, _unbound.ub_server_stats_num_query_subnet_set) __swig_setmethods__["num_query_subnet_cache"] = _unbound.ub_server_stats_num_query_subnet_cache_set __swig_getmethods__["num_query_subnet_cache"] = _unbound.ub_server_stats_num_query_subnet_cache_get if _newclass: num_query_subnet_cache = _swig_property(_unbound.ub_server_stats_num_query_subnet_cache_get, _unbound.ub_server_stats_num_query_subnet_cache_set) __swig_setmethods__["mem_stream_wait"] = _unbound.ub_server_stats_mem_stream_wait_set __swig_getmethods__["mem_stream_wait"] = _unbound.ub_server_stats_mem_stream_wait_get if _newclass: mem_stream_wait = _swig_property(_unbound.ub_server_stats_mem_stream_wait_get, _unbound.ub_server_stats_mem_stream_wait_set) __swig_setmethods__["mem_http2_query_buffer"] = _unbound.ub_server_stats_mem_http2_query_buffer_set __swig_getmethods__["mem_http2_query_buffer"] = _unbound.ub_server_stats_mem_http2_query_buffer_get if _newclass: mem_http2_query_buffer = _swig_property(_unbound.ub_server_stats_mem_http2_query_buffer_get, _unbound.ub_server_stats_mem_http2_query_buffer_set) __swig_setmethods__["mem_http2_response_buffer"] = _unbound.ub_server_stats_mem_http2_response_buffer_set __swig_getmethods__["mem_http2_response_buffer"] = _unbound.ub_server_stats_mem_http2_response_buffer_get if _newclass: mem_http2_response_buffer = _swig_property(_unbound.ub_server_stats_mem_http2_response_buffer_get, _unbound.ub_server_stats_mem_http2_response_buffer_set) __swig_setmethods__["qtls_resume"] = _unbound.ub_server_stats_qtls_resume_set __swig_getmethods__["qtls_resume"] = _unbound.ub_server_stats_qtls_resume_get if _newclass: qtls_resume = _swig_property(_unbound.ub_server_stats_qtls_resume_get, _unbound.ub_server_stats_qtls_resume_set) __swig_setmethods__["rpz_action"] = _unbound.ub_server_stats_rpz_action_set __swig_getmethods__["rpz_action"] = _unbound.ub_server_stats_rpz_action_get if _newclass: rpz_action = _swig_property(_unbound.ub_server_stats_rpz_action_get, _unbound.ub_server_stats_rpz_action_set) def __init__(self): this = _unbound.new_ub_server_stats() try: self.this.append(this) except __builtin__.Exception: self.this = this __swig_destroy__ = _unbound.delete_ub_server_stats __del__ = lambda self: None ub_server_stats_swigregister = _unbound.ub_server_stats_swigregister ub_server_stats_swigregister(ub_server_stats) class ub_stats_info(_object): __swig_setmethods__ = {} __setattr__ = lambda self, name, value: _swig_setattr(self, ub_stats_info, name, value) __swig_getmethods__ = {} __getattr__ = lambda self, name: _swig_getattr(self, ub_stats_info, name) __repr__ = _swig_repr __swig_setmethods__["svr"] = _unbound.ub_stats_info_svr_set __swig_getmethods__["svr"] = _unbound.ub_stats_info_svr_get if _newclass: svr = _swig_property(_unbound.ub_stats_info_svr_get, _unbound.ub_stats_info_svr_set) __swig_setmethods__["mesh_num_states"] = _unbound.ub_stats_info_mesh_num_states_set __swig_getmethods__["mesh_num_states"] = _unbound.ub_stats_info_mesh_num_states_get if _newclass: mesh_num_states = _swig_property(_unbound.ub_stats_info_mesh_num_states_get, _unbound.ub_stats_info_mesh_num_states_set) __swig_setmethods__["mesh_num_reply_states"] = _unbound.ub_stats_info_mesh_num_reply_states_set __swig_getmethods__["mesh_num_reply_states"] = _unbound.ub_stats_info_mesh_num_reply_states_get if _newclass: mesh_num_reply_states = _swig_property(_unbound.ub_stats_info_mesh_num_reply_states_get, _unbound.ub_stats_info_mesh_num_reply_states_set) __swig_setmethods__["mesh_jostled"] = _unbound.ub_stats_info_mesh_jostled_set __swig_getmethods__["mesh_jostled"] = _unbound.ub_stats_info_mesh_jostled_get if _newclass: mesh_jostled = _swig_property(_unbound.ub_stats_info_mesh_jostled_get, _unbound.ub_stats_info_mesh_jostled_set) __swig_setmethods__["mesh_dropped"] = _unbound.ub_stats_info_mesh_dropped_set __swig_getmethods__["mesh_dropped"] = _unbound.ub_stats_info_mesh_dropped_get if _newclass: mesh_dropped = _swig_property(_unbound.ub_stats_info_mesh_dropped_get, _unbound.ub_stats_info_mesh_dropped_set) __swig_setmethods__["mesh_replies_sent"] = _unbound.ub_stats_info_mesh_replies_sent_set __swig_getmethods__["mesh_replies_sent"] = _unbound.ub_stats_info_mesh_replies_sent_get if _newclass: mesh_replies_sent = _swig_property(_unbound.ub_stats_info_mesh_replies_sent_get, _unbound.ub_stats_info_mesh_replies_sent_set) __swig_setmethods__["mesh_replies_sum_wait_sec"] = _unbound.ub_stats_info_mesh_replies_sum_wait_sec_set __swig_getmethods__["mesh_replies_sum_wait_sec"] = _unbound.ub_stats_info_mesh_replies_sum_wait_sec_get if _newclass: mesh_replies_sum_wait_sec = _swig_property(_unbound.ub_stats_info_mesh_replies_sum_wait_sec_get, _unbound.ub_stats_info_mesh_replies_sum_wait_sec_set) __swig_setmethods__["mesh_replies_sum_wait_usec"] = _unbound.ub_stats_info_mesh_replies_sum_wait_usec_set __swig_getmethods__["mesh_replies_sum_wait_usec"] = _unbound.ub_stats_info_mesh_replies_sum_wait_usec_get if _newclass: mesh_replies_sum_wait_usec = _swig_property(_unbound.ub_stats_info_mesh_replies_sum_wait_usec_get, _unbound.ub_stats_info_mesh_replies_sum_wait_usec_set) __swig_setmethods__["mesh_time_median"] = _unbound.ub_stats_info_mesh_time_median_set __swig_getmethods__["mesh_time_median"] = _unbound.ub_stats_info_mesh_time_median_get if _newclass: mesh_time_median = _swig_property(_unbound.ub_stats_info_mesh_time_median_get, _unbound.ub_stats_info_mesh_time_median_set) def __init__(self): this = _unbound.new_ub_stats_info() try: self.this.append(this) except __builtin__.Exception: self.this = this __swig_destroy__ = _unbound.delete_ub_stats_info __del__ = lambda self: None ub_stats_info_swigregister = _unbound.ub_stats_info_swigregister ub_stats_info_swigregister(ub_stats_info) class ub_ctx(_object): """ Unbound resolving and validation context. The validation context is created to hold the resolver status, validation keys and a small cache (containing messages, rrsets, roundtrip times, trusted keys, lameness information). **Usage** >>> import unbound >>> ctx = unbound.ub_ctx() >>> ctx.resolvconf("/etc/resolv.conf") >>> status, result = ctx.resolve("www.google.com", unbound.RR_TYPE_A, unbound.RR_CLASS_IN) >>> if status==0 and result.havedata: >>> print "Result:",result.data.address_list Result: ['74.125.43.147', '74.125.43.99', '74.125.43.103', '74.125.43.104'] """ __swig_setmethods__ = {} __setattr__ = lambda self, name, value: _swig_setattr(self, ub_ctx, name, value) __swig_getmethods__ = {} __getattr__ = lambda self, name: _swig_getattr(self, ub_ctx, name) def __init__(self, *args, **kwargs): raise AttributeError("No constructor defined") __repr__ = _swig_repr def __init__(self): """Creates a resolving and validation context. An exception is invoked if the process of creation an ub_ctx instance fails. """ self.this = _unbound.ub_ctx_create() if not self.this: raise Exception("Fatal error: unbound context initialization failed") #__swig_destroy__ = _unbound.ub_ctx_free_dbg __swig_destroy__ = _unbound._ub_ctx_delete #UB_CTX_METHODS_# def add_ta(self,ta): """Add a trust anchor to the given context. The trust anchor is a string, on one line, that holds a valid DNSKEY or DS RR. :param ta: string, with zone-format RR on one line. [domainname] [TTL optional] [type] [class optional] [rdata contents] :returns: (int) 0 if OK, else error. """ return _unbound.ub_ctx_add_ta(self,ta) #parameters: struct ub_ctx *,char *, #retvals: int def add_ta_file(self,fname): """Add trust anchors to the given context. Pass name of a file with DS and DNSKEY records (like from dig or drill). :param fname: filename of file with keyfile with trust anchors. :returns: (int) 0 if OK, else error. """ return _unbound.ub_ctx_add_ta_file(self,fname) #parameters: struct ub_ctx *,char *, #retvals: int def config(self,fname): """setup configuration for the given context. :param fname: unbound config file (not all settings applicable). This is a power-users interface that lets you specify all sorts of options. For some specific options, such as adding trust anchors, special routines exist. :returns: (int) 0 if OK, else error. """ return _unbound.ub_ctx_config(self,fname) #parameters: struct ub_ctx *,char *, #retvals: int def debuglevel(self,d): """Set debug verbosity for the context Output is directed to stderr. :param d: debug level, 0 is off, 1 is very minimal, 2 is detailed, and 3 is lots. :returns: (int) 0 if OK, else error. """ return _unbound.ub_ctx_debuglevel(self,d) #parameters: struct ub_ctx *,int, #retvals: int def debugout(self,out): """Set debug output (and error output) to the specified stream. Pass None to disable. Default is stderr. :param out: File stream to log to. :returns: (int) 0 if OK, else error. **Usage:** In order to log into file, use :: ctx = unbound.ub_ctx() fw = fopen("debug.log") ctx.debuglevel(3) ctx.debugout(fw) Another option is to print the debug information to stderr output :: ctx = unbound.ub_ctx() ctx.debuglevel(10) ctx.debugout(sys.stderr) """ return _unbound.ub_ctx_debugout(self,out) #parameters: struct ub_ctx *,void *, #retvals: int def hosts(self,fname="/etc/hosts"): """Read list of hosts from the filename given. Usually "/etc/hosts". These addresses are not flagged as DNSSEC secure when queried for. :param fname: file name string. If None "/etc/hosts" is used. :returns: (int) 0 if OK, else error. """ return _unbound.ub_ctx_hosts(self,fname) #parameters: struct ub_ctx *,char *, #retvals: int def print_local_zones(self): """Print the local zones and their content (RR data) to the debug output. :returns: (int) 0 if OK, else error. """ return _unbound.ub_ctx_print_local_zones(self) #parameters: struct ub_ctx *, #retvals: int def resolvconf(self,fname="/etc/resolv.conf"): """Read list of nameservers to use from the filename given. Usually "/etc/resolv.conf". Uses those nameservers as caching proxies. If they do not support DNSSEC, validation may fail. Only nameservers are picked up, the searchdomain, ndots and other settings from resolv.conf(5) are ignored. :param fname: file name string. If None "/etc/resolv.conf" is used. :returns: (int) 0 if OK, else error. """ return _unbound.ub_ctx_resolvconf(self,fname) #parameters: struct ub_ctx *,char *, #retvals: int def set_async(self,dothread): """Set a context behaviour for asynchronous action. :param dothread: if True, enables threading and a call to :meth:`resolve_async` creates a thread to handle work in the background. If False, a process is forked to handle work in the background. Changes to this setting after :meth:`async` calls have been made have no effect (delete and re-create the context to change). :returns: (int) 0 if OK, else error. """ return _unbound.ub_ctx_async(self,dothread) #parameters: struct ub_ctx *,int, #retvals: int def set_fwd(self,addr): """Set machine to forward DNS queries to, the caching resolver to use. IP4 or IP6 address. Forwards all DNS requests to that machine, which is expected to run a recursive resolver. If the is not DNSSEC-capable, validation may fail. Can be called several times, in that case the addresses are used as backup servers. To read the list of nameservers from /etc/resolv.conf (from DHCP or so), use the call :meth:`resolvconf`. :param addr: address, IP4 or IP6 in string format. If the addr is None, forwarding is disabled. :returns: (int) 0 if OK, else error. """ return _unbound.ub_ctx_set_fwd(self,addr) #parameters: struct ub_ctx *,char *, #retvals: int def set_option(self,opt,val): """Set an option for the context. Changes to the options after :meth:`resolve`, :meth:`resolve_async`, :meth:`zone_add`, :meth:`zone_remove`, :meth:`data_add` or :meth:`data_remove` have no effect (you have to delete and re-create the context). :param opt: option name from the unbound.conf config file format. (not all settings applicable). The name includes the trailing ':' for example set_option("logfile:", "mylog.txt"); This is a power-users interface that lets you specify all sorts of options. For some specific options, such as adding trust anchors, special routines exist. :param val: value of the option. :returns: (int) 0 if OK, else error. """ return _unbound.ub_ctx_set_option(self,opt,val) #parameters: struct ub_ctx *,char *,char *, #retvals: int def trustedkeys(self,fname): """Add trust anchors to the given context. Pass the name of a bind-style config file with trusted-keys{}. :param fname: filename of file with bind-style config entries with trust anchors. :returns: (int) 0 if OK, else error. """ return _unbound.ub_ctx_trustedkeys(self,fname) #parameters: struct ub_ctx *,char *, #retvals: int #_UB_CTX_METHODS# def zone_print(self): """Print local zones using debugout""" _unbound.ub_ctx_print_local_zones(self) def zone_add(self,zonename,zonetype): """Add new local zone :param zonename: zone domain name (e.g. myzone.) :param zonetype: type of the zone ("static",...) :returns: (int) 0 if OK, else error. """ return _unbound.ub_ctx_zone_add(self,zonename, zonetype) #parameters: struct ub_ctx *,char*, char* #retvals: int def zone_remove(self,zonename): """Remove local zone If exists, removes local zone with all the RRs. :param zonename: zone domain name :returns: (int) 0 if OK, else error. """ return _unbound.ub_ctx_zone_remove(self,zonename) #parameters: struct ub_ctx *,char* #retvals: int def data_add(self,rrdata): """Add new local RR data :param rrdata: string, in zone-format on one line. [domainname] [TTL optional] [type] [class optional] [rdata contents] :returns: (int) 0 if OK, else error. **Usage** The local data ... :: >>> ctx = unbound.ub_ctx() >>> ctx.zone_add("mydomain.net.","static") 0 >>> status = ctx.data_add("test.mydomain.net. IN A 192.168.1.1") 0 >>> status, result = ctx.resolve("test.mydomain.net") >>> if status==0 and result.havedata: >>> print \"Result:\",result.data.address_list Result: ['192.168.1.1'] """ return _unbound.ub_ctx_data_add(self,rrdata) #parameters: struct ub_ctx *,char* #retvals: int def data_remove(self,rrdata): """Remove local RR data If exists, remove resource record from local zone :param rrdata: string, in zone-format on one line. [domainname] [TTL optional] [type] [class optional] [rdata contents] :returns: (int) 0 if OK, else error. """ return _unbound.ub_ctx_data_remove(self,rrdata) #parameters: struct ub_ctx *,char* #retvals: int #UB_METHODS_# def cancel(self,async_id): """Cancel an async query in progress. Its callback will not be called. :param async_id: which query to cancel. :returns: (int) 0 if OK, else error. """ return _unbound.ub_cancel(self,async_id) #parameters: struct ub_ctx *,int, #retvals: int def get_fd(self): """Get file descriptor. Wait for it to become readable, at this point answers are returned from the asynchronous validating resolver. Then call the ub_process to continue processing. This routine works immediately after context creation, the fd does not change. :returns: (int) -1 on error, or file descriptor to use select(2) with. """ return _unbound.ub_fd(self) #parameters: struct ub_ctx *, #retvals: int def poll(self): """Poll a context to see if it has any new results Do not poll in a loop, instead extract the fd below to poll for readiness, and then check, or wait using the wait routine. :returns: (int) 0 if nothing to read, or nonzero if a result is available. If nonzero, call ctx_process() to do callbacks. """ return _unbound.ub_poll(self) #parameters: struct ub_ctx *, #retvals: int def process(self): """Call this routine to continue processing results from the validating resolver (when the fd becomes readable). Will perform necessary callbacks. :returns: (int) 0 if OK, else error. """ return _unbound.ub_process(self) #parameters: struct ub_ctx *, #retvals: int def resolve(self,name,rrtype=RR_TYPE_A,rrclass=RR_CLASS_IN): """Perform resolution and validation of the target name. :param name: domain name in text format (a string or unicode string). IDN domain name have to be passed as a unicode string. :param rrtype: type of RR in host order (optional argument). Default value is RR_TYPE_A (A class). :param rrclass: class of RR in host order (optional argument). Default value is RR_CLASS_IN (for internet). :returns: * (int) 0 if OK, else error. * (:class:`ub_result`) the result data is returned in a newly allocated result structure. May be None on return, return value is set to an error in that case (out of memory). """ if isinstance(name, bytes): #probably IDN return _unbound.ub_resolve(self,name,rrtype,rrclass) else: return _unbound.ub_resolve(self,idn2dname(name),rrtype,rrclass) #parameters: struct ub_ctx *,char *,int,int, #retvals: int,struct ub_result ** def resolve_async(self,name,mydata,callback,rrtype=RR_TYPE_A,rrclass=RR_CLASS_IN): """Perform resolution and validation of the target name. Asynchronous, after a while, the callback will be called with your data and the result. If an error happens during processing, your callback will be called with error set to a nonzero value (and result==None). :param name: domain name in text format (a string or unicode string). IDN domain name have to be passed as a unicode string. :param mydata: this data is your own data (you can pass arbitrary python object or None) which are passed on to the callback function. :param callback: call-back function which is called on completion of the resolution. :param rrtype: type of RR in host order (optional argument). Default value is RR_TYPE_A (A class). :param rrclass: class of RR in host order (optional argument). Default value is RR_CLASS_IN (for internet). :returns: * (int) 0 if OK, else error. * (int) async_id, an identifier number is returned for the query as it is in progress. It can be used to cancel the query. **Call-back function:** The call-back function looks as the follows:: def call_back(mydata, status, result): pass **Parameters:** * `mydata` - mydata object * `status` - 0 when a result has been found * `result` - the result structure. The result may be None, in that case err is set. """ if isinstance(name, bytes): #probably IDN return _unbound._ub_resolve_async(self,name,rrtype,rrclass,mydata,callback) else: return _unbound._ub_resolve_async(self,idn2dname(name),rrtype,rrclass,mydata,callback) #parameters: struct ub_ctx *,char *,int,int,void *,ub_callback_t, #retvals: int, int def wait(self): """Wait for a context to finish with results. Calls after the wait for you. After the wait, there are no more outstanding asynchronous queries. :returns: (int) 0 if OK, else error. """ return _unbound.ub_wait(self) #parameters: struct ub_ctx *, #retvals: int #_UB_METHODS# ub_ctx_swigregister = _unbound.ub_ctx_swigregister ub_ctx_swigregister(ub_ctx) def ub_ctx_debugout(*args): return _unbound.ub_ctx_debugout(*args) ub_ctx_debugout = _unbound.ub_ctx_debugout def _ub_resolve_async(ctx, name, rrtype, rrclass, mydata, pyfunc): return _unbound._ub_resolve_async(ctx, name, rrtype, rrclass, mydata, pyfunc) _ub_resolve_async = _unbound._ub_resolve_async ub_resolve_async = _unbound._ub_resolve_async def reverse(domain): """Reverse domain name Usable for reverse lookups when the IP address should be reversed """ return '.'.join([a for a in domain.split(".")][::-1]) def idn2dname(idnname): """Converts domain name in IDN format to canonic domain name :param idnname: (unicode string) IDN name :returns: (string) domain name """ return '.'.join([encodings.idna.ToASCII(a) if a else '' for a in idnname.split('.')]) def dname2idn(name): """Converts canonic domain name in IDN format to unicode string :param name: (string) domain name :returns: (unicode string) domain name """ return '.'.join([encodings.idna.ToUnicode(a) for a in name.split('.')]) # This file is compatible with both classic and new-style classes.