]> git.saurik.com Git - apple/mdnsresponder.git/blame - mDNSMacOSX/helper.h
mDNSResponder-878.270.2.tar.gz
[apple/mdnsresponder.git] / mDNSMacOSX / helper.h
CommitLineData
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
36extern int mDNSHelperLogEnabled;
37
38extern os_log_t log_handle;
39
40typedef 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
56typedef enum
57{
58 kHelperReply_ACK = 0,
59} HelperReplyStatusCodes;
60
61
62typedef 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 87enum mDNSPreferencesSetNameKey
83fb1e36
A
88{
89 kmDNSComputerName = 1,
90 kmDNSLocalHostName
91};
67c8f8a1
A
92
93enum mDNSUpDown
83fb1e36
A
94{
95 kmDNSUp = 1,
96 kmDNSDown
97};
67c8f8a1
A
98
99enum 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).
109enum 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
120extern const char *mDNSHelperError(int errornum);
32bb7e43 121
51601d48 122extern mStatus mDNSHelperInit(void);
9f221bca
A
123
124
32bb7e43
A
125extern void mDNSRequestBPF(void);
126extern int mDNSPowerRequest(int key, int interval);
263eeeab 127extern int mDNSSetLocalAddressCacheEntry(int ifindex, int family, const v6addr_t ip, const ethaddr_t eth);
83fb1e36 128extern void mDNSNotify(const char *title, const char *msg); // Both strings are UTF-8 text
32bb7e43
A
129extern void mDNSPreferencesSetName(int key, domainlabel *old, domainlabel *new);
130extern int mDNSKeychainGetSecrets(CFArrayRef *secrets);
32bb7e43 131extern 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 134extern void mDNSSendWakeupPacket(unsigned ifid, char *eth_addr, char *ip_addr, int iteration);
83fb1e36 135extern void mDNSPacketFilterControl(uint32_t command, char * ifname, uint32_t count, pfArray_t portArray, pfArray_t protocolArray);
9f221bca 136extern void mDNSSendKeepalive(const v6addr_t sadd, const v6addr_t dadd, uint16_t lport, uint16_t rport, unsigned seq, unsigned ack, uint16_t win);
51601d48 137extern 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
139extern void RequestBPF(void);
140extern void PreferencesSetName(int key, const char* old, const char* new);
141extern void PacketFilterControl(uint32_t command, const char * ifname, uint32_t count, pfArray_t portArray, pfArray_t protocolArray);
142extern void UserNotify(const char *title, const char *msg); // Both strings are UTF-8 text
143extern void PowerRequest(int key, int interval, int *error);
144extern void SendWakeupPacket(unsigned int ifid, const char *eth_addr, const char *ip_addr, int iteration);
145extern void SetLocalAddressCacheEntry(int ifindex, int family, const v6addr_t ip, const ethaddr_t eth, int *err);
146extern 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);
147extern 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);
148extern void KeychainGetSecrets(__unused unsigned int *numsecrets,__unused unsigned long *secrets, __unused unsigned int *secretsCnt, __unused int *err);
149extern 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);
151extern void helper_exit(void);
67c8f8a1
A
152
153#endif /* H_HELPER_H */