]>
Commit | Line | Data |
---|---|---|
67c8f8a1 A |
1 | /* -*- Mode: C; tab-width: 4 -*- |
2 | * | |
9f221bca | 3 | * Copyright (c) 2007-2013 Apple Inc. All rights reserved. |
67c8f8a1 A |
4 | * |
5 | * Licensed under the Apache License, Version 2.0 (the "License"); | |
6 | * you may not use this file except in compliance with the License. | |
7 | * You may obtain a copy of the License at | |
8 | * | |
9 | * http://www.apache.org/licenses/LICENSE-2.0 | |
10 | * | |
11 | * Unless required by applicable law or agreed to in writing, software | |
12 | * distributed under the License is distributed on an "AS IS" BASIS, | |
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
14 | * See the License for the specific language governing permissions and | |
15 | * limitations under the License. | |
67c8f8a1 A |
16 | */ |
17 | ||
18 | #ifndef H_HELPER_H | |
19 | #define H_HELPER_H | |
20 | ||
9f221bca A |
21 | #include <os/log.h> |
22 | ||
23 | #define kHelperService "com.apple.mDNSResponder_Helper" | |
24 | ||
25 | #define kmDNSHelperProgramArgs CFSTR("com.apple.mDNSResponderHelper") | |
26 | #define kPreferencesKey_mDNSHelperLog CFSTR("mDNSHelperDebugLogging") | |
27 | ||
28 | #define kHelperMode "HelperMode" | |
29 | #define kHelperReplyStatus "HelperReplyStatusToClient" | |
30 | #define kHelperErrCode "HelperErrorCodefromCall" | |
31 | ||
32 | #define kPrefsNameKey "PreferencesNameKey" | |
33 | #define kPrefsOldName "PreferencesOldName" | |
34 | #define kPrefsNewName "PreferencesNewName" | |
35 | ||
36 | extern int mDNSHelperLogEnabled; | |
37 | ||
38 | extern os_log_t log_handle; | |
39 | ||
40 | typedef enum | |
41 | { | |
42 | bpf_request = 1, | |
43 | set_name = 2, | |
44 | p2p_packetfilter = 3, | |
45 | user_notify = 4, | |
46 | power_req = 5, | |
47 | send_wakepkt = 6, | |
48 | set_localaddr_cacheentry = 7, | |
49 | send_keepalive = 8, | |
50 | retreive_tcpinfo = 9, | |
51 | keychain_getsecrets = 10, | |
52 | autotunnel_setkeys = 11, | |
53 | request_other, | |
54 | } HelperModes; | |
55 | ||
56 | typedef enum | |
57 | { | |
58 | kHelperReply_ACK = 0, | |
59 | } HelperReplyStatusCodes; | |
60 | ||
61 | ||
62 | typedef enum | |
63 | { | |
64 | kHelperErr_NoErr = 0, | |
65 | kHelperErr_DefaultErr = -1, | |
66 | kHelperErr_NotConnected = -2, | |
67 | kHelperErr_NoResponse = -3, | |
68 | kHelperErr_UndefinedMode = -4, | |
69 | kHelperErr_ApiErr = -5, | |
70 | kHelperErr_InvalidTunnelSetKeysOperation = -6, | |
71 | kHelperErr_InvalidNetworkAddress = -7, | |
72 | kHelperErr_ResultTooLarge = -8, | |
73 | kHelperErr_RacoonConfigCreationFailed = -9, | |
74 | kHelperErr_IPsecPolicySocketCreationFailed = -10, | |
75 | kHelperErr_IPsecPolicyCreationFailed = -11, | |
76 | kHelperErr_IPsecPolicySetFailed = -12, | |
77 | kHelperErr_IPsecRemoveSAFailed = -13, | |
78 | kHelperErr_IPsecDisabled = -14, | |
79 | kHelperErr_RoutingSocketCreationFailed = -15, | |
80 | kHelperErr_RouteDeletionFailed = -16, | |
81 | kHelperErr_RouteAdditionFailed = -17, | |
82 | kHelperErr_RacoonStartFailed = -18, | |
83 | kHelperErr_RacoonNotificationFailed = -19, | |
84 | } HelperErrorCodes; | |
85 | ||
67c8f8a1 | 86 | |
67c8f8a1 | 87 | enum mDNSPreferencesSetNameKey |
83fb1e36 A |
88 | { |
89 | kmDNSComputerName = 1, | |
90 | kmDNSLocalHostName | |
91 | }; | |
67c8f8a1 A |
92 | |
93 | enum mDNSUpDown | |
83fb1e36 A |
94 | { |
95 | kmDNSUp = 1, | |
96 | kmDNSDown | |
97 | }; | |
67c8f8a1 A |
98 | |
99 | enum mDNSAutoTunnelSetKeysReplaceDelete | |
83fb1e36 A |
100 | { |
101 | kmDNSAutoTunnelSetKeysReplace = 1, | |
102 | kmDNSAutoTunnelSetKeysDelete | |
103 | }; | |
67c8f8a1 | 104 | |
9f221bca | 105 | |
294beb6e A |
106 | // helper parses the system keychain and returns the information to mDNSResponder. |
107 | // It returns four attributes. Attributes are defined after how they show up in | |
108 | // keychain access utility (the actual attribute name to retrieve these are different). | |
109 | enum mDNSKeyChainAttributes | |
83fb1e36 A |
110 | { |
111 | kmDNSKcWhere, // Where | |
112 | kmDNSKcAccount, // Account | |
113 | kmDNSKcKey, // Key | |
114 | kmDNSKcName // Name | |
115 | }; | |
294beb6e | 116 | |
67c8f8a1 A |
117 | #include "mDNSEmbeddedAPI.h" |
118 | #include "helpermsg-types.h" | |
119 | ||
120 | extern const char *mDNSHelperError(int errornum); | |
32bb7e43 | 121 | |
51601d48 | 122 | extern mStatus mDNSHelperInit(void); |
9f221bca A |
123 | |
124 | ||
32bb7e43 A |
125 | extern void mDNSRequestBPF(void); |
126 | extern int mDNSPowerRequest(int key, int interval); | |
263eeeab | 127 | extern int mDNSSetLocalAddressCacheEntry(int ifindex, int family, const v6addr_t ip, const ethaddr_t eth); |
83fb1e36 | 128 | extern void mDNSNotify(const char *title, const char *msg); // Both strings are UTF-8 text |
32bb7e43 A |
129 | extern void mDNSPreferencesSetName(int key, domainlabel *old, domainlabel *new); |
130 | extern int mDNSKeychainGetSecrets(CFArrayRef *secrets); | |
32bb7e43 | 131 | extern int mDNSAutoTunnelSetKeys(int replacedelete, v6addr_t local_inner, |
83fb1e36 A |
132 | v6addr_t local_outer, short local_port, v6addr_t remote_inner, |
133 | v6addr_t remote_outer, short remote_port, const char *const prefix, const domainname *const fqdn); | |
1f519c61 | 134 | extern void mDNSSendWakeupPacket(unsigned ifid, char *eth_addr, char *ip_addr, int iteration); |
83fb1e36 | 135 | extern void mDNSPacketFilterControl(uint32_t command, char * ifname, uint32_t count, pfArray_t portArray, pfArray_t protocolArray); |
9f221bca | 136 | extern void mDNSSendKeepalive(const v6addr_t sadd, const v6addr_t dadd, uint16_t lport, uint16_t rport, unsigned seq, unsigned ack, uint16_t win); |
51601d48 | 137 | 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); |
9f221bca A |
138 | |
139 | extern void RequestBPF(void); | |
140 | extern void PreferencesSetName(int key, const char* old, const char* new); | |
141 | extern void PacketFilterControl(uint32_t command, const char * ifname, uint32_t count, pfArray_t portArray, pfArray_t protocolArray); | |
142 | extern void UserNotify(const char *title, const char *msg); // Both strings are UTF-8 text | |
143 | extern void PowerRequest(int key, int interval, int *error); | |
144 | extern void SendWakeupPacket(unsigned int ifid, const char *eth_addr, const char *ip_addr, int iteration); | |
145 | extern void SetLocalAddressCacheEntry(int ifindex, int family, const v6addr_t ip, const ethaddr_t eth, int *err); | |
146 | 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); | |
147 | 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); | |
148 | extern void KeychainGetSecrets(__unused unsigned int *numsecrets,__unused unsigned long *secrets, __unused unsigned int *secretsCnt, __unused int *err); | |
149 | extern int HelperAutoTunnelSetKeys(int replacedelete, const v6addr_t loc_inner, const v6addr_t loc_outer6, uint16_t loc_port, const v6addr_t rmt_inner, | |
150 | const v6addr_t rmt_outer6, uint16_t rmt_port, const char *id, int *err); | |
151 | extern void helper_exit(void); | |
67c8f8a1 A |
152 | |
153 | #endif /* H_HELPER_H */ |