/* -*- Mode: C; tab-width: 4 -*- * * Copyright (c) 2002-2003 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. Contains: mDNS platform plugin for VxWorks. Copyright: Copyright (C) 2002-2003 Apple Computer, Inc., All Rights Reserved. */ #ifndef __MDNS_VXWORKS__ #define __MDNS_VXWORKS__ #include "vxWorks.h" #include "semLib.h" #include "mDNSEmbeddedAPI.h" #ifdef __cplusplus extern "C" { #endif // Forward Declarations typedef struct MDNSInterfaceItem MDNSInterfaceItem; //--------------------------------------------------------------------------------------------------------------------------- /*! @struct mDNS_PlatformSupport_struct @abstract Structure containing platform-specific data. */ struct mDNS_PlatformSupport_struct { SEM_ID lockID; SEM_ID readyEvent; mStatus taskInitErr; SEM_ID quitEvent; MDNSInterfaceItem * interfaceList; int commandPipe; int task; mDNSBool quit; long configID; int rescheduled; }; //--------------------------------------------------------------------------------------------------------------------------- /*! @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 ); //--------------------------------------------------------------------------------------------------------------------------- /*! @struct ifaddrs @abstract Interface information */ struct ifaddrs { struct ifaddrs * ifa_next; char * ifa_name; u_int ifa_flags; struct sockaddr * ifa_addr; struct sockaddr * ifa_netmask; struct sockaddr * ifa_dstaddr; void * ifa_data; }; //--------------------------------------------------------------------------------------------------------------------------- /*! @function getifaddrs @abstract Builds a linked list of interfaces. Caller must free using freeifaddrs if successful. */ int getifaddrs( struct ifaddrs **outAddrs ); //--------------------------------------------------------------------------------------------------------------------------- /*! @function freeifaddrs @abstract Frees a linked list of interfaces built with getifaddrs. */ void freeifaddrs( struct ifaddrs *inAddrs ); //--------------------------------------------------------------------------------------------------------------------------- /*! @function sock_pton @abstract Converts a 'p'resentation address string into a 'n'umeric sockaddr structure. @result 0 if successful or an error code on failure. */ int sock_pton( const char *inString, int inFamily, void *outAddr, size_t inAddrSize, size_t *outAddrSize ); //--------------------------------------------------------------------------------------------------------------------------- /*! @function sock_ntop @abstract Converts a 'n'umeric sockaddr structure into a 'p'resentation address string. @result Ptr to 'p'resentation address string buffer if successful or NULL on failure. */ char * sock_ntop( const void *inAddr, size_t inAddrSize, char *inBuffer, size_t inBufferSize ); #ifdef __cplusplus } #endif #endif // __MDNS_VXWORKS__