diff options
Diffstat (limited to 'mDNSResponder/mDNSMacOSX/helper.h')
-rw-r--r-- | mDNSResponder/mDNSMacOSX/helper.h | 97 |
1 files changed, 83 insertions, 14 deletions
diff --git a/mDNSResponder/mDNSMacOSX/helper.h b/mDNSResponder/mDNSMacOSX/helper.h index 04332eff..eedf7380 100644 --- a/mDNSResponder/mDNSMacOSX/helper.h +++ b/mDNSResponder/mDNSMacOSX/helper.h @@ -18,7 +18,71 @@ #ifndef H_HELPER_H #define H_HELPER_H -#define kmDNSHelperServiceName "com.apple.mDNSResponderHelper" +#include <os/log.h> + +#define kHelperService "com.apple.mDNSResponder_Helper" + +#define kmDNSHelperProgramArgs CFSTR("com.apple.mDNSResponderHelper") +#define kPreferencesKey_mDNSHelperLog CFSTR("mDNSHelperDebugLogging") + +#define kHelperMode "HelperMode" +#define kHelperReplyStatus "HelperReplyStatusToClient" +#define kHelperErrCode "HelperErrorCodefromCall" + +#define kPrefsNameKey "PreferencesNameKey" +#define kPrefsOldName "PreferencesOldName" +#define kPrefsNewName "PreferencesNewName" + +extern int mDNSHelperLogEnabled; + +extern os_log_t log_handle; + +typedef enum +{ + bpf_request = 1, + set_name = 2, + p2p_packetfilter = 3, + user_notify = 4, + power_req = 5, + send_wakepkt = 6, + set_localaddr_cacheentry = 7, + send_keepalive = 8, + retreive_tcpinfo = 9, + keychain_getsecrets = 10, + autotunnel_setkeys = 11, + request_other, +} HelperModes; + +typedef enum +{ + kHelperReply_ACK = 0, +} HelperReplyStatusCodes; + + +typedef enum +{ + kHelperErr_NoErr = 0, + kHelperErr_DefaultErr = -1, + kHelperErr_NotConnected = -2, + kHelperErr_NoResponse = -3, + kHelperErr_UndefinedMode = -4, + kHelperErr_ApiErr = -5, + kHelperErr_InvalidTunnelSetKeysOperation = -6, + kHelperErr_InvalidNetworkAddress = -7, + kHelperErr_ResultTooLarge = -8, + kHelperErr_RacoonConfigCreationFailed = -9, + kHelperErr_IPsecPolicySocketCreationFailed = -10, + kHelperErr_IPsecPolicyCreationFailed = -11, + kHelperErr_IPsecPolicySetFailed = -12, + kHelperErr_IPsecRemoveSAFailed = -13, + kHelperErr_IPsecDisabled = -14, + kHelperErr_RoutingSocketCreationFailed = -15, + kHelperErr_RouteDeletionFailed = -16, + kHelperErr_RouteAdditionFailed = -17, + kHelperErr_RacoonStartFailed = -18, + kHelperErr_RacoonNotificationFailed = -19, +} HelperErrorCodes; + enum mDNSPreferencesSetNameKey { @@ -38,6 +102,7 @@ enum mDNSAutoTunnelSetKeysReplaceDelete kmDNSAutoTunnelSetKeysDelete }; + // helper parses the system keychain and returns the information to mDNSResponder. // It returns four attributes. Attributes are defined after how they show up in // keychain access utility (the actual attribute name to retrieve these are different). @@ -49,36 +114,40 @@ enum mDNSKeyChainAttributes kmDNSKcName // Name }; -#define ERROR(x, y) x, -enum mDNSHelperErrors -{ - mDNSHelperErrorBase = 2300, - #include "helper-error.h" - mDNSHelperErrorEnd -}; -#undef ERROR - #include "mDNSEmbeddedAPI.h" #include "helpermsg-types.h" extern const char *mDNSHelperError(int errornum); extern mStatus mDNSHelperInit(void); + + extern void mDNSRequestBPF(void); extern int mDNSPowerRequest(int key, int interval); extern int mDNSSetLocalAddressCacheEntry(int ifindex, int family, const v6addr_t ip, const ethaddr_t eth); extern void mDNSNotify(const char *title, const char *msg); // Both strings are UTF-8 text extern void mDNSPreferencesSetName(int key, domainlabel *old, domainlabel *new); extern int mDNSKeychainGetSecrets(CFArrayRef *secrets); -extern void mDNSConfigureServer(int updown, const char *const prefix, const domainname *const fqdn); extern int mDNSAutoTunnelSetKeys(int replacedelete, v6addr_t local_inner, v6addr_t local_outer, short local_port, v6addr_t remote_inner, v6addr_t remote_outer, short remote_port, const char *const prefix, const domainname *const fqdn); extern void mDNSSendWakeupPacket(unsigned ifid, char *eth_addr, char *ip_addr, int iteration); extern void mDNSPacketFilterControl(uint32_t command, char * ifname, uint32_t count, pfArray_t portArray, pfArray_t protocolArray); -extern void mDNSSendKeepalive(v6addr_t sadd, v6addr_t dadd, uint16_t lport, uint16_t rport, unsigned seq, unsigned ack, uint16_t win); +extern void mDNSSendKeepalive(const v6addr_t sadd, const v6addr_t dadd, uint16_t lport, uint16_t rport, unsigned seq, unsigned ack, uint16_t win); extern int mDNSRetrieveTCPInfo(int family, v6addr_t laddr, uint16_t lport, v6addr_t raddr, uint16_t rport, uint32_t *seq, uint32_t *ack, uint16_t *win, int32_t *intfid); -extern void mDNSGetRemoteMAC(mDNS *const m, int family, v6addr_t raddr); -extern void mDNSStoreSPSMACAddress(int family, v6addr_t spsaddr, char *ifname); + +extern void RequestBPF(void); +extern void PreferencesSetName(int key, const char* old, const char* new); +extern void PacketFilterControl(uint32_t command, const char * ifname, uint32_t count, pfArray_t portArray, pfArray_t protocolArray); +extern void UserNotify(const char *title, const char *msg); // Both strings are UTF-8 text +extern void PowerRequest(int key, int interval, int *error); +extern void SendWakeupPacket(unsigned int ifid, const char *eth_addr, const char *ip_addr, int iteration); +extern void SetLocalAddressCacheEntry(int ifindex, int family, const v6addr_t ip, const ethaddr_t eth, int *err); +extern void SendKeepalive(const v6addr_t sadd6, const v6addr_t dadd6, uint16_t lport, uint16_t rport, uint32_t seq, uint32_t ack, uint16_t win); +extern void RetrieveTCPInfo(int family, const v6addr_t laddr, uint16_t lport, const v6addr_t raddr, uint16_t rport, uint32_t *seq, uint32_t *ack, uint16_t *win, int32_t *intfid, int *err); +extern void KeychainGetSecrets(__unused unsigned int *numsecrets,__unused unsigned long *secrets, __unused unsigned int *secretsCnt, __unused int *err); +extern int HelperAutoTunnelSetKeys(int replacedelete, const v6addr_t loc_inner, const v6addr_t loc_outer6, uint16_t loc_port, const v6addr_t rmt_inner, + const v6addr_t rmt_outer6, uint16_t rmt_port, const char *id, int *err); +extern void helper_exit(void); #endif /* H_HELPER_H */ |