Viewing File: /opt/alt/python35/lib64/python3.5/__pycache__/ipaddress.cpython-35.opt-2.pyc



]'@s dZddlZdZdZGdddeZGdddeZd	d
Zddd
ZddZ	ddZ
ddZddZddZ
ddZddZddZddZd d!ZGd"d#d#ZejGd$d%d%eZejGd&d'd'eZGd(d)d)ZGd*d+d+eeZGd,d-d-eZGd.d/d/eeZGd0d1d1Zee_Gd2d3d3ZGd4d5d5eeZGd6d7d7eZGd8d9d9eeZ Gd:d;d;Z!e!e_dS)<z1.0N c@seZdZdS)AddressValueErrorN)__name__
__module____qualname__rr./opt/alt/python35/lib64/python3.5/ipaddress.pyrsrc@seZdZdS)NetmaskValueErrorN)rrrrrrr	r
sr
cCsfyt|SWnttfk
r(YnXyt|SWnttfk
rQYnXtd|dS)Nz0%r does not appear to be an IPv4 or IPv6 address)IPv4Addressrr
IPv6Address
ValueError)addressrrr	
ip_addresssrTcCslyt||SWnttfk
r+YnXyt||SWnttfk
rWYnXtd|dS)Nz0%r does not appear to be an IPv4 or IPv6 network)IPv4Networkrr
IPv6Networkr
)rstrictrrr	
ip_network9srcCsfyt|SWnttfk
r(YnXyt|SWnttfk
rQYnXtd|dS)Nz2%r does not appear to be an IPv4 or IPv6 interface)
IPv4Interfacerr

IPv6Interfacer
)rrrr	ip_interfaceWsrcCs9y|jddSWntk
r4tdYnXdS)Nbigz&Address negative or too large for IPv4)to_bytes
OverflowErrorr
)rrrr	v4_int_to_packedzs
rcCs9y|jddSWntk
r4tdYnXdS)Nrz&Address negative or too large for IPv6)rrr
)rrrr	v6_int_to_packeds

rcCs;t|jd}t|dkr7td||S)N/zOnly one '/' permitted in %r)strsplitlenr)raddrrrr	_split_optional_netmasksr$ccsit|}t|}}x;|D]3}|j|jdkrP||fV|}|}q#W||fVdS)N)iternext_ip)	addressesitfirstlastiprrr	_find_address_ranges


r.cCs,|dkr|St|||d@jS)Nrr%)min
bit_length)Znumberbitsrrr	_count_righthand_zero_bitssr2ccs?t|tot|ts*td|j|jkrRtd||f||krjtd|jdkrt}n$|jdkrt}ntd|j}|j}|j}xw||kr:t	t
||||djd}||||f}|V|d|>7}|d|jkrPqWdS)Nz1first and last must be IP addresses, not networksz%%s and %s are not of the same versionz*last IP address must be greater than firstrzunknown IP versionr%)
isinstance_BaseAddress	TypeErrorversionr
rr_max_prefixlenr(r/r2r0	_ALL_ONES)r+r,r-Zip_bitsZ	first_intZlast_intZnbitsnetrrr	summarize_address_ranges0					r;ccst|}i}xj|r~|j}|j}|j|}|dkr[|||<q||kr||=|j|qWd}xFt|jD]2}|dk	r|j|jkrq|V|}qWdS)N)listpopsupernetgetappendsortedvaluesbroadcast_address)r)Zto_mergesubnetsr:r>Zexistingr,rrr	_collapse_addresses_internals$	
rEcCsg}g}g}x*|D]"}t|trt|rd|dj|jkrdtd||df|j|q|j|jkr|r|dj|jkrtd||dfy|j|jWq;tk
r|j|j	Yq;Xq|r.|dj|jkr.td||df|j|qWt
t|}|rx0t|D]"\}}|j
t||qdWt||S)	Nr%z%%s and %s are not of the same versionrFrFrFrFrF)r4r5_versionr6r@
_prefixlenr8r-AttributeErrornetwork_addressrAsetr.extendr;rE)r)ZaddrsZipsZnetsr-r+r,rrr	collapse_addresses2s4

