File: //lib/python3.6/site-packages/sshuttle/methods/__pycache__/tproxy.cpython-36.pyc
3
7��]V* � @ s& d dl Z d dlmZ d dlmZ d dlmZmZmZ d dl m
Z
d dlmZmZm
Z
dZy d dlZeejd� eZdZW nR ek
r� y d dlZeejd� eZd ZW n ek
r� d dlZY nX Y nX d
ZdZeZdZd
ZeZedkr�dd� Zned k�r
dd� Zndd� ZG dd� de
�ZdS )� N)�
subnet_weight)�family_to_string)�ipt�ipt_ttl�ipt_chain_exists)�
BaseMethod)�debug1�debug3�Fatal�recvmsg�python�
socket_ext� � �) �J c C s6 t d� | jdtjd��\}}}}d }d }� x�|D ]�\}} }
|tjkr�| tkr�tjd|
dd� �\}}tj|�}|tj kr�d}d}
nt
d| ��tj||
|||
� �}||f}P q2|tko�| t
kr2tjd|
dd� �\}}tj|�}|tjkr�d}d }
nt
d| ��tj||
|||
� �}||f}P q2W |||fS )
Nz!Accept UDP python using recvmsg.
i � z=HHr � zUnsupported socket type '%s'� � )r r �socket�
CMSG_SPACE�SOL_IP�IP_ORIGDSTADDR�struct�unpack�htons�AF_INETr
� inet_ntop�SOL_IPV6�IPV6_ORIGDSTADDR�AF_INET6)�listener�bufsize�dataZancdata�_�srcip�dstip�family�
cmsg_level� cmsg_type� cmsg_data�port�start�length�ip� r0 �/usr/lib/python3.6/tproxy.py�recv_udp"