ó
¼Š`c           @   s‚  d  d l  Z  d  d l j Z d  d l j Z d  d l Td  d l m Z d f  d „  ƒ  YZ d f  d „  ƒ  YZ d e	 f d	 „  ƒ  YZ
 d
 f  d „  ƒ  YZ e d k r~d  d l Z e j d d k re e j d ƒ Z e j ƒ  Z e j ƒ  e d d ƒ Z e j e ƒ nu e j d d k r{y= e e j d d e d e ƒZ e j d GHe j d ƒ GHWn e	 k
 rwZ e j d GHn Xn  n  d S(   iÿÿÿÿN(   t   *(   t   copyt	   PolicyLexc           B   sŸ   e  Z d& Z e d' Z i  Z d Z d Z d Z d Z d Z	 d „  Z
 d „  Z d „  Z d „  Z d „  Z d  „  Z d! „  Z d" „  Z d# „  Z d$ „  Z d% „  Z RS((   t   POLICYt   ALGORITHM_POLICYt   ZONEt	   ALGORITHMt	   DIRECTORYt   KEYTTLt   KEY_SIZEt   ROLL_PERIODt   PRE_PUBLISHt   POST_PUBLISHt   COVERAGEt   STANDBYt   NONEt
   DATESUFFIXt   KEYTYPEt   ALGNAMEt   STRt   QSTRINGt   NUMBERt   LBRACEt   RBRACEt   SEMIs    	s	   (//|\#).*s   \{s   \}t   ;c         C   s"   | j  j | j j d ƒ 7_ d S(   s   \n+s   
N(   t   lexert   linenot   valuet   count(   t   selft   t(    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt	   t_newline7   s    c         C   s"   | j  j | j j d ƒ 7_ d S(   s   /\*(.|\n)*?\*/s   
N(   R   R   R   R   (   R   R   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt	   t_comment;   s    c         C   s+   t  j d | j ƒ j d ƒ j ƒ  | _ | S(   s°   (?i)(?<=[0-9 \t])(y(?:ears|ear|ea|e)?|mo(?:nths|nth|nt|n)?|w(?:eeks|eek|ee|e)?|d(?:ays|ay|a)?|h(?:ours|our|ou|o)?|mi(?:nutes|nute|nut|nu|n)?|s(?:econds|econd|econ|eco|ec|e)?)\bs   (?i)(y|mo|w|d|h|mi|s)([a-z]*)i   (   t   ret   matchR   t   groupt   lower(   R   R   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   t_DATESUFFIX?   s    'c         C   s   | j  j ƒ  | _  | S(   s   (?i)\b(KSK|ZSK)\b(   R   t   upper(   R   R   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt	   t_KEYTYPED   s    c         C   s   | j  j ƒ  | _  | S(   sƒ   (?i)\b(RSAMD5|DH|DSA|NSEC3DSA|ECC|RSASHA1|NSEC3RSASHA1|RSASHA256|RSASHA512|ECCGOST|ECDSAP256SHA256|ECDSAP384SHA384|ED25519|ED448)\b(   R   R'   (   R   R   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt	   t_ALGNAMEI   s    c         C   s   |  j  j | j d ƒ | _ | S(   s   [A-Za-z._-][\w._-]*R   (   t   reserved_mapt   getR   t   type(   R   R   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   t_STRN   s    c         C   s2   |  j  j | j d ƒ | _ | j d d !| _ | S(   s   "([^"\n]|(\\"))*"R   i   iÿÿÿÿ(   R*   R+   R   R,   (   R   R   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt	   t_QSTRINGS   s    c         C   s   t  | j ƒ | _ | S(   s   \d+(   t   intR   (   R   R   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   t_NUMBERY   s    c         C   s$   d | j  d GH| j j d ƒ d  S(   Ns   Illegal character '%s'i    i   (   R   R   t   skip(   R   R   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   t_error^   s    c         K   s‚   d t  t ƒ k r' t j d d ƒ } n t d d ƒ } x- |  j D]" } | |  j | j ƒ  j | ƒ <q@ Wt j d |  |  |  _ d  S(   Nt	   maketranst   _t   -t   object(	   t   dirt   strR3   t   reservedR*   R%   t	   translatet   lexR   (   R   t   kwargst   transt   r(    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   __init__b   s     c         C   s?   |  j  j | ƒ x( t r: |  j  j ƒ  } | s2 Pn  | GHq Wd  S(   N(   R   t   inputt   Truet   token(   R   t   textR   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   testk   s    	(   R   R   R   R   R   R   R	   R
   R   R   R   R   R   (	   R   R   R   s   STRs   QSTRINGR   R   R   R   (   t   __name__t
   __module__R9   t   tokensR*   t   t_ignoret   t_ignore_olcommentt   t_LBRACEt   t_RBRACEt   t_SEMIR    R!   R&   R(   R)   R-   R.   R0   R2   R?   RD   (    (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyR      sN                      											t   Policyc           B   s+  e  Z e Z e Z e Z d Z d Z d Z	 d Z
 d Z d Z d Z d Z d Z d Z d Z d Z d Z i d  d g d 6d  d g d 6d  d g d 6d  d g d 6d  d g d 6d  d g d 6d  d g d	 6d d
 6d d 6d d 6d d 6d d 6Z d d d d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   i   i   t   DSAt   NSEC3DSAi   t   RSAMD5t   RSASHA1t   NSEC3RSASHA1t	   RSASHA256t	   RSASHA512t   ECCGOSTt   ECDSAP256SHA256t   ECDSAP384SHA384t   ED25519t   ED448c         C   s   | |  _  | |  _ | |  _ d  S(   N(   t   namet	   algorithmt   parent(   R   RZ   R[   R\   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyR?   ”   s    			c      6   C   sÏ  d |  j  r d p3 |  j r! d p3 |  j r0 d p3 d |  j p? d |  j rT |  j j pW d |  j rw d t |  j ƒ d pz d |  j p† d |  j rž t |  j ƒ p¡ d |  j	 r¹ t |  j	 ƒ p¼ d |  j
 rÔ t |  j
 ƒ p× d |  j rï t |  j ƒ pò d |  j r
t |  j ƒ pd |  j r%t |  j ƒ p(d |  j r@t |  j ƒ pCd |  j r[t |  j ƒ p^d |  j rvt |  j ƒ pyd |  j r‘t |  j ƒ p”d |  j r¬t |  j ƒ p¯d |  j rÇt |  j ƒ pÊd f S(	   Ns  %spolicy %s:
	inherits %s
	directory %s
	algorithm %s
	coverage %s
	ksk_keysize %s
	zsk_keysize %s
	ksk_rollperiod %s
	zsk_rollperiod %s
	ksk_prepublish %s
	ksk_postpublish %s
	zsk_prepublish %s
	zsk_postpublish %s
	ksk_standby %s
	zsk_standby %s
	keyttl %s
s   constructed s   zone s
   algorithm t    t   UNKNOWNt   Nonet   "(   t   is_constructedt   is_zonet   is_algRZ   R\   t	   directoryR8   R[   t   coveraget   ksk_keysizet   zsk_keysizet   ksk_rollperiodt   zsk_rollperiodt   ksk_prepublisht   ksk_postpublisht   zsk_prepublisht   zsk_postpublisht   ksk_standbyt   zsk_standbyt   keyttl(   R   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   __repr__š   s(    #c         C   s    | d | k o | d k SS(   Ni    i   (    (   R   t   key_sizet
   size_range(    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   __verify_sizeÀ   s    c         C   s   |  j  S(   N(   RZ   (   R   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   get_nameÃ   s    c         C   s   |  j  S(   N(   Ra   (   R   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   constructedÆ   s    c         C   sò  |  j  rL |  j d k	 rL |  j |  j  k rL |  j  GHt d |  j |  j  f f S|  j  r |  j d k	 r |  j |  j  k r t d |  j |  j  f f S|  j rÔ |  j d k	 rÔ |  j |  j k rÔ t d |  j |  j f f S|  j r|  j d k	 r|  j |  j k rt d |  j |  j f f S|  j  rp|  j rp|  j rp|  j |  j |  j  k rpt d d |  j |  j |  j  f f S|  j rÈ|  j rÈ|  j rÈ|  j |  j |  j k rÈt d d |  j |  j |  j f f S|  j d k	 rè|  j	 j
 |  j ƒ } | d k	 rS|  j |  j | ƒ s$t d |  j | f f S|  j |  j | ƒ sSt d	 |  j | f f Sn  |  j d k rŠ|  j d d k rŠt d d |  j f S|  j d k rÁ|  j d d k rÁt d d |  j f S|  j d k rèd |  _ d |  _ qèn  t d f S(   sr    Check if the values in the policy make sense
        :return: True/False if the policy passes validation
        s6   KSK pre-publish period (%d) exceeds rollover period %ds7   KSK post-publish period (%d) exceeds rollover period %ds6   ZSK pre-publish period (%d) exceeds rollover period %ds7   ZSK post-publish period (%d) exceeds rollover period %ds%   KSK pre/post-publish periods (%d/%d) s"   combined exceed rollover period %ds%   ZSK pre/post-publish periods (%d/%d) s&   KSK key size %d outside valid range %ss&   ZSK key size %d outside valid range %sRN   RO   i@   i    s$   KSK key size %d not divisible by 64 s   as required for DSAs$   ZSK key size %d not divisible by 64 RU   RV   RW   RX   RY   R]   N(   RN   RO   (   RN   RO   (   RU   RV   RW   RX   RY   (   Rh   Rj   R_   t   FalseRk   Ri   Rl   Rm   R[   t   valid_key_sz_per_algoR+   t   _Policy__verify_sizeRf   Rg   RA   (   R   t   key_sz_range(    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   validateÉ   sŒ    						   		N(   RE   RF   Rw   Rb   Rc   Ra   R_   Rh   Ri   Rj   Rl   Rk   Rm   Rf   Rg   Rn   Ro   Rp   Re   Rd   Rx   R?   Rq   Ry   Ru   Rv   R{   (    (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyRM   v   sD   
	&			t   PolicyExceptionc           B   s   e  Z RS(    (   RE   RF   (    (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyR|   )  s   t   dnssec_policyc           B   sX  e  Z i  Z i  Z i  Z d! Z d! Z e Z	 d! d  „ Z
 d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z  d „  Z! d „  Z" d „  Z# d „  Z$ d „  Z% d „  Z& d „  Z' d „  Z( d „  Z) d  „  Z* RS("   c         K   s½  t  ƒ  |  _ |  j j |  _ d | k r4 t | d <n  d | k rM t | d <n  t j d |  |  |  _ |  j d ƒ t ƒ  } d  | _	 t
 | _ d | _ d | _ t | ƒ |  j d <d |  j d _	 d |  j d _ d |  j d _ t | ƒ |  j d <d |  j d _	 d |  j d _ d |  j d _ t | ƒ |  j d	 <d	 |  j d	 _	 d	 |  j d	 _ t | ƒ |  j d
 <d
 |  j d
 _	 d
 |  j d
 _ t | ƒ |  j d <d |  j d _	 d |  j d _ t | ƒ |  j d <d |  j d _	 d |  j d _ t | ƒ |  j d <d |  j d _	 d |  j d _ t | ƒ |  j d <d |  j d _	 d |  j d _ t | ƒ |  j d <d |  j d _	 d |  j d _ d  |  j d _ d  |  j d _ t | ƒ |  j d <d |  j d _	 d |  j d _ d  |  j d _ d  |  j d _ t | ƒ |  j d <d |  j d _	 d |  j d _ d  |  j d _ d  |  j d _ t | ƒ |  j d <d |  j d _	 d |  j d _ d  |  j d _ d  |  j d _ | r¹|  j | ƒ n  d  S(   Nt   debugt   write_tablest   modules  policy global { algorithm rsasha256;
                                      key-size ksk 2048;
                                      key-size zsk 2048;
                                      roll-period ksk 0;
                                      roll-period zsk 1y;
                                      pre-publish ksk 1mo;
                                      pre-publish zsk 1mo;
                                      post-publish ksk 1mo;
                                      post-publish zsk 1mo;
                                      standby ksk 0;
                                      standby zsk 0;
                                      keyttl 1h;
                                      coverage 6mo; };
                      policy default { policy global; };i   RN   i   RO   RP   RQ   RR   RS   RT   RU   RV   RW   RX   RY   (   R   t   plexRG   Rw   t   yacct   parsert   setupRM   R_   R[   RA   Rc   Rf   Rg   R   t
   alg_policyRZ   t   load(   R   t   filenameR<   t   p(    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyR?   4  s|    					c         C   s_   | |  _  t |  _ t | ƒ 2 } | j ƒ  } d |  j j _ |  j j	 | ƒ Wd  QXd  |  _  d  S(   Ni    (   R‡   RA   t   initialt   opent   readR   R   R   Rƒ   t   parseR_   (   R   R‡   t   fRC   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyR†   “  s    		c         C   s,   t  |  _ d |  j j _ |  j j | ƒ d  S(   Ni    (   RA   R‰   R   R   R   Rƒ   RŒ   (   R   RC   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyR„     s    	c   	   1   K   s  | j  ƒ  } d  } | |  j k r1 |  j | } n  | d  k re t |  j d ƒ } | | _ t | _ n  | j d  k rÅ | j	 p‡ |  j d } x | r© | j r© | j	 } q W| r¹ | j p¼ d  | _ n  | j |  j
 k rê |  j
 | j } n t d ƒ ‚ | j d  k rV| j	 p|  j d } x# | d  k	 r@| j r@| j	 } qW| oM| j | _ n  | j d  k r¹| j	 px|  j d } x | rš| j rš| j	 } q~W| rª| j p°| j | _ n  | j d  k r| j	 pÛ|  j d } x  | j	 r | j r | j	 } qáW| r| j p| j | _ n  | j d  k r…| j	 pA|  j d } x  | j	 rf| j rf| j	 } qGW| rv| j p|| j | _ n  | j d  k rë| j	 p§|  j d } x  | j	 rÌ| j rÌ| j	 } q­W| rÜ| j pâ| j | _ n  | j d  k rQ| j	 p|  j d } x  | j	 r2| j r2| j	 } qW| rB| j pH| j | _ n  | j d  k r·| j	 ps|  j d } x  | j	 r˜| j r˜| j	 } qyW| r¨| j p®| j | _ n  | j d  k r| j	 pÙ|  j d } x  | j	 rþ| j rþ| j	 } qßW| r| j p| j | _ n  | j d  k rƒ| j	 p?|  j d } x  | j	 rd| j rd| j	 } qEW| rt| j pz| j | _ n  | j d  k ré| j	 p¥|  j d } x  | j	 rÊ| j rÊ| j	 } q«W| rÚ| j pà| j | _ n  | j d  k rI| j	 p|  j d } x# | d  k	 r3| j r3| j	 } qW| o@| j | _ n  d | k s`| d r‹| j ƒ  \ } } | s‹t | ƒ ‚ d  Sn  | S(   Nt   defaults   algorithm not foundt
   novalidate(   R%   R_   t   zone_policyR   t   named_policyRZ   RA   Ra   R[   R\   R…   R|   Rd   Re   Rf   Rg   Rh   Ri   Rj   Rl   Rk   Rm   Rp   R{   (	   R   t   zoneR<   t   zRˆ   R\   t   apt   validt   msg(    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   policy¢  s¦    	c         C   s   d S(   sB   policylist : init policy
                      | policylist policyN(    (   R   Rˆ   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   p_policylist
  s    c         C   s   t  |  _ d S(   s   init :N(   Rw   R‰   (   R   Rˆ   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   p_init  s    c         C   s   d S(   sT   policy : alg_policy
                  | zone_policy
                  | named_policyN(    (   R   Rˆ   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   p_policy  s    c         C   s   | d | d <d S(   sA   name : STR
                | KEYTYPE
                | DATESUFFIXi   i    N(    (   R   Rˆ   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   p_name  s    c         C   s=   | d j  ƒ  | d <t j d | d ƒ s9 t d ƒ ‚ n  d S(   sc   domain : STR
                  | QSTRING
                  | KEYTYPE
                  | DATESUFFIXi   i    s   ^[\w.-][\w.-]*$s   invalid domainN(   t   stripR"   R#   R|   (   R   Rˆ   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   p_domain   s    c         C   s   t  ƒ  |  _ d S(   s   new_policy :N(   RM   t   current(   R   Rˆ   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   p_new_policy*  s    c         C   s4   | d |  j  _ t |  j  _ |  j  |  j | d <d S(   sF   alg_policy : ALGORITHM_POLICY ALGNAME new_policy alg_option_group SEMIi   N(   Rž   RZ   RA   Rc   R…   (   R   Rˆ   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   p_alg_policy.  s    c         C   sL   | d j  d ƒ |  j _ t |  j _ |  j |  j | d j  d ƒ j ƒ  <d S(   s=   zone_policy : ZONE domain new_policy policy_option_group SEMIi   t   .N(   t   rstripRž   RZ   RA   Rb   R   R%   (   R   Rˆ   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   p_zone_policy5  s    #c         C   s.   | d |  j  _ |  j  |  j | d j ƒ  <d S(   s>   named_policy : POLICY name new_policy policy_option_group SEMIi   N(   Rž   RZ   R‘   R%   (   R   Rˆ   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   p_named_policy<  s    c         C   s   | d | d <d S(   s   duration : NUMBERi   i    N(    (   R   Rˆ   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   p_duration_1B  s    c         C   s   d | d <d S(   s   duration : NONEi    N(   R_   (   R   Rˆ   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   p_duration_2G  s    
c         C   s  | d d k r% | d d | d <næ | d d k rJ | d d | d <nÁ | d d k ro | d d	 | d <nœ | d d
 k r” | d d | d <nw | d d k r¹ | d d | d <nR | d d k rÞ | d d | d <n- | d d k rÿ | d | d <n t  d ƒ ‚ d S(   s   duration : NUMBER DATESUFFIXi   t   yi   i€3ái    t   moi ' t   wi€:	 t   di€Q t   hi  t   mii<   t   ss   invalid durationN(   R|   (   R   Rˆ   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   p_duration_3L  s    c         C   s   d S(   s6   policy_option_group : LBRACE policy_option_list RBRACEN(    (   R   Rˆ   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   p_policy_option_group_  s    c         C   s   d S(   sm   policy_option_list : policy_option SEMI
                              | policy_option_list policy_option SEMIN(    (   R   Rˆ   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   p_policy_option_listc  s    c         C   s   d S(   s¥  policy_option : parent_option
                         | directory_option
                         | coverage_option
                         | rollperiod_option
                         | prepublish_option
                         | postpublish_option
                         | keysize_option
                         | algorithm_option
                         | keyttl_option
                         | standby_optionN(    (   R   Rˆ   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   p_policy_optionh  s    c         C   s   d S(   s0   alg_option_group : LBRACE alg_option_list RBRACEN(    (   R   Rˆ   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   p_alg_option_groupu  s    c         C   s   d S(   s^   alg_option_list : alg_option SEMI
                           | alg_option_list alg_option SEMIN(    (   R   Rˆ   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   p_alg_option_listy  s    c         C   s   d S(   s  alg_option : coverage_option
                      | rollperiod_option
                      | prepublish_option
                      | postpublish_option
                      | keyttl_option
                      | keysize_option
                      | standby_optionN(    (   R   Rˆ   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   p_alg_option~  s    c         C   s!   |  j  | d j ƒ  |  j _ d S(   s   parent_option : POLICY namei   N(   R‘   R%   Rž   R\   (   R   Rˆ   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   p_parent_optionˆ  s    c         C   s   | d |  j  _ d S(   s$   directory_option : DIRECTORY QSTRINGi   N(   Rž   Rd   (   R   Rˆ   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   p_directory_optionŒ  s    c         C   s   | d |  j  _ d S(   s#   coverage_option : COVERAGE durationi   N(   Rž   Re   (   R   Rˆ   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   p_coverage_option  s    c         C   s7   | d d k r# | d |  j  _ n | d |  j  _ d S(   s0   rollperiod_option : ROLL_PERIOD KEYTYPE durationi   t   KSKi   N(   Rž   Rh   Ri   (   R   Rˆ   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   p_rollperiod_option”  s    c         C   s7   | d d k r# | d |  j  _ n | d |  j  _ d S(   s0   prepublish_option : PRE_PUBLISH KEYTYPE durationi   R¸   i   N(   Rž   Rj   Rl   (   R   Rˆ   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   p_prepublish_option›  s    c         C   s7   | d d k r# | d |  j  _ n | d |  j  _ d S(   s2   postpublish_option : POST_PUBLISH KEYTYPE durationi   R¸   i   N(   Rž   Rk   Rm   (   R   Rˆ   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   p_postpublish_option¢  s    c         C   s7   | d d k r# | d |  j  _ n | d |  j  _ d S(   s(   keysize_option : KEY_SIZE KEYTYPE NUMBERi   R¸   i   N(   Rž   Rf   Rg   (   R   Rˆ   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   p_keysize_option©  s    c         C   s7   | d d k r# | d |  j  _ n | d |  j  _ d S(   s'   standby_option : STANDBY KEYTYPE NUMBERi   R¸   i   N(   Rž   Rn   Ro   (   R   Rˆ   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   p_standby_option°  s    c         C   s   | d |  j  _ d S(   s   keyttl_option : KEYTTL durationi   N(   Rž   Rp   (   R   Rˆ   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   p_keyttl_option·  s    c         C   s   | d |  j  _ d S(   s$   algorithm_option : ALGORITHM ALGNAMEi   N(   Rž   R[   (   R   Rˆ   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   p_algorithm_option»  s    c         C   sŒ   | r< d |  j  p d |  j  r$ d n d | j | j f GHnL |  j sˆ t d |  j  pW d |  j  rf d n d | rx | j p{ d f ƒ ‚ n  d  S(   Ns   %s%s%d:syntax error near '%s'R]   t   :s   %s%s%d:unexpected end of inputi    (   R‡   R   R   R‰   R|   (   R   Rˆ   (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   p_error¿  s    	N(+   RE   RF   R…   R‘   R   R_   Rž   R‡   RA   R‰   R?   R†   R„   R—   R˜   R™   Rš   R›   R   RŸ   R    R£   R¤   R¥   R¦   R®   R¯   R°   R±   R²   R³   R´   Rµ   R¶   R·   R¹   Rº   R»   R¼   R½   R¾   R¿   RÁ   (    (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyR}   ,  sN   _	
		h					
													
										t   __main__i   R;   i   R~   RŒ   R   RŽ   s   nonexistent.zonei    (   R"   t   ply.lexR;   t   ply.yaccR‚   t   stringR   R   RM   t	   ExceptionR|   R}   RE   t   syst   argvRŠ   t   fileR‹   RC   t   closeR   RD   RA   t   ppR‘   R—   t   et   args(    (    (    s.   /usr/lib/python2.7/site-packages/isc/policy.pyt   <module>   s0   
`³ÿ Ÿ
