#pragma once #include #include // taken from an older apple SDK // some fields are different from BSDs #define DIOCNATLOOK _IOWR('D', 23, struct pfioc_natlook) enum { PF_INOUT, PF_IN, PF_OUT, PF_FWD }; 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; /* 128-bit address */ #define v4 pfa.v4 #define v6 pfa.v6 #define addr8 pfa.addr8 #define addr16 pfa.addr16 #define addr32 pfa.addr32 }; union pf_state_xport { u_int16_t port; u_int16_t call_id; u_int32_t spi; }; struct pfioc_natlook { struct pf_addr saddr; struct pf_addr daddr; struct pf_addr rsaddr; struct pf_addr rdaddr; 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; };