/* -*- Mode: C; tab-width: 4 -*- * * Copyright (c) 2004 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. */ // Define the required CFM Shared Library entry and exit points #include #include "mDNSEmbeddedAPI.h" // Defines the interface to the client layer above #include "mDNSMacOS9.h" // Defines the specific types needed to run mDNS on this platform mDNS mDNSStorage; static mDNS_PlatformSupport PlatformSupportStorage; // Start off with a default cache of 16K (about 100 records) #define RR_CACHE_SIZE ((16*1024) / sizeof(CacheRecord)) static CacheEntity rrcachestorage[RR_CACHE_SIZE]; mDNSlocal void mDNS_StatusCallback(mDNS *const m, mStatus result) { if (result == mStatus_GrowCache) { // Allocate another chunk of cache storage CacheEntity *storage = OTAllocMem(sizeof(CacheEntity) * RR_CACHE_SIZE); if (storage) mDNS_GrowCache(m, storage, RR_CACHE_SIZE); } } extern pascal OSErr mDNS_CFMInit(const CFragInitBlock *theInitBlock); pascal OSErr mDNS_CFMInit(const CFragInitBlock *theInitBlock) { extern pascal OSErr __initialize(const CFragInitBlock *theInitBlock); __initialize(theInitBlock); // MUST do this first! { mStatus err; THz oldZone = GetZone(); SetZone(SystemZone()); LogMsg("mDNS/DNS-SD with Macsbug breaks -- do not ship this version to customers"); err = mDNS_Init(&mDNSStorage, &PlatformSupportStorage, rrcachestorage, RR_CACHE_SIZE, mDNS_Init_AdvertiseLocalAddresses, mDNS_StatusCallback, mDNS_Init_NoInitCallbackContext); SetZone(oldZone); return((OSErr)err); } } extern void mDNS_CFMTerm(void); void mDNS_CFMTerm(void) { extern pascal void __terminate(void); LogMsg("mDNS_CFMTerm"); mDNS_Close(&mDNSStorage); __terminate(); }