rMcCs6t|tr|jSt|tr2|jStS)N)r4_BaseNetwork_get_networks_keyr5_get_address_keyNotImplemented)objrrr	get_mixed_type_keyhs


rSc@seZdZfZeddZeddZeddZeddZd	d
Z	ddZ
ed
dZeddZ
eddZeddZeddZddZdS)_IPAddressBasecCs
|jS)N)_explode_shorthand_ip_string)selfrrr	explodedsz_IPAddressBase.explodedcCs
t|S)N)r )rVrrr	
compressedsz_IPAddressBase.compressedcCs
|jS)N)_reverse_pointer)rVrrr	reverse_pointers	z_IPAddressBase.reverse_pointercCs#dt|f}t|dS)Nz%200s has no version specified)typeNotImplementedError)rVmsgrrr	r7sz_IPAddressBase.versioncCsc|dkr+d}t|||jf||jkr_d}t|||j|jfdS)Nrz-%d (< 0) is not permitted as an IPv%d addressz2%d (>= 2**%d) is not permitted as an IPv%d address)rrGr9r8)rVrr]rrr	_check_int_addresssz!_IPAddressBase._check_int_addresscCsAt|}||kr=d}t|||||jfdS)Nz6%r (len %d != %d) is not permitted as an IPv%d address)r"rrG)rVrZexpected_lenZaddress_lenr]rrr	_check_packed_addresss
z$_IPAddressBase._check_packed_addresscCs|j|j|?AS)N)r9)cls	prefixlenrrr	_ip_int_from_prefixsz"_IPAddressBase._ip_int_from_prefixc	Cs|t||j}|j|}||?}d|>d}||krx|jd}|j|d}d}t|||S)Nr%rz&Netmask pattern %r mixes zeroes & ones)r2r8rr
)	r`ip_intZtrailing_zeroesraZleading_onesZall_onesZbyteslenZdetailsr]rrr	_prefix_from_ip_ints



z"_IPAddressBase._prefix_from_ip_intcCsd|}t|ddS)Nz%r is not a valid netmask)r
)r`Znetmask_strr]rrr	_report_invalid_netmasks
z&_IPAddressBase._report_invalid_netmaskcCstjj|s|j|yt|}Wntk
rP|j|YnXd|kok|jkns}|j||S)Nr)_BaseV4_DECIMAL_DIGITS
issupersetrfintr
r8)r`Z
prefixlen_strrarrr	_prefix_from_prefix_strings


z)_IPAddressBase._prefix_from_prefix_stringcCsy|j|}Wntk
r4|j|YnXy|j|SWntk
rZYnX||jN}y|j|SWntk
r|j|YnXdS)N)_ip_int_from_stringrrfrer
r9)r`ip_strrdrrr	_prefix_from_ip_strings



z%_IPAddressBase._prefix_from_ip_stringcCs|jt|ffS)N)	__class__r )rVrrr	
__reduce__sz_IPAddressBase.__reduce__N)rrr	__slots__propertyrWrXrZr7r^r_classmethodrbrerfrkrnrprrrr	rTs	
"rTc@seZdZfZddZddZddZddZd	d
ZddZ	d
dZ
ddZddZddZ
dS)r5cCs|jS)N)r()rVrrr	__int__&sz_BaseAddress.__int__cCsCy&|j|jko$|j|jkSWntk
r>tSYnXdS)N)r(rGrIrQ)rVotherrrr	__eq__)s

