import socket, struct

# Python socket module does not have this constant
DIOCNATLOOK = 23

class Resolver:
    def original_addr(self, csock):
        """
            The following sttruct defintions are plucked from the current XNU source, found here:

                http://www.opensource.apple.com/source/xnu/xnu-1699.26.8/bsd/net/pfvar.h


            union pf_state_xport {
                u_int16_t	port;
                u_int16_t	call_id;
                u_int32_t	spi;
            };

            struct pf_addr {
                union {
                    struct in_addr		v4;
                    struct in6_addr		v6;
                    u_int8_t		addr8[16];
                    u_int16_t		addr16[8];
                    u_int32_t		addr32[4];
                } pfa;

            struct pfioc_natlook {
                struct pf_addr	 saddr;
                struct pf_addr	 daddr;
                struct pf_addr	 rsaddr;
                struct pf_addr	 rdaddr;
            #ifndef NO_APPLE_EXTENSIONS
                union pf_state_xport	sxport;
                union pf_state_xport	dxport;
                union pf_state_xport	rsxport;
                union pf_state_xport	rdxport;
                sa_family_t	 af;
                u_int8_t	 proto;
                u_int8_t	 proto_variant;
                u_int8_t	 direction;
            #else
                u_int16_t	 sport;
                u_int16_t	 dport;
                u_int16_t	 rsport;
                u_int16_t	 rdport;
                sa_family_t	 af;
                u_int8_t	 proto;
                u_int8_t	 direction;
            #endif
            };
        """
        pass