Ñò
4L³Vc        
   @   s4  d  d k  Z  d  d k Z d  d k Z d  d k Z d Z d Z d g 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& d" Z' d" Z( e) e  i* ƒ d# j o®e# e  i* d$ ƒ \ Z+ Z, Z- e, e. j	 o&e- d% j oe e+ ƒ Z& e, oÎ e e e, e- ƒ ƒ Z' e) e  i* ƒ d& j oC e% e+ e, e- e  i* d# ƒ Z/ e/ e. j	 o e e/ ƒ Z( qˆe. Z( qÀe" e, e- ƒ Z0 e e! e+ e0 ƒ ƒ Z1 e% e+ e, e- e1 ƒ Z/ e/ e. j	 o e e/ ƒ Z( qÀe. Z( qÊe, d j o'e) e  i* ƒ d& j oe$ e  i* d# ƒ Z, e, e. j	 oã e e e, e- ƒ ƒ Z' e) e  i* ƒ d% j oX e e e, e- ƒ ƒ Z' e% e+ e, e- e  i* d& ƒ Z/ e/ e. j	 o e e/ ƒ Z( q®e. Z( q¸e" e, e- ƒ Z0 e e! e+ e0 ƒ ƒ Z1 e% e+ e, e- e1 ƒ Z/ e/ e. j	 o e e/ ƒ Z( q¸e. Z( q¼e. Z' qÀqÊn e. Z& e, e. j	 oH e- d' j o; e, d j o e e+ ƒ Z& qe e+ ƒ d( e3 e, ƒ Z& q#n e& Ge' Ge( GHd S()   iÿÿÿÿNs   Matthew Kruers   Copyright 2014, Ericssont
   Commercials   0.1s   matthew.kruer@ericsson.comt   Developmentc         C   s.   t  |  ƒ o t t |  ƒ d ƒ i d ƒ Sd  S(   Ni    t   1(   t   validate_netmaskt   int_to_binaryt   ip4_to_integert   count(   t   ip4(    (    s3   /root/cms-softwareonly-base/scripts/ip_validator.pyt   netmask_to_CIDR-   s    c         C   s(   t  |  d ƒ o t t |  d ƒ ƒ Sd  S(   Ni   (   t   validate_CIDRt   integer_to_ip4t   CIDR_to_integer(   t   CIDR(    (    s3   /root/cms-softwareonly-base/scripts/ip_validator.pyt   CIDR_to_netmask2   s    c         C   s?   y! t  i d t i |  ƒ ƒ d SWn t i j
 o t SXd  S(   Ns   !Li    (   t   structt   unpackt   sockett	   inet_atont   errort   False(   R   (    (    s3   /root/cms-softwareonly-base/scripts/ip_validator.pyR   7   s    !c         C   sF   d |  j o
 d j n o  t  i t  i t i d |  ƒ ƒ St Sd  S(   Ni    I       s   !I(   R   t	   inet_ntopt   AF_INETR   t   packR   (   t   ip4n(    (    s3   /root/cms-softwareonly-base/scripts/ip_validator.pyR
   >   s     c         C   sG   y) t  t i t i t i |  ƒ ƒ d ƒ SWn t i j
 o t SXd  S(   Ni   (   t   intt   binasciit   hexlifyR   t	   inet_ptont   AF_INET6R   R   (   t   ip6(    (    s3   /root/cms-softwareonly-base/scripts/ip_validator.pyt   ip6_to_integerE   s    )c            sn   d |  j o
 d j n oH t  |  d ƒ i d ƒ ‰  d i ‡  f d †  t d t ˆ  ƒ d ƒ Dƒ ƒ St Sd  S(   Ni    l	                    t   xi    t   :c         3   s$   x |  ] } ˆ  | | d  !Vq Wd S(   i   N(    (   t   .0R   (   t
   ipv6String(    s3   /root/cms-softwareonly-base/scripts/ip_validator.pys	   <genexpr>O   s   	 i   (   t   formatt   zfillt   joint   xranget   lenR   (   t   ip6n(    (   R"   s3   /root/cms-softwareonly-base/scripts/ip_validator.pyt   integer_to_ip6L   s    0c         C   s   t  |  ƒ d i | ƒ S(   Ni   (   t   binR$   (   t   raw_netmask_intt   max_CIDR(    (    s3   /root/cms-softwareonly-base/scripts/ip_validator.pyR   T   s    c         C   s   t  |  d ƒ S(   Ni   (   R   (   R   (    (    s3   /root/cms-softwareonly-base/scripts/ip_validator.pyt   binary_to_intX   s    c         C   s"   d i  |  d ƒ i | d ƒ } | S(   Nt    R   t   0(   t   rjustt   ljust(   R   R,   t   CIDR_bitmask(    (    s3   /root/cms-softwareonly-base/scripts/ip_validator.pyt   validate_bitmask\   s    c         C   s%   t  | ƒ } t t |  | ƒ ƒ } | S(   N(   t
   CIDR_limitR-   R3   (   t
   valid_CIDRt   ip_verR,   t   valid_netmask_int(    (    s3   /root/cms-softwareonly-base/scripts/ip_validator.pyR   a   s    c         C   s   |  |  d @d j o
 |  d j S(   Ni   i    (    (   t   number(    (    s3   /root/cms-softwareonly-base/scripts/ip_validator.pyt   power_of_twog   s    c         C   sV   t  |  ƒ t j	 o t  |  ƒ d f St |  ƒ t j	 o t |  ƒ d f St t f Sd  S(   Ni   i   (   R   R   R   (   t   raw_ip(    (    s3   /root/cms-softwareonly-base/scripts/ip_validator.pyt
   ip4_or_ip6k   s
    c         C   s,   |  d j o d S|  d j o d St  Sd  S(   Ni   i    i   i€   (   R   (   R6   (    (    s3   /root/cms-softwareonly-base/scripts/ip_validator.pyR4   t   s
    c         C   s½   |  i  d ƒ d j p, |  i  d ƒ d j p |  i  d ƒ d j om d |  j oF |  i d ƒ d } |  i d ƒ d } | o | | f St d  f Sq¹ |  } d  } | | f Sn t d  f Sd  S(	   Nt   .i   R    i   s   ::i   t   /i    (   R   t   splitR   t   None(   t   rawR:   t   raw_CIDR(    (    s3   /root/cms-softwareonly-base/scripts/ip_validator.pyt	   parse_raw}   s    Bc         C   s™   t  |  ƒ \ } } | t j	 o< | d  j	 o/ t | ƒ \ } } t | | ƒ } | | | f S| t j	 o  t | ƒ \ } } | d  | f St t t f Sd  S(   N(   RB   R   R?   R;   R	   (   R@   R:   RA   t   valid_ip_intR6   R5   (    (    s3   /root/cms-softwareonly-base/scripts/ip_validator.pyt   validate_ipŽ   s    c         C   sÛ   t  |  t ƒ o
 |  } n( |  i ƒ  t j	 o t |  ƒ } n t S| d j o< | o1 d | j o t | ƒ j n o | St Sq× nN | d j o< | o1 d | j o t | ƒ j n o | St Sq× n t Sd  S(   Ni   i    i   (   t
   isinstanceR   t   isdigitR   R4   (   RA   R6   R   (    (    s3   /root/cms-softwareonly-base/scripts/ip_validator.pyR	   ›   s     
$$c         C   s   t  t |  ƒ d ƒ S(   Ni   (   t   validate_binary_netmaskR   (   t   netmask(    (    s3   /root/cms-softwareonly-base/scripts/ip_validator.pyR   ³   s    c         C   sM   t  | ƒ } t |  | ƒ } | i d ƒ } | i d ƒ d j o t S| Sd  S(   NR   t   01iÿÿÿÿ(   R4   R   R   t   findR   (   R+   R6   R,   t   binary_netmaskR5   (    (    s3   /root/cms-softwareonly-base/scripts/ip_validator.pyRG   ·   s    c         C   sk   t  | | ƒ } t |  | ƒ } t |  | ƒ } | |  j o t S| | j o t S| | j o t S| Sd  S(   N(   t   num_of_hostst   network_ip_intt   broadcast_ip_intR   (   RC   R5   R6   t   raw_gateway_intt	   hosts_intt   valid_network_ip_intt   valid_broadcast_ip_int(    (    s3   /root/cms-softwareonly-base/scripts/ip_validator.pyt   validate_gateway_ipÁ   s    c         C   s(   t  | ƒ t j o |  | | St Sd  S(   N(   R9   t   TrueR   (   RC   RP   (    (    s3   /root/cms-softwareonly-base/scripts/ip_validator.pyRM   Ï   s    c         C   s0   t  | ƒ t j o |  | | | d St Sd  S(   Ni   (   R9   RT   R   (   RC   RP   (    (    s3   /root/cms-softwareonly-base/scripts/ip_validator.pyRN   Ö   s    c         C   s,   t  | ƒ t j o |  | | d St Sd  S(   Ni   (   R9   RT   R   (   RC   RP   (    (    s3   /root/cms-softwareonly-base/scripts/ip_validator.pyt   default_gatewayÝ   s    c         C   s#   t  | ƒ } t d | |  ƒ } | S(   Ni   (   R4   t   pow(   R5   R6   R,   RP   (    (    s3   /root/cms-softwareonly-base/scripts/ip_validator.pyRL   ä   s    c         C   s"   t  |  ƒ \ } } } | | | f S(   N(   RD   (   R:   RC   R5   R6   (    (    s3   /root/cms-softwareonly-base/scripts/ip_validator.pyt   ip_infoê   s    c         C   sK   t  |  ƒ \ } } } | t j	 o! | t j	 o t | | ƒ } | St Sd  S(   N(   RD   R   RG   (   t
   raw_subnetR+   t   junkR6   R5   (    (    s3   /root/cms-softwareonly-base/scripts/ip_validator.pyt   subnet_infoï   s
    c         C   s]   t  | ƒ } t | ƒ \ } } } | t j	 o' | t j	 o t |  | | | ƒ } | St Sd  S(   N(   R4   RD   R   RS   (   RC   R5   R6   t   raw_gatewayR,   RO   RY   t   valid_gateway_ip_int(    (    s3   /root/cms-softwareonly-base/scripts/ip_validator.pyt   gateway_infoø   s    R.   i   i   i   i   i   R=   (4   t   sysR   R   R   t
   __author__t   __copyright__t   __credits__t   __license__t   __version__t   __maintainer__t	   __email__t
   __status__R   R   R   R
   R   R)   R   R-   R3   R   R9   R;   R4   RB   RD   R	   R   RG   RS   RM   RN   RU   RL   RW   RZ   R]   t   valid_ipt   valid_netmaskt   valid_gateway_ipR'   t   argvRC   R5   R6   R   R\   RP   t   default_gateway_ipR?   t   str(    (    (    s3   /root/cms-softwareonly-base/scripts/ip_validator.pyt   <module>   sœ   0	"																				
									




"