z_BaseAddress.__eq__cCsat|tstS|j|jkr;td||f|j|jkr]|j|jkSdS)Nz%%s and %s are not of the same versionF)r4r5rQrGr6r()rVrurrr	__lt__0sz_BaseAddress.__lt__cCs*t|tstS|jt||S)N)r4rjrQro)rVrurrr	__add__<sz_BaseAddress.__add__cCs*t|tstS|jt||S)N)r4rjrQro)rVrurrr	__sub__Asz_BaseAddress.__sub__cCsd|jjt|fS)Nz%s(%r))rorr )rVrrr	__repr__Fsz_BaseAddress.__repr__cCst|j|jS)N)r _string_from_ip_intr()rVrrr	__str__Isz_BaseAddress.__str__cCsttt|jS)N)hashhexrjr()rVrrr	__hash__Lsz_BaseAddress.__hash__cCs
|j|fS)N)rG)rVrrr	rPOsz_BaseAddress._get_address_keycCs|j|jffS)N)ror()rVrrr	rpRsz_BaseAddress.__reduce__N)rrrrqrtrvrwrxryrzr|rrPrprrrr	r5s	r5c@seZdZddZddZddZddZd	d
ZddZd
dZ	ddZ
ddZddZddZ
eddZeddZeddZeddZedd Zed!d"Zed#d$Zed%d&Zd'd(Zd)d*Zd+d,Zd-d.d/d0Zd-d.d1d2Zed3d4Zed5d6Zed7d8Zed9d:Zed;d<Z ed=d>Z!ed?d@Z"d.S)ArNcCs
i|_dS)N)_cache)rVrrrr	__init___sz_BaseNetwork.__init__cCsd|jjt|fS)Nz%s(%r))rorr )rVrrr	rzbsz_BaseNetwork.__repr__cCsd|j|jfS)Nz%s/%d)rJra)rVrrr	r|esz_BaseNetwork.__str__ccsNt|j}t|j}x)t|d|D]}|j|Vq2WdS)Nr%)rjrJrCrange_address_class)rVnetwork	broadcastxrrr	hostshsz_BaseNetwork.hostsccsNt|j}t|j}x)t||dD]}|j|Vq2WdS)Nr%)rjrJrCrr)rVrrrrrr	__iter__tsz_BaseNetwork.__iter__cCst|j}t|j}|dkrQ|||kr@t|j||S|d7}|||krqt|j||SdS)Nrr%)rjrJrC
IndexErrorr)rVnrrrrr	__getitem__zs
z_BaseNetwork.__getitem__cCst|tstS|j|jkr;td||f|j|jkr]|j|jkS|j|jkr|j|jkSdS)Nz%%s and %s are not of the same versionF)r4rNrQrGr6rJnetmask)rVrurrr	rwsz_BaseNetwork.__lt__cCsayD|j|jkoB|j|jkoBt|jt|jkSWntk
r\tSYnXdS)N)rGrJrjrrIrQ)rVrurrr	rvs 
z_BaseNetwork.__eq__cCs tt|jt|jAS)N)r}rjrJr)rVrrr	rsz_BaseNetwork.__hash__cCs`|j|jkrdSt|tr)dSt|jt|jkoYt|jkSSdS)NF)rGr4rNrjrJr(rC)rVrurrr	__contains__s z_BaseNetwork.__contains__cCs:|j|kp9|j|kp9|j|kp9|j|kS)N)rJrC)rVrurrr	overlapssz_BaseNetwork.overlapscCsT|jjd}|dkrP|jt|jt|jB}||jd<|S)NrC)rr?rrjrJhostmask)rVrrrr	rCs
z_BaseNetwork.broadcast_addresscCsN|jjd}|dkrJ|jt|j|jA}||jd<|S)Nr)rr?rrjrr9)rVrrrr	rs

z_BaseNetwork.hostmaskcCsd|j|jfS)Nz%s/%d)rJrH)rVrrr	with_prefixlensz_BaseNetwork.with_prefixlencCsd|j|jfS)Nz%s/%s)rJr)rVrrr	with_netmasksz_BaseNetwork.with_netmaskcCsd|j|jfS)Nz%s/%s)rJr)rVrrr	
with_hostmasksz_BaseNetwork.with_hostmaskcCst|jt|jdS)Nr%)rjrCrJ)rVrrr	
num_addressessz_BaseNetwork.num_addressescCs#dt|f}t|dS)Nz%%200s has no associated address class)r[r\)rVr]rrr	rsz_BaseNetwork._address_classcCs|jS)N)rH)rVrrr	rasz_BaseNetwork.prefixlenccs|j|jks(td||ft|tsGtd||j|jkoh|j|jkstd||f||krdS|jd|j|jf}|j	\}}x||kru||kru|j|jkr|j|jkr|V|j	\}}q|j|jkrY|j|jkrY|V|j	\}}qt
d|||fqW||kr|Vn-||kr|Vnt
d|||fdS)Nz%%s and %s are not of the same versionz%s is not a network objectz%s not contained in %sz%s/%sz3Error performing exclusion: s1: %s s2: %s other: %s)rGr6r4rNrJrCr
rorarDAssertionError)rVrus1s2rrr	address_excludes<$z_BaseNetwork.address_excludecCs|j|jkr(td||f|j|jkr>dS|j|jkrTdS|j|jkrjdS|j|jkrdSdS)Nz"%s and %s are not of the same typer%rrFrF)rGr6rJr)rVrurrr	compare_networks.s!z_BaseNetwork.compare_networkscCs|j|j|jfS)N)rGrJr)rVrrr	rO^sz_BaseNetwork._get_networks_keyr%Nc	cs%|j|jkr|VdS|dk	rg||jkrBtd|dkrZtd||j}|dkrtd|j|}||jkrtd||ft|j}t|jd}t|jd|?}x4t|||D] }|j||f}|VqWdS)Nznew prefix must be longerr%z(cannot set prefixlen_diff and new_prefixrzprefix length diff must be > 0z0prefix length diff %d is invalid for netblock %s)	rHr8r
rjrJrCrrro)	rVprefixlen_diff
new_prefix
new_prefixlenstartendstepZnew_addrcurrentrrr	rDhs,

z_BaseNetwork.subnetscCs|jdkr|S|dk	r_||jkr:td|dkrRtd|j|}|j|}|dkrtd|j|f|jt|jt|j|>@|fS)Nrznew prefix must be shorterr%z(cannot set prefixlen_diff and new_prefixz;current prefixlen is %d, cannot have a prefixlen_diff of %d)rHr
rarorjrJr)rVrrrrrr	r>s 

z_BaseNetwork.supernetcCs|jjo|jjS)N)rJis_multicastrC)rVrrr	rs	z_BaseNetwork.is_multicastcCs|jjo|jjS)N)rJis_reservedrC)rVrrr	rs	z_BaseNetwork.is_reservedcCs|jjo|jjS)N)rJ
is_link_localrC)rVrrr	rsz_BaseNetwork.is_link_localcCs|jjo|jjS)N)rJ
is_privaterC)rVrrr	rs	z_BaseNetwork.is_privatecCs|jS)N)r)rVrrr		is_globals	z_BaseNetwork.is_globalcCs|jjo|jjS)N)rJis_unspecifiedrC)rVrrr	rs	z_BaseNetwork.is_unspecifiedcCs|jjo|jjS)N)rJis_loopbackrC)rVrrr	rs	z_BaseNetwork.is_loopback)#rrrrrzr|rrrrwrvrrrrrrCrrrrrrrarrrOrDr>rrrrrrrrrrr	rNVs>	

	N0
5)rNc
@seZdZfZdZdedZedZeddddd	d
ddd
h	Z	eZ
iZddZe
ddZe
ddZe
ddZe
ddZddZddZddZeddZed d!Zd"S)#rgrrr%
0123456789rrcCs
t|S)N)r )rVrrr	rU0sz$_BaseV4._explode_shorthand_ip_stringcCs||jkrt|tr'|}n7y|j|}Wn!tk
r]|j|}YnXt|j|}||f|j|<|j|S)N)_netmask_cacher4rjrkr
rnrrb)r`argrarrrr	
_make_netmask3s		
z_BaseV4._make_netmaskcCs|std|jd}t|dkrCtd|y tjt|j|dSWn>tk
r}ztd||fdWYdd}~XnXdS)NzAddress cannot be empty.rzExpected 4 octets in %rrz%s in %r)rr!r"rj
from_bytesmap_parse_octetr
)r`rmZoctetsexcrrr	rlKs z_BaseV4._ip_int_from_stringcCs|std|jj|s:d}t||t|dkrbd}t||t|d}|dkr|ddkrd	}t|||d
krtd||S)NzEmpty octet not permittedz#Only decimal digits permitted in %rz$At most 3 characters permitted in %r
r0z3Ambiguous (octal/decimal) value in %r not permittedrzOctet %d (> 255) not permitted)r
rhrir"rj)r`Z	octet_strr]Z	octet_intrrr	resz_BaseV4._parse_octetcCs"djtt|jddS)Nrrr)joinrr r)r`rdrrr	r{sz_BaseV4._string_from_ip_intcCs|jd}t|dkry.x'|D]}t||jkr+dSq+WWntk
rgdSYnXx>t|D]0\}}|dkru|||dkrudSquWdSyt|}Wntk
rdSYnXd|ko|jkSS)NrrFrr%T)r!r"rj_valid_mask_octetsr
	enumerater8)rVrmaskridxyrrr	_is_valid_netmasks"

	 
	z_BaseV4._is_valid_netmaskcs|jd}y&fddtt|D}Wntk
