
                         d    d dl Z d dlZd dlZd Zej                  dk(  r ee d      s e        yyy)    Nc                     dd l  G fddj                         G fddj                        t        d      raj                  j                  j
                  j                  j                  j                  j                  j                  j                  n	d } | | | fd}fd	}|t        _	        |t        _
        y )
Nr   c                   4    e Zd ZdW  j                  dz  fgZy)#inject_into_socket.<locals>.in_addrS_addr   N__name__
__module____qualname__c_ubyte_fields_ctypess   )lib/third_party/win_inet_pton/__init__.pyin_addrr      s    v~~123    r   c                   4    e Zd ZdW  j                  dz  fgZy)$inject_into_socket.<locals>.in6_addrByte   Nr   r   s   r   in6_addrr      s    V^^b012r   r   windllc                      t        d      )Nz2Invalid platform. ctypes.windll must be available.)SystemError r   r   not_windowsz'inject_into_socket.<locals>.not_windows(   s    RSSr   c                    t         j                  d   dkD  rt        |t              rt	        d      | t
        j                  k(  r
d}        }n(| t
        j                  k(  r
d} 
       }nt        d      	j                  |      } 	j                  |      |	j                  |            }|dk(  rK| t
        j                  k(  r	j                  |j                  d      S 	j                  |j                  d      S |dk(  rt        j                  d	              }|d
k(  rt        j                  d      }n|dk(  rt        d      }nt        d      }||_        |)Nr      z-inet_pton() argument 2 must be str, not bytes   unknown address family   r   r   z-illegal IP address string passed to inet_pton?'  i'  zbad addressunknown error from inet_ntop)sysversion_info
isinstancebytes	TypeErrorsocketAF_INETAF_INET6OSError	c_wchar_pc_intbyref	string_atr   r   errorerrno)address_family	ip_stringfamilyaddrreterre	InetPtonWWSAGetLastErrorr   r   r   s          r   	inet_ptonz%inject_into_socket.<locals>.inet_pton/   s5   A"z)U'CKLLV^^+F9Dv.F:D233$$Y/	V,id9KL!8/''Q77''		266AX,,NOO!#Ce|LL!9:M*:;AGGr   c                    | t         j                  k(  r[        }t        |      j                  |j                        k7  rt        d      j                  |j                  |d       d}d}ny| t         j                  k(  r[        }t        |      j                  |j                        k7  rt        d      j                  |j                  |d       d}d}nt        d      j                  |      } 	j                  |      j                  |      j                  |      j                  |            }|* 
       }|dk(  rt        d      }nt        d	      }||_        j                  ||      j                  d
      S )Nz$packed IP wrong length for inet_ntopr   r   r   .   r   r    r"   r#    )r)   r*   lensizeofr   
ValueErrormemmover+   r   create_unicode_bufferr.   r/   r,   r2   
wstring_atrstrip)r3   	packed_ipr6   
buffer_lenr5   bufferr7   r8   r9   	InetNtopWr;   r   r   r   s            r   	inet_ntopz%inject_into_socket.<locals>.inet_ntopQ   sV   V^^+9D9~t{{!;; !GHHNN4;;	15JFv.:D9~tyy!99 !GHHNN499i4JF566--j9LL LLLL MM&!	
 ;!#Ce|78:;AG  4;;FCCr   )r   	Structurehasattrr   ws2_32rJ   r:   r;   r)   r<   rK   )	r   r<   rK   rJ   r:   r;   r   r   r   s	      @@@@@@r   inject_into_socketrO      s    4&"" 436## 3 vx  MM((22	 MM((22	 !--..>>	T  		%   D%D %DP !F Fr   ntr<   )r)   osr$   rO   namerM   r   r   r   <module>rS      s:     	 
o!d 77d?76;7 8?r   