diff options
Diffstat (limited to 'mDNSResponder/mDNSVxWorks/mDNSVxWorks.h')
-rw-r--r-- | mDNSResponder/mDNSVxWorks/mDNSVxWorks.h | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/mDNSResponder/mDNSVxWorks/mDNSVxWorks.h b/mDNSResponder/mDNSVxWorks/mDNSVxWorks.h new file mode 100644 index 00000000..afd41e36 --- /dev/null +++ b/mDNSResponder/mDNSVxWorks/mDNSVxWorks.h @@ -0,0 +1,122 @@ +/* -*- Mode: C; tab-width: 4 -*- + * + * Copyright (c) 2002-2005 Apple Computer, Inc. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __MDNS_VXWORKS_H__ +#define __MDNS_VXWORKS_H__ + +#include "vxWorks.h" +#include "config.h" + +#include "semLib.h" + +#include "CommonServices.h" +#include "DebugServices.h" + +#ifdef __cplusplus +extern "C" { +#endif + +// Forward Declarations + +typedef struct NetworkInterfaceInfoVxWorks NetworkInterfaceInfoVxWorks; + +//--------------------------------------------------------------------------------------------------------------------------- +/*! @struct SocketSet + + @abstract Data for IPv4 and IPv6 sockets. + */ + +typedef struct SocketSet SocketSet; +struct SocketSet +{ + NetworkInterfaceInfoVxWorks * info; + SocketRef sockV4; + SocketRef sockV6; +}; + +//--------------------------------------------------------------------------------------------------------------------------- +/*! @struct NetworkInterfaceInfoVxWorks + + @abstract Interface info for VxWorks. + */ + +struct NetworkInterfaceInfoVxWorks +{ + NetworkInterfaceInfo ifinfo; // MUST be the first element in this structure. + NetworkInterfaceInfoVxWorks * next; + mDNSu32 exists; // 1 = currently exists in getifaddrs list; 0 = doesn't. + // 2 = exists, but McastTxRx state changed. + mDNSs32 lastSeen; // If exists == 0, last time this interface appeared in getifaddrs list. + mDNSu32 scopeID; // Interface index / IPv6 scope ID. + int family; // Socket address family of the primary socket. + mDNSBool multicast; + SocketSet ss; +}; + +//--------------------------------------------------------------------------------------------------------------------------- +/*! @struct mDNS_PlatformSupport_struct + + @abstract Data for mDNS platform plugin. + */ + +struct mDNS_PlatformSupport_struct +{ + NetworkInterfaceInfoVxWorks * interfaceList; + SocketSet unicastSS; + domainlabel userNiceLabel; + domainlabel userHostLabel; + + SEM_ID lock; + SEM_ID initEvent; + mStatus initErr; + SEM_ID quitEvent; + int commandPipe; + int taskID; + mDNSBool quit; +}; + +//--------------------------------------------------------------------------------------------------------------------------- +/*! @function mDNSReconfigure + + @abstract Tell mDNS that the configuration has changed. Call when IP address changes, link goes up after being down, etc. + + @discussion + + VxWorks does not provide a generic mechanism for getting notified when network interfaces change so this routines + provides a way for BSP-specific code to signal mDNS that something has changed and it should re-build its interfaces. + */ + +void mDNSReconfigure( void ); + +//--------------------------------------------------------------------------------------------------------------------------- +/*! @function mDNSDeferIPv4 + + @abstract Tells mDNS whether to defer advertising of IPv4 interfaces. + + @discussion + + To workaround problems with clients getting a link-local IPv4 address before a DHCP address is acquired, this allows + external code to defer advertising of IPv4 addresses until a DHCP lease has been acquired (or it times out). + */ + +void mDNSDeferIPv4( mDNSBool inDefer ); + +#ifdef __cplusplus +} +#endif + +#endif // __MDNS_VXWORKS_H__ |