rMdSYnXt|t|krjdS|d|dkrdSdS)	Nrcs%g|]}|jkr|qSr)r).0r)rVrr	
<listcomp>s	z(_BaseV4._is_hostmask.<locals>.<listcomp>Frr%TrF)r!rrjr
r")rVrmr1partsr)rVr	_is_hostmasks
&
	z_BaseV4._is_hostmaskcCs3t|jdddd}dj|dS)Nrr%z
.in-addr.arparF)r r!r)rVZreverse_octetsrrr	rYs"z_BaseV4._reverse_pointercCs|jS)N)r8)rVrrr	
max_prefixlensz_BaseV4.max_prefixlencCs|jS)N)rG)rVrrr	r7sz_BaseV4.versionN)rrrrqrG
IPV4LENGTHr9	frozensetrhrr8rrUrsrrlrr{rrrYrrrr7rrrr	rgs"	'%
	rgc@seZdZdZddZeddZeddZeej	d	d
Z
eej	ddZed
dZeddZ
eddZeddZdS)rr(__weakref__cCst|tr)|j|||_dSt|tra|j|dtj|d|_dSt|}d|krtd||j	||_dS)NrrrzUnexpected '/' in %r)
r4rjr^r(bytesr_rr rrl)rVraddr_strrrr	rs
	zIPv4Address.__init__cCs
