]> git.saurik.com Git - apple/mdnsresponder.git/blob - mDNSVxWorks/mDNSVxWorks.h
mDNSResponder-878.70.2.tar.gz
[apple/mdnsresponder.git] / mDNSVxWorks / mDNSVxWorks.h
1 /* -*- Mode: C; tab-width: 4 -*-
2 *
3 * Copyright (c) 2002-2005 Apple Computer, Inc. All rights reserved.
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.
16 */
17
18 #ifndef __MDNS_VXWORKS_H__
19 #define __MDNS_VXWORKS_H__
20
21 #include "vxWorks.h"
22 #include "config.h"
23
24 #include "semLib.h"
25
26 #include "CommonServices.h"
27 #include "DebugServices.h"
28
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
32
33 // Forward Declarations
34
35 typedef struct NetworkInterfaceInfoVxWorks NetworkInterfaceInfoVxWorks;
36
37 //---------------------------------------------------------------------------------------------------------------------------
38 /*! @struct SocketSet
39
40 @abstract Data for IPv4 and IPv6 sockets.
41 */
42
43 typedef struct SocketSet SocketSet;
44 struct SocketSet
45 {
46 NetworkInterfaceInfoVxWorks * info;
47 SocketRef sockV4;
48 SocketRef sockV6;
49 };
50
51 //---------------------------------------------------------------------------------------------------------------------------
52 /*! @struct NetworkInterfaceInfoVxWorks
53
54 @abstract Interface info for VxWorks.
55 */
56
57 struct NetworkInterfaceInfoVxWorks
58 {
59 NetworkInterfaceInfo ifinfo; // MUST be the first element in this structure.
60 NetworkInterfaceInfoVxWorks * next;
61 mDNSu32 exists; // 1 = currently exists in getifaddrs list; 0 = doesn't.
62 // 2 = exists, but McastTxRx state changed.
63 mDNSs32 lastSeen; // If exists == 0, last time this interface appeared in getifaddrs list.
64 mDNSu32 scopeID; // Interface index / IPv6 scope ID.
65 int family; // Socket address family of the primary socket.
66 mDNSBool multicast;
67 SocketSet ss;
68 };
69
70 //---------------------------------------------------------------------------------------------------------------------------
71 /*! @struct mDNS_PlatformSupport_struct
72
73 @abstract Data for mDNS platform plugin.
74 */
75
76 struct mDNS_PlatformSupport_struct
77 {
78 NetworkInterfaceInfoVxWorks * interfaceList;
79 SocketSet unicastSS;
80 domainlabel userNiceLabel;
81 domainlabel userHostLabel;
82
83 SEM_ID lock;
84 SEM_ID initEvent;
85 mStatus initErr;
86 SEM_ID quitEvent;
87 int commandPipe;
88 int taskID;
89 mDNSBool quit;
90 };
91
92 //---------------------------------------------------------------------------------------------------------------------------
93 /*! @function mDNSReconfigure
94
95 @abstract Tell mDNS that the configuration has changed. Call when IP address changes, link goes up after being down, etc.
96
97 @discussion
98
99 VxWorks does not provide a generic mechanism for getting notified when network interfaces change so this routines
100 provides a way for BSP-specific code to signal mDNS that something has changed and it should re-build its interfaces.
101 */
102
103 void mDNSReconfigure( void );
104
105 //---------------------------------------------------------------------------------------------------------------------------
106 /*! @function mDNSDeferIPv4
107
108 @abstract Tells mDNS whether to defer advertising of IPv4 interfaces.
109
110 @discussion
111
112 To workaround problems with clients getting a link-local IPv4 address before a DHCP address is acquired, this allows
113 external code to defer advertising of IPv4 addresses until a DHCP lease has been acquired (or it times out).
114 */
115
116 void mDNSDeferIPv4( mDNSBool inDefer );
117
118 #ifdef __cplusplus
119 }
120 #endif
121
122 #endif // __MDNS_VXWORKS_H__