summaryrefslogtreecommitdiffstats
path: root/mDNSResponder/mDNSMacOS9/mDNSLibrary.c
diff options
context:
space:
mode:
Diffstat (limited to 'mDNSResponder/mDNSMacOS9/mDNSLibrary.c')
-rw-r--r--mDNSResponder/mDNSMacOS9/mDNSLibrary.c63
1 files changed, 63 insertions, 0 deletions
diff --git a/mDNSResponder/mDNSMacOS9/mDNSLibrary.c b/mDNSResponder/mDNSMacOS9/mDNSLibrary.c
new file mode 100644
index 00000000..6328395c
--- /dev/null
+++ b/mDNSResponder/mDNSMacOS9/mDNSLibrary.c
@@ -0,0 +1,63 @@
+/* -*- 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 <CodeFragments.h>
+#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();
+}