t|jS)N)rr()rVrrr	packedszIPv4Address.packedcCs||jjkS)N)
_constants_reserved_network)rVrrr	rs	zIPv4Address.is_reservedcs#tfddjjDS)Nc3s|]}|kVqdS)Nr)rr:)rVrr		<genexpr> sz)IPv4Address.is_private.<locals>.<genexpr>)anyr_private_networks)rVr)rVr	rs
zIPv4Address.is_privatecCs||jjko|jS)N)r_public_networkr)rVrrr	r"szIPv4Address.is_globalcCs||jjkS)N)r_multicast_network)rVrrr	r's	zIPv4Address.is_multicastcCs||jjkS)N)r_unspecified_address)rVrrr	r2s	zIPv4Address.is_unspecifiedcCs||jjkS)N)r_loopback_network)rVrrr	r=szIPv4Address.is_loopbackcCs||jjkS)N)r_linklocal_network)rVrrr	rGszIPv4Address.is_link_localN)r(r)rrrrqrrrrr	functools	lru_cacherrrrrrrrrr	rs#
rc@seZdZddZddZddZddZd	d
Zej	Z	e
ddZe
d
dZe
ddZ
e
ddZdS)rcCs;t|ttfrGtj||t|j|_|j|_	dSt|t
rtj||dt|dkrt|d|_	n|j|_	t|dd|_|jj|_|jj
|_
dSt|}tj||dt|dd|_|jj	|_	|jj|_|jj
|_
dS)Nrr%rF)r4rrjrrrr(rr8rHtupler"rrr$)rVrr#rrr	rTs(zIPv4Interface.__init__cCs d|j|j|jjfS)Nz%s/%d)r{r(rra)rVrrr	r|pszIPv4Interface.__str__cCsZtj||}|s%|tkr)|Sy|j|jkSWntk
rUdSYnXdS)NF)rrvrQrrI)rVru
address_equalrrr	rvts
zIPv4Interface.__eq__cCsktj||}|tkr"tSy,|j|jkpL|j|jkoL|SWntk
rfdSYnXdS)NF)rrwrQrrI)rVruaddress_lessrrr	rws
zIPv4Interface.__lt__cCs|j|jAt|jjAS)N)r(rHrjrrJ)rVrrr	rszIPv4Interface.__hash__cCs
t|jS)N)rr()rVrrr	r-szIPv4Interface.ipcCsd|j|j|jfS)Nz%s/%s)r{r(rH)rVrrr	rszIPv4Interface.with_prefixlencCsd|j|j|jfS)Nz%s/%s)r{r(r)rVrrr	rszIPv4Interface.with_netmaskcCsd|j|j|jfS)Nz%s/%s)r{r(r)rVrrr	rszIPv4Interface.with_hostmaskN)rrrrr|rvrwrrTrprrr-rrrrrrr	rRs	rc@sCeZdZeZdddZeejddZ	dS)rTcCstj||t|ttfrVt||_|j|j\|_	|_
dSt|trt|dkr|d}n	|j}t|d|_|j|\|_	|_
t|j}|t|j	@|kr|rt
d|nt|t|j	@|_dSt|}t|j|d|_t|dkrc|d}n	|j}|j|\|_	|_
|rtt|jt|j	@|jkrt
d|tt|jt|j	@|_|j
|jdkr|j|_dS)Nr%rz%s has host bits setr)rNrr4rjrrrJrr8rrHrr"r
r$rlrr)rVrrrrr#rrr	rs@%
	
	zIPv4Network.__init__cCs3|jtdko'|jtdko2|jS)Nz
