ó ¸sWc@sLdZddlmZddlmZddlZdefd„ƒYZdS(sDNS classes used by nscfg.iÿÿÿÿ(tprint_functioni(tNssbaseNt DnsClientc!BsÙeZdZdZdZdZdZdZdZdgZ ide gd6d e gd 6d e gd 6de gd 6d e gd 6Z d8Z dZdZd9Zd1„Zd2„Zd3„Zd4„Zd5„Zd6„Zd7„ZRS(:smDomain Name Service (DNS) class. Represents the configuration of DNS. See resolv.conf(4) for details.ssvc:/network/dns/clients resolv.confs/etctconfigts"# See resolv.conf(4) for details. t net_addresst nameservertastringtdomaintsearchtsortlisttoptionstnss_dnss)solaris.smf.value.name-service.dns.clients0.0.0.0s 128.0.0.0s 192.0.0.0s 224.0.0.0s 240.0.0.0s 248.0.0.0s 252.0.0.0s 254.0.0.0s 255.0.0.0s 255.128.0.0s 255.192.0.0s 255.224.0.0s 255.240.0.0s 255.248.0.0s 255.252.0.0s 255.254.0.0s 255.255.0.0s 255.255.128.0s 255.255.192.0s 255.255.224.0s 255.255.240.0s 255.255.248.0s 255.255.252.0s 255.255.254.0s 255.255.255.0s255.255.255.128s255.255.255.192s255.255.255.224s255.255.255.240s255.255.255.248s255.255.255.252s255.255.255.254s255.255.255.255cCstj|ƒdS(N(Rt__init__(tself((s common/dns.pyR BscCs©|jd|ƒ|jdƒdkr)|S|jdƒ\}}yt|ƒ}WndSX|dkr|dkr|j|}ndSd||f}|jd|ƒ|S( s9convert net_address to sort list format (expand netmask).snet_address -> sortlist got: t/iÿÿÿÿii s%s/%ss!net_address -> sortlist returns: N(t print_msgtfindtsplittinttNonetNMLIST(Rtaddrtiptmasktimtnmtret((s common/dns.pytna_to_slEscCs¬|jd|ƒ|jdƒdkr)|S|jdƒ\}}d}x1|dkrw|j||krjPqG|d7}qGW|dkrˆd Sd||f}|jd|ƒ|S( s:convert sort list to net_address format (compact netmask).ssortlist -> net_address got: Riÿÿÿÿii is%s/%ds!sortlist -> net_address returns: N(RRRRR(RRRRtidxR((s common/dns.pytsl_to_naWs c Cs|jdƒi}xž|jjƒD]}|jd|ƒd||<|j|dri|jd|ƒ}n|jd|ƒ}|jd|ƒ|dkr#|dkr#||||jS|jd|ƒx0|D](}|dkrmqUn|ddksU|ddkr“qUn|jdƒrÍ|jdƒ}|dkrÍ|| }qÍn|jdƒ}|dkrõ|| }n|jƒ}|j ƒ}t |ƒdkr%qUnyK|jd |ƒ|d} |j | } | d kr}d j |d ƒ} | | g}n| d  rªt |ƒdkrª|dd!}n|d }x¸|D]°} | d kr|jd| ƒ|j | ƒ} |jd| ƒ| dkrq»qn|j| d| ƒsQd| d| f} |j| ƒt}n|j| | d| fƒq»WWqUqUqUXqUW|rŽ|jS|jd|ƒ|jr®|jS|jdƒ|j|jƒsÔ|jS|jƒsç|jS|jdƒi} i}|jd| |ƒx]|j jƒD]L}|jd| |ƒ|j |d r#g| |<|j |d||: s sl2na <: sIllegal value (%s): %ss processed db: s delete customizations.s loading pg...s loading mval, mvaltype...s mval adding: s populated mval, mvaltype...s adding: s ERR adding: s mval adding: s committing pg...s validating pg...ssuccessful import.N(RtFalset load_legacyRtNOCONFIGR#t startswithRtrstripRtlenR!tjoinRt typecheckterr_msgR.tappendR/tno_writeR,t delcust_pgtDEFPGtcommitR"t add_prop_valtvalidate(Rthave_nsterrR2tlinestltdctsctvalstkeyttarrayR7temsgtmvaltmvaltypeRtptypeR6((s common/dns.pyt import_to_smf£sÀ                     "      !      cCsZ|jdƒ|jdƒ|j|jƒs3|jS|jƒsF|jS|jdƒ|jS(sUnconfigure SMF. Reset DEFPG.sunconfiguring DNS...sDelete customizations.ssuccessful unconfigure.(RRGRHR/RIR,(R((s common/dns.pyt unconfig_smfs    cCs2|jƒ}|dkr.|j|kr.tSntS(s/Is SMF populated with this service? True/FalseN(tget_pgsRRHR.R<(Rtpgs((s common/dns.pyt is_populateds   (Rssearchsoptionsssortlists nameserver(!s0.0.0.0s 128.0.0.0s 192.0.0.0s 224.0.0.0s 240.0.0.0s 248.0.0.0s 252.0.0.0s 254.0.0.0s 255.0.0.0s 255.128.0.0s 255.192.0.0s 255.224.0.0s 255.240.0.0s 255.248.0.0s 255.252.0.0s 255.254.0.0s 255.255.0.0s 255.255.128.0s 255.255.192.0s 255.255.224.0s 255.255.240.0s 255.255.248.0s 255.255.252.0s 255.255.254.0s 255.255.255.0s255.255.255.128s255.255.255.192s255.255.255.224s255.255.255.240s255.255.255.248s255.255.255.252s255.255.255.254s255.255.255.255(t__name__t __module__t__doc__tSERVICEtLEGACYt LEGACYDIRRHtDEFPROPtDOCtALLPGSR.R<R!R&tBACKENDt VALUE_AUTHRR RRR9RYRZR](((s common/dns.pyRsB        : o (R`t __future__RtnssbaseRR(R(((s common/dns.pyts