aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy/platform/osx.py
blob: fa51a2db0a52ad9cbb8e8c42432e9dfdfbdf109e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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