100.64.0.0/10)rJrrCr)rVrrr	rs
zIPv4Network.is_globalN)
rrrrrrrrrrrrrrr	rs
Trc@seZdZedZedZedZedZededededededed	ed
ededed
edededgZedZ	e
dZdS)_IPv4Constantsz169.254.0.0/16z127.0.0.0/8z224.0.0.0/4z
100.64.0.0/10z	0.0.0.0/8z
10.0.0.0/8z
172.16.0.0/12z192.0.0.0/29z192.0.0.170/31z192.0.2.0/24z192.168.0.0/16z
198.18.0.0/15z198.51.100.0/24z203.0.113.0/24z240.0.0.0/4z255.255.255.255/32z0.0.0.0N)rrrrrrrrrrrrrrrr	rs(													rc@seZdZfZdZdedZdZedZ	eZ
iZeddZ
edd	Zed
dZedd
ZedddZddZddZeddZeddZdS)_BaseV6r3rr%rcZ0123456789ABCDEFabcdefcCsi||jkr^t|tr'|}n|j|}t|j|}||f|j|<|j|S)N)rr4rjrkrrb)r`rrarrrr	rMs		z_BaseV6._make_netmaskcCs|std|jd}d}t||krUd||f}t|d|dkryt|jj}Wn>tk
r}ztd||fdWYdd}~XnX|jd|d	?d
@|jd|d
@|jd}t||kr,d|d|f}t|d}xStdt|dD]8}	||	sL|dk	r~d|}t||	}qLW|dk	rQ|}
t||d}|d
s|
d8}
|
rd}t|||ds|d8}|rd}t|||j|
|}|dkrd}t||jd|fnt||jkrd}t||j|f|d
sd}t|||dsd}t||t|}
d
}d
}yd
}
x5t|
D]'}	|
d	K}
|
|j	||	O}
qW|
d	|K}
x9t|d
D]'}	|
d	K}
|
|j	||	O}
q=W|
SWn>t
k
r}ztd||fdWYdd}~XnXdS)NzAddress cannot be empty:rz At least %d parts expected in %rrr%z%s in %rz%xriz!At most %d colons permitted in %rz At most one '::' permitted in %rrz0Leading ':' only permitted as part of '::' in %rz1Trailing ':' only permitted as part of '::' in %rz/Expected at most %d other parts with '::' in %rz,Exactly %d parts expected without '::' in %rrFrFrF)rr!r"rr=r(r@
_HEXTET_COUNTr
_parse_hextetr
)r`rmrZ
_min_partsr]Zipv4_intrZ
_max_partsZ
skip_indexiZparts_hiZparts_loZ
parts_skippedrdrrr	rl_s,
 






 



z_BaseV6._ip_int_from_stringcCsW|jj|s"td|t|dkrJd}t||t|dS)NzOnly hex digits permitted in %rrz$At most 4 characters permitted in %rr)_HEX_DIGITSrir
r"rj)r`Z
hextet_strr]rrr	rsz_BaseV6._parse_hextetc	Csd}d}d}d}xit|D][\}}|dkrt|d7}|dkrY|}||kr|}|}q%d}d}q%W|dkr||}|t|kr|dg7}dg|||<|dkrdg|}|S)	Nr%rrrFrFrFrF)rr")	r`hextetsZbest_doublecolon_startZbest_doublecolon_lenZdoublecolon_startZdoublecolon_lenindexZhextetZbest_doublecolon_endrrr	_compress_hextetss.
	


z_BaseV6._compress_hextetsNcs|dkrt|j}||jkr6tdd|fddtdddD}|j|}dj|S)	NzIPv6 address is too largez%032xcs1g|]'}dt||ddqS)z%xrr)rj)rr)hex_strrr	r&s	z/_BaseV6._string_from_ip_int.<locals>.<listcomp>rrrr)rjr(r9r
rrr)r`rdrr)rr	r{s
%z_BaseV6._string_from_ip_intcst|tr!t|j}n-t|trBt|j}nt|}|j|}d|fddtdddD}t|ttfrddj	||j
fSdj	|S)	Nz%032xcs$g|]}||dqS)rr)rr)rrr	r>s	z8_BaseV6._explode_shorthand_ip_string.<locals>.<listcomp>rrrz%s/%dr)r4rr rJrr-rlrrNrrH)rVrmrdrr)rr	rU+s

%z$_BaseV6._explode_shorthand_ip_stringcCs3|jdddjdd}dj|dS)Nr%rrrz	.ip6.arparF)rWreplacer)rVZ
reverse_charsrrr	rYCs"z_BaseV6._reverse_pointercCs|jS)N)r8)rVrrr	rLsz_BaseV6.max_prefixlencCs|jS)N)rG)rVrrr	r7Psz_BaseV6.version)rrrrqrG
IPV6LENGTHr9rrrr8rrsrrlrrr{rUrYrrrr7rrrr	r9s"	h0	rc@seZdZdZddZeddZeddZed	d
ZeddZ	ed
dZ
eejddZ
eddZeddZeddZeddZeddZeddZdS)rr(rcCst|tr)|j|||_dSt|tra|j|dtj|d|_dSt|}d|krtd||j	||_dS)NrrrzUnexpected '/' in %r)
r4rjr^r(rr_rr rrl)rVrrrrr	r[s
	zIPv6Address.__init__cCs
t|jS)N)rr()rVrrr	rszIPv6Address.packedcCs||jjkS)N)rr)rVrrr	rs	zIPv6Address.is_multicastcs#tfddjjDS)Nc3s|]}|kVqdS)Nr)rr)rVrr	rsz*IPv6Address.is_reserved.<locals>.<genexpr>)rr_reserved_networks)rVr)rVr	rs	zIPv6Address.is_reservedcCs||jjkS)N)rr)rVrrr	rszIPv6Address.is_link_localcCs||jjkS)N)r_sitelocal_network)rVrrr	
is_site_localszIPv6Address.is_site_localcs#tfddjjDS)Nc3s|]}|kVqdS)Nr)rr:)rVrr	rsz)IPv6Address.is_private.<locals>.<genexpr>)rrr)rVr)rVr	rs
zIPv6Address.is_privatecCs|jS)N)r)rVrrr	rs	zIPv6Address.is_globalcCs
|jdkS)Nr)r()rVrrr	rs	zIPv6Address.is_unspecifiedcCs
|jdkS)Nr%)r()rVrrr	rs	zIPv6Address.is_loopbackcCs(|jd?dkrdSt|jd@S)Nril)r(r)rVrrr	ipv4_mappeds	zIPv6Address.ipv4_mappedcCs@|jd?dkrdSt|jd?d@t|jd@fS)N`i @l)r(r)rVrrr	teredos
zIPv6Address.teredocCs,|jd?dkrdSt|jd?d@S)Npi Pl)r(r)rVrrr		sixtofours	zIPv6Address.sixtofourN)r(r)rrrrqrrrrrrrrrrrrrrrrrrrrr	rUs$

rc@seZdZddZddZddZddZd	d
Zej	Z	e
ddZe
d
dZe
ddZ
e
ddZe
ddZe
ddZdS)rcCs;t|ttfrGtj||t|j|_|j|_	dSt|t
rtj||dt|dkrt|d|_	n|j|_	t|dd|_|jj|_|jj
|_
dSt|}tj||dt|dd|_|jj|_|jj	|_	|jj
|_
dS)Nrr%rF)r4rrjrrrr(rr8rHrr"rrr$)rVrr#rrr	rs(zIPv6Interface.__init__cCs d|j|j|jjfS)Nz%s/%d)r{r(rra)rVrrr	r|#szIPv6Interface.__str__cCsZtj||}|s%|tkr)|Sy|j|jkSWntk
rUdSYnXdS)NF)rrvrQrrI)rVrurrrr	rv's
zIPv6Interface.__eq__cCsktj||}|tkr"tSy,|j|jkpL|j|jkoL|SWntk
rfdSYnXdS)NF)rrwrQrrI)rVrurrrr	rw3s
zIPv6Interface.__lt__cCs|j|jAt|jjAS)N)r(rHrjrrJ)rVrrr	r?szIPv6Interface.__hash__cCs
t|jS)N)rr()rVrrr	r-DszIPv6Interface.ipcCsd|j|j|jfS)Nz%s/%s)r{r(rH)rVrrr	rHszIPv6Interface.with_prefixlencCsd|j|j|jfS)Nz%s/%s)r{r(r)rVrrr	rMszIPv6Interface.with_netmaskcCsd|j|j|jfS)Nz%s/%s)r{r(r)rVrrr	rRszIPv6Interface.with_hostmaskcCs|jdko|jjS)Nr)r(rr)rVrrr	rWszIPv6Interface.is_unspecifiedcCs|jdko|jjS)Nr%)r(rr)rVrrr	r[szIPv6Interface.is_loopbackN)rrrrr|rvrwrrTrprrr-rrrrrrrrr	r	s	rc@sCeZdZeZdddZddZeddZdS)	rTcCstj||t|ttfrVt||_|j|j\|_	|_
dSt|trt|dkr|d}n	|j}|j|\|_	|_
t|d|_t|j}|t|j	@|kr|rt
d|nt|t|j	@|_dSt|}t|j|d|_t|dkrc|d}n	|j}|j|\|_	|_
|rtt|jt|j	@|jkrt
d|tt|jt|j	@|_|j
|jdkr|j|_dS)Nr%rz%s has host bits setr)rNrr4rrjrrJrr8rrHrr"r
r$rlrr)rVrrrrr#rrr	rps@ 
	
	zIPv6Network.__init__ccsRt|j}t|j}x-t|d|dD]}|j|Vq6WdS)Nr%)rjrJrCrr)rVrrrrrr	rszIPv6Network.hostscCs|jjo|jjS)N)rJrrC)rVrrr	rszIPv6Network.is_site_localN)	rrrrrrrrrrrrrr	r`sNrc@s!eZdZedZedZededededededed	ed
ededg
Zeded
edededededededededededededgZedZdS)_IPv6Constantsz	fe80::/10zff00::/8z::1/128z::/128z
::ffff:0:0/96z100::/64z	2001::/23z2001:2::/48z
2001:db8::/32z2001:10::/28zfc00::/7z::/8z100::/8z200::/7z400::/6z800::/5z1000::/4z4000::/3z6000::/3z8000::/3zA000::/3zC000::/3zE000::/4zF000::/5zF800::/6zFE00::/9z	fec0::/10N)	rrrrrrrrrrrrr	rs*									r)"__version__rrrr
rr
rrrrrr$r.r2r;rErMrSrTtotal_orderingr5rNrgrrrrrrrrrrrrrr	<module>sH#716:uSr	Wz!
Back to Directory File Manager