include /Developer/Makefiles/pb_makefiles/platform.make
-MVERS=58
+MVERS = "mDNSResponder-58.1"
install:
cd "$(SRCROOT)/mDNSMacOSX"; pbxbuild install OBJROOT=$(OBJROOT) SYMROOT=$(SYMROOT) DSTROOT=$(DSTROOT) MVERS=$(MVERS)
installsrc:
- ditto mDNSCore ${SRCROOT}/mDNSCore
- ditto mDNSMacOSX ${SRCROOT}/mDNSMacOSX
- ditto Makefile $(SRCROOT)
+ ditto . ${SRCROOT}
installhdrs::
cd "$(SRCROOT)/mDNSMacOSX"; pbxbuild installhdrs OBJROOT=$(OBJROOT) SYMROOT=$(SYMROOT) DSTROOT=$(DSTROOT) MVERS=$(MVERS)
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
Change History (most recent first):
$Log: mDNS.c,v $
+Revision 1.307.2.1 2003/12/03 11:20:27 cheshire
+<rdar://problem/3457718>: Stop and start of a service uses old ip address (with old port number)
+
Revision 1.307 2003/09/09 20:13:30 cheshire
<rdar://problem/3411105> Don't send a Goodbye record if we never announced it
Ammend checkin 1.304: Off-by-one error: By this place in the function we've already decremented
#endif
#define RRIsAddressType(RR) ((RR)->resrec.rrtype == kDNSType_A || (RR)->resrec.rrtype == kDNSType_AAAA)
+#define RRTypeIsAddressType(T) ((T) == kDNSType_A || (T) == kDNSType_AAAA)
#define ResourceRecordIsValidAnswer(RR) ( ((RR)-> resrec.RecordType & kDNSRecordTypeActiveMask) && \
((RR)->Additional1 == mDNSNULL || ((RR)->Additional1->resrec.RecordType & kDNSRecordTypeActiveMask)) && \
}
}
+mDNSlocal mDNSBool HaveSentEntireRRSet(const mDNS *const m, const AuthRecord *const rr, mDNSInterfaceID InterfaceID)
+ {
+ // Try to find another member of this set that we're still planning to send on this interface
+ const AuthRecord *a;
+ for (a = m->ResourceRecords; a; a=a->next)
+ if (a->SendRNow == InterfaceID && a != rr && SameResourceRecordSignature(&a->resrec, &rr->resrec)) break;
+ return (a == mDNSNULL); // If no more members of this set found, then we should set the cache flush bit
+ }
+
// Note about acceleration of announcements to facilitate automatic coalescing of
// multiple independent threads of announcements into a single synchronized thread:
// The announcements in the packet may be at different stages of maturity;
}
// Now try to see if we can fit the update in the same packet (not fatal if we can't)
SetNewRData(&rr->resrec, rr->NewRData, rr->newrdlength);
+ if ((rr->resrec.RecordType & kDNSRecordTypeUniqueMask) && HaveSentEntireRRSet(m, rr, intf->InterfaceID))
+ rr->resrec.rrclass |= kDNSClass_UniqueRRSet; // Temporarily set the cache flush bit so PutResourceRecord will set it
newptr = PutResourceRecord(&response, responseptr, &response.h.numAnswers, &rr->resrec);
+ rr->resrec.rrclass &= ~kDNSClass_UniqueRRSet; // Make sure to clear cache flush bit back to normal state
if (newptr) responseptr = newptr;
SetNewRData(&rr->resrec, OldRData, oldrdlength);
}
else
{
- // If this record is supposed to be unique, see if we've sent its whole set
- if (rr->resrec.RecordType & kDNSRecordTypeUniqueMask)
- {
- // Try to find another member of this set that we're still planning to send on this interface
- const AuthRecord *a;
- for (a = m->ResourceRecords; a; a=a->next)
- if (a->SendRNow == intf->InterfaceID && a != rr && SameResourceRecordSignature(&a->resrec, &rr->resrec)) break;
- if (a == mDNSNULL) // If no more members of this set found
- rr->resrec.rrclass |= kDNSClass_UniqueRRSet; // Temporarily set the cache flush bit so PutResourceRecord will set it
- }
+ if ((rr->resrec.RecordType & kDNSRecordTypeUniqueMask) && HaveSentEntireRRSet(m, rr, intf->InterfaceID))
+ rr->resrec.rrclass |= kDNSClass_UniqueRRSet; // Temporarily set the cache flush bit so PutResourceRecord will set it
newptr = PutResourceRecordTTL(&response, responseptr, &response.h.numAnswers, &rr->resrec, m->SleepState ? 0 : rr->resrec.rroriginalttl);
rr->resrec.rrclass &= ~kDNSClass_UniqueRRSet; // Make sure to clear cache flush bit back to normal state
if (!newptr && response.h.numAnswers) break;
rp = &rr->next;
}
}
+ if (m->rrcache_tail[slot] != rp) debugf("CheckCacheExpiration: Updating m->rrcache_tail[%d] from %p to %p", slot, m->rrcache_tail[slot], rp);
+ m->rrcache_tail[slot] = rp;
m->lock_rrcache = 0;
}
// MUST NOT dereference q again after calling AnswerQuestionWithResourceRecord()
if (m->CurrentQuestion != q) break; // If callback deleted q, then we're finished here
}
+ else if (RRTypeIsAddressType(rr->resrec.rrtype) && RRTypeIsAddressType(q->qtype))
+ if (rr->resrec.namehash == q->qnamehash && SameDomainName(&rr->resrec.name, &q->qname))
+ ShouldQueryImmediately = mDNSfalse;
if (ShouldQueryImmediately && m->CurrentQuestion == q)
{
mDNSu32 oldtotalused = m->rrcache_totalused;
#endif
mDNSu32 slot;
- CacheRecord **rr;
for (slot = 0; slot < CACHE_HASH_SLOTS; slot++)
{
- rr = &(m->rrcache_hash[slot]);
- while (*rr)
+ CacheRecord **rp = &(m->rrcache_hash[slot]);
+ while (*rp)
{
// Records that answer still-active questions are not candidates for deletion
- if ((*rr)->CRActiveQuestion)
- rr=&(*rr)->next;
+ if ((*rp)->CRActiveQuestion)
+ rp=&(*rp)->next;
else
{
- CacheRecord *r = *rr;
- *rr = (*rr)->next; // Cut record from list
+ CacheRecord *rr = *rp;
+ *rp = (*rp)->next; // Cut record from list
m->rrcache_used[slot]--; // Decrement counts
- ReleaseCacheRR(m, r);
+ ReleaseCacheRR(m, rr);
}
}
+ if (m->rrcache_tail[slot] != rp) debugf("GetFreeCacheRR: Updating m->rrcache_tail[%d] from %p to %p", slot, m->rrcache_tail[slot], rp);
+ m->rrcache_tail[slot] = rp;
}
#if MDNS_DEBUGMSGS
debugf("Clear unused records; m->rrcache_totalused was %lu; now %lu", oldtotalused, m->rrcache_totalused);
// If this is an oversized record with external storage allocated, copy rdata to external storage
if (pkt.r.resrec.rdlength > InlineCacheRDSize)
mDNSPlatformMemCopy(pkt.r.resrec.rdata, rr->resrec.rdata, sizeofRDataHeader + pkt.r.resrec.rdlength);
- rr->next = m->rrcache_hash[slot];
- m->rrcache_hash[slot] = rr;
+ rr->next = mDNSNULL; // Clear 'next' pointer
+ *(m->rrcache_tail[slot]) = rr; // Append this record to tail of cache slot list
+ m->rrcache_tail[slot] = &(rr->next); // Advance tail pointer
m->rrcache_used[slot]++;
//debugf("Adding RR %##s to cache (%d)", pkt.r.name.c, m->rrcache_used);
CacheRecordAdd(m, rr);
// even if we believe that we previously had an active representative of this interface.
if ((m->KnownBugs & mDNS_KnownBug_PhantomInterfaces) || FirstOfType || set->InterfaceActive)
{
+ DNSQuestion *q;
+ AuthRecord *rr;
// Use a small amount of randomness:
// In the case of a network administrator turning on an Ethernet hub so that all the connected machines establish link at
// exactly the same time, we don't want them to all go and hit the network with identical queries at exactly the same moment.
if (!m->SuppressSending) m->SuppressSending = m->timenow + (mDNSs32)mDNSRandom((mDNSu32)InitialQuestionInterval);
- DNSQuestion *q;
- AuthRecord *rr;
for (q = m->Questions; q; q=q->next) // Scan our list of questions
if (!q->InterfaceID || q->InterfaceID == set->InterfaceID) // If non-specific Q, or Q on this specific interface,
{ // then reactivate this question
CacheRecord *rrcachestorage, mDNSu32 rrcachesize,
mDNSBool AdvertiseLocalAddresses, mDNSCallback *Callback, void *Context)
{
- mDNSu32 i;
+ mDNSu32 slot;
mDNSs32 timenow;
mStatus result = mDNSPlatformTimeInit(&timenow);
if (result != mStatus_NoError) return(result);
m->rrcache_report = 10;
m->rrcache_free = mDNSNULL;
- for (i = 0; i < CACHE_HASH_SLOTS; i++)
+ for (slot = 0; slot < CACHE_HASH_SLOTS; slot++)
{
- m->rrcache_hash[i] = mDNSNULL;
- m->rrcache_used[i] = 0;
+ m->rrcache_hash[slot] = mDNSNULL;
+ m->rrcache_tail[slot] = &m->rrcache_hash[slot];
+ m->rrcache_used[slot] = 0;
}
mDNS_GrowCache(m, rrcachestorage, rrcachesize);
rrcache_totalused = m->rrcache_totalused;
for (slot = 0; slot < CACHE_HASH_SLOTS; slot++)
+ {
while (m->rrcache_hash[slot])
{
CacheRecord *rr = m->rrcache_hash[slot];
m->rrcache_used[slot]--;
ReleaseCacheRR(m, rr);
}
+ // Reset tail pointer back to empty state (not that it really matters on exit, but we'll do it anyway, for the sake of completeness)
+ m->rrcache_tail[slot] = &m->rrcache_hash[slot];
+ }
debugf("mDNS_Close: RR Cache was using %ld records, %d active", rrcache_totalused, rrcache_active);
if (rrcache_active != m->rrcache_active)
LogMsg("*** ERROR *** rrcache_active %lu != m->rrcache_active %lu", rrcache_active, m->rrcache_active);
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
Change History (most recent first):
$Log: mDNSClientAPI.h,v $
+Revision 1.114.2.3 2003/12/05 00:03:34 cheshire
+<rdar://problem/3487869> Use buffer size MAX_ESCAPED_DOMAIN_NAME instead of 256
+
+Revision 1.114.2.2 2003/12/04 23:30:00 cheshire
+Add "#define MAX_ESCAPED_DOMAIN_NAME 1005", needed for Posix folder to build
+
+Revision 1.114.2.1 2003/12/03 11:07:58 cheshire
+<rdar://problem/3457718>: Stop and start of a service uses old ip address (with old port number)
+
Revision 1.114 2003/08/29 19:44:15 cheshire
<rdar://problem/3400967> Traffic reduction: Eliminate synchronized QUs when a new service appears
1. Use m->RandomQueryDelay to impose a random delay in the range 0-500ms on queries
mStatus_Waiting = 1,
mStatus_NoError = 0,
- // mDNS Error codes are in the range FFFE FF00 (-65792) to FFFE FFFF (-65537)
+ // mDNS return values are in the range FFFE FF00 (-65792) to FFFE FFFF (-65537)
+ // The top end of the range (FFFE FFFF) is used for error codes;
+ // the bottom end of the range (FFFE FF00) is used for non-error values;
+
+ // Error codes:
mStatus_UnknownErr = -65537, // 0xFFFE FFFF
mStatus_NoSuchNameErr = -65538,
mStatus_NoMemoryErr = -65539,
mStatus_AlreadyRegistered = -65547,
mStatus_NameConflict = -65548,
mStatus_Invalid = -65549,
- mStatus_GrowCache = -65550,
+ // = -65550,
mStatus_Incompatible = -65551,
+ mStatus_BadInterfaceErr = -65552,
+
+ // -65553 - -65789 currently unused
+
+ // Non-error values:
+ mStatus_GrowCache = -65790,
mStatus_ConfigChanged = -65791,
mStatus_MemFree = -65792 // 0xFFFE FF00
};
typedef struct { mDNSu8 c[256]; } UTF8str255; // Null-terminated C string
+// The longest legal textual form of a DNS name is 1005 bytes, including the C-string terminating NULL at the end.
+// Explanation:
+// When a native domainname object is converted to printable textual form using ConvertDomainNameToCString(),
+// non-printing characters are represented in the conventional DNS way, as '\ddd', where ddd is a three-digit decimal number.
+// The longest legal domain name is 255 bytes, in the form of four labels as shown below:
+// Length byte, 63 data bytes, length byte, 63 data bytes, length byte, 63 data bytes, length byte, 61 data bytes, zero byte.
+// Each label is encoded textually as characters followed by a trailing dot.
+// If every character has to be represented as a four-byte escape sequence, then this makes the maximum textual form four labels
+// plus the C-string terminating NULL as shown below:
+// 63*4+1 + 63*4+1 + 63*4+1 + 61*4+1 + 1 = 1005.
+// Note that MAX_ESCAPED_DOMAIN_LABEL is not normally used: If you're only decoding a single label, escaping is usually not required.
+// It is for domain names, where dots are used as label separators, that proper escaping is vital.
+#define MAX_ESCAPED_DOMAIN_LABEL 254
+#define MAX_ESCAPED_DOMAIN_NAME 1005
+
// ***************************************************************************
#if 0
#pragma mark - Resource Record structures
mDNSu32 rrcache_report;
CacheRecord *rrcache_free;
CacheRecord *rrcache_hash[CACHE_HASH_SLOTS];
+ CacheRecord **rrcache_tail[CACHE_HASH_SLOTS];
mDNSu32 rrcache_used[CACHE_HASH_SLOTS];
// Fields below only required for mDNS Responder...
// Every client should call mDNS_Init, passing in storage for the mDNS object, mDNS_PlatformSupport object, and rrcache.
// The rrcachesize parameter is the size of (i.e. number of entries in) the rrcache array passed in.
+// Most clients use mDNS_Init_AdvertiseLocalAddresses. This causes mDNSCore to automatically
+// create the correct address records for all the hosts interfaces. If you plan to advertise
+// services being offered by the local machine, this is almost always what you want.
+// There are two cases where you might use mDNS_Init_DontAdvertiseLocalAddresses:
+// 1. A client-only device, that browses for services but doesn't advertise any of its own.
+// 2. A proxy-registration service, that advertises services being offered by other machines, and takes
+// the appropriate steps to manually create the correct address records for those other machines.
+// In principle, a proxy-like registration service could manually create address records for its own machine too,
+// but this would be pointless extra effort when using mDNS_Init_AdvertiseLocalAddresses does that for you.
// When mDNS has finished setting up the client's callback is called
// A client can also spin and poll the mDNSPlatformStatus field to see when it changes from mStatus_Waiting to mStatus_NoError
//
// is received containing a record which matches the question, the DNSQuestion's mDNSAnswerCallback function will be called
// Call mDNS_StopQuery when no more answers are required
//
-// The mDNS routines are intentionally not thread-safe -- adding locking operations would add overhead that may not
-// be necessary or appropriate on every platform. Instead, code in a pre-emptive environment calling any mDNS routine
-// (except mDNS_Init and mDNS_Close) is responsible for doing the necessary synchronization to ensure that mDNS code is
-// not re-entered. This includes both client software above mDNS, and the platform support code below. For example, if
-// the support code on a particular platform implements timer callbacks at interrupt time, then clients on that platform
-// need to disable interrupts or do similar concurrency control to ensure that the mDNS code is not entered by an
-// interrupt-time timer callback while in the middle of processing a client call.
+// Care should be taken on multi-threaded or interrupt-driven environments.
+// The main mDNS routines call mDNSPlatformLock() on entry and mDNSPlatformUnlock() on exit;
+// each platform layer needs to implement these appropriately for its respective platform.
+// For example, if the support code on a particular platform implements timer callbacks at interrupt time, then
+// mDNSPlatformLock/Unlock need to disable interrupts or do similar concurrency control to ensure that the mDNS
+// code is not entered by an interrupt-time timer callback while in the middle of processing a client call.
extern mStatus mDNS_Init (mDNS *const m, mDNS_PlatformSupport *const p,
CacheRecord *rrcachestorage, mDNSu32 rrcachesize,
mDNSCallback *Callback, void *Context);
#define mDNS_Init_NoCache mDNSNULL
#define mDNS_Init_ZeroCacheSize 0
+// See notes above on use of Advertise/DontAdvertiseLocalAddresses
#define mDNS_Init_AdvertiseLocalAddresses mDNStrue
#define mDNS_Init_DontAdvertiseLocalAddresses mDNSfalse
#define mDNS_Init_NoInitCallback mDNSNULL
#define mDNS_Init_NoInitCallbackContext mDNSNULL
+
extern void mDNS_GrowCache (mDNS *const m, CacheRecord *storage, mDNSu32 numrecords);
extern void mDNS_Close (mDNS *const m);
extern mDNSs32 mDNS_Execute (mDNS *const m);
// work with DNS's native length-prefixed strings. For convenience in C, the following utility functions
// are provided for converting between C's null-terminated strings and DNS's length-prefixed strings.
+// Assignment
+// A simple C structure assignment of a domainname can cause a protection fault by accessing unmapped memory,
+// because that object is defined to be 256 bytes long, but not all domainname objects are truly the full size.
+// This macro uses mDNSPlatformMemCopy() to make sure it only touches the actual bytes that are valid.
+#define AssignDomainName(DST, SRC) mDNSPlatformMemCopy((SRC).c, (DST).c, DomainNameLength(&(SRC)))
+
// Comparison functions
extern mDNSBool SameDomainLabel(const mDNSu8 *a, const mDNSu8 *b);
extern mDNSBool SameDomainName(const domainname *const d1, const domainname *const d2);
extern mDNSu8 *MakeDomainNameFromDNSNameString (domainname *const name, const char *cstr);
// Convert native format domainlabel or domainname back to C string format
+// IMPORTANT:
+// When using ConvertDomainLabelToCString, the target buffer must be MAX_ESCAPED_DOMAIN_LABEL (254) bytes long
+// to guarantee there will be no buffer overrun. It is only safe to use a buffer shorter than this in rare cases
+// where the label is known to be constrained somehow (for example, if the label is known to be either "_tcp" or "_udp").
+// Similarly, when using ConvertDomainNameToCString, the target buffer must be MAX_ESCAPED_DOMAIN_NAME (1005) bytes long.
+// See definitions of MAX_ESCAPED_DOMAIN_LABEL and MAX_ESCAPED_DOMAIN_NAME for more detailed explanation.
extern char *ConvertDomainLabelToCString_withescape(const domainlabel *const name, char *cstr, char esc);
#define ConvertDomainLabelToCString_unescaped(D,C) ConvertDomainLabelToCString_withescape((D), (C), 0)
#define ConvertDomainLabelToCString(D,C) ConvertDomainLabelToCString_withescape((D), (C), '\\')
extern mDNSBool mDNSSameAddress(const mDNSAddr *ip1, const mDNSAddr *ip2);
extern void IncrementLabelSuffix(domainlabel *name, mDNSBool RichText);
+// ***************************************************************************
+#if 0
+#pragma mark - PlatformSupport interface
+#endif
+
+// This section defines the interface to the Platform Support layer.
+// Normal client code should not use any of types defined here, or directly call any of the functions defined here.
+// The definitions are placed here because sometimes clients do use these calls indirectly, via other supported client operations.
+// For example, AssignDomainName is a macro defined using mDNSPlatformMemCopy()
+
+typedef struct
+ {
+ mDNSOpaque16 id;
+ mDNSOpaque16 flags;
+ mDNSu16 numQuestions;
+ mDNSu16 numAnswers;
+ mDNSu16 numAuthorities;
+ mDNSu16 numAdditionals;
+ } DNSMessageHeader;
+
+// We can send and receive packets up to 9000 bytes (Ethernet Jumbo Frame size, if that ever becomes widely used)
+// However, in the normal case we try to limit packets to 1500 bytes so that we don't get IP fragmentation on standard Ethernet
+// 40 (IPv6 header) + 8 (UDP header) + 12 (DNS message header) + 1440 (DNS message body) = 1500 total
+#define AbsoluteMaxDNSMessageData 8940
+#define NormalMaxDNSMessageData 1440
+typedef struct
+ {
+ DNSMessageHeader h; // Note: Size 12 bytes
+ mDNSu8 data[AbsoluteMaxDNSMessageData]; // 40 (IPv6) + 8 (UDP) + 12 (DNS header) + 8940 (data) = 9000
+ } DNSMessage;
+
+// Every platform support module must provide the following functions.
+// mDNSPlatformInit() typically opens a communication endpoint, and starts listening for mDNS packets.
+// When Setup is complete, the platform support layer calls mDNSCoreInitComplete().
+// mDNSPlatformSendUDP() sends one UDP packet
+// When a packet is received, the PlatformSupport code calls mDNSCoreReceive()
+// mDNSPlatformClose() tidies up on exit
+// Note: mDNSPlatformMemAllocate/mDNSPlatformMemFree are only required for handling oversized resource records.
+// If your target platform has a well-defined specialized application, and you know that all the records it uses
+// are InlineCacheRDSize or less, then you can just make a simple mDNSPlatformMemAllocate() stub that always returns
+// NULL. InlineCacheRDSize is a compile-time constant, which is set by default to 64. If you need to handle records
+// a little larger than this and you don't want to have to implement run-time allocation and freeing, then you
+// can raise the value of this constant to a suitable value (at the expense of increased memory usage).
+extern mStatus mDNSPlatformInit (mDNS *const m);
+extern void mDNSPlatformClose (mDNS *const m);
+extern mStatus mDNSPlatformSendUDP(const mDNS *const m, const DNSMessage *const msg, const mDNSu8 *const end,
+ mDNSInterfaceID InterfaceID, mDNSIPPort srcport, const mDNSAddr *dst, mDNSIPPort dstport);
+
+extern void mDNSPlatformLock (const mDNS *const m);
+extern void mDNSPlatformUnlock (const mDNS *const m);
+
+extern void mDNSPlatformStrCopy (const void *src, void *dst);
+extern mDNSu32 mDNSPlatformStrLen (const void *src);
+extern void mDNSPlatformMemCopy (const void *src, void *dst, mDNSu32 len);
+extern mDNSBool mDNSPlatformMemSame (const void *src, const void *dst, mDNSu32 len);
+extern void mDNSPlatformMemZero ( void *dst, mDNSu32 len);
+extern void * mDNSPlatformMemAllocate (mDNSu32 len);
+extern void mDNSPlatformMemFree (void *mem);
+extern mStatus mDNSPlatformTimeInit (mDNSs32 *timenow);
+
+// The core mDNS code provides these functions, for the platform support code to call at appropriate times
+//
+// mDNS_GenerateFQDN() is called once on startup (typically from mDNSPlatformInit())
+// and then again on each subsequent change of the dot-local host name.
+//
+// mDNS_RegisterInterface() is used by the platform support layer to inform mDNSCore of what
+// physical and/or logical interfaces are available for sending and receiving packets.
+// Typically it is called on startup for each available interface, but register/deregister may be
+// called again later, on multiple occasions, to inform the core of interface configuration changes.
+// If set->Advertise is set non-zero, then mDNS_RegisterInterface() also registers the standard
+// resource records that should be associated with every publicised IP address/interface:
+// -- Name-to-address records (A/AAAA)
+// -- Address-to-name records (PTR)
+// -- Host information (HINFO)
+//
+// mDNSCoreInitComplete() is called when the platform support layer is finished.
+// Typically this is at the end of mDNSPlatformInit(), but may be later
+// (on platforms like OT that allow asynchronous initialization of the networking stack).
+//
+// mDNSCoreReceive() is called when a UDP packet is received
+//
+// mDNSCoreMachineSleep() is called when the machine sleeps or wakes
+// (This refers to heavyweight laptop-style sleep/wake that disables network access,
+// not lightweight second-by-second CPU power management modes.)
+
+extern void mDNS_GenerateFQDN(mDNS *const m);
+extern mStatus mDNS_RegisterInterface (mDNS *const m, NetworkInterfaceInfo *set);
+extern void mDNS_DeregisterInterface(mDNS *const m, NetworkInterfaceInfo *set);
+extern void mDNSCoreInitComplete(mDNS *const m, mStatus result);
+extern void mDNSCoreReceive(mDNS *const m, DNSMessage *const msg, const mDNSu8 *const end,
+ const mDNSAddr *const srcaddr, const mDNSIPPort srcport,
+ const mDNSAddr *const dstaddr, const mDNSIPPort dstport, const mDNSInterfaceID InterfaceID, mDNSu8 ttl);
+extern void mDNSCoreMachineSleep(mDNS *const m, mDNSBool wake);
+
+// ***************************************************************************
+#if 0
+#pragma mark - Compile-Time assertion checks
+#endif
+
+// Some C compiler cleverness. We can make the compiler check certain things for
+// us, and report compile-time errors if anything is wrong. The usual way to do
+// this would be to use a run-time "if" statement, but then you don't find out
+// what's wrong until you run the software. This way, if the assertion condition
+// is false, the array size is negative, and the complier complains immediately.
+
+struct mDNS_CompileTimeAssertionChecks
+ {
+ // Check that the compiler generated our on-the-wire packet format structure definitions
+ // properly packed, without adding padding bytes to align fields on 32-bit or 64-bit boundaries.
+ char assert0[(sizeof(rdataSRV) == 262 ) ? 1 : -1];
+ char assert1[(sizeof(DNSMessageHeader) == 12 ) ? 1 : -1];
+ char assert2[(sizeof(DNSMessage) == 12+AbsoluteMaxDNSMessageData) ? 1 : -1];
+ char assert3[(sizeof(mDNSs8) == 1 ) ? 1 : -1];
+ char assert4[(sizeof(mDNSu8) == 1 ) ? 1 : -1];
+ char assert5[(sizeof(mDNSs16) == 2 ) ? 1 : -1];
+ char assert6[(sizeof(mDNSu16) == 2 ) ? 1 : -1];
+ char assert7[(sizeof(mDNSs32) == 4 ) ? 1 : -1];
+ char assert8[(sizeof(mDNSu32) == 4 ) ? 1 : -1];
+ char assert9[(sizeof(mDNSOpaque16) == 2 ) ? 1 : -1];
+ char assertA[(sizeof(mDNSOpaque32) == 4 ) ? 1 : -1];
+ char assertB[(sizeof(mDNSOpaque128) == 16 ) ? 1 : -1];
+ };
+
+// ***************************************************************************
+
#ifdef __cplusplus
}
#endif
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
Change History (most recent first):
$Log: mDNSPlatformFunctions.h,v $
+Revision 1.22.2.1 2003/12/05 00:03:34 cheshire
+<rdar://problem/3487869> Use buffer size MAX_ESCAPED_DOMAIN_NAME instead of 256
+
Revision 1.22 2003/08/18 22:53:37 cheshire
<rdar://problem/3382647> mDNSResponder divide by zero in mDNSPlatformTimeNow()
*/
-#ifndef __mDNSPlatformFunctions_h
-#define __mDNSPlatformFunctions_h
-
-// ***************************************************************************
-// Support functions which must be provided by each set of specific PlatformSupport files
-
-// mDNSPlatformInit() typically opens a communication endpoint, and starts listening for mDNS packets.
-// When Setup is complete, the callback is called.
-// mDNSPlatformSendUDP() sends one UDP packet
-// When a packet is received, the PlatformSupport code calls mDNSCoreReceive()
-// mDNSPlatformClose() tidies up on exit
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-// ***************************************************************************
-// DNS protocol message format
-
-typedef struct
- {
- mDNSOpaque16 id;
- mDNSOpaque16 flags;
- mDNSu16 numQuestions;
- mDNSu16 numAnswers;
- mDNSu16 numAuthorities;
- mDNSu16 numAdditionals;
- } DNSMessageHeader;
-
-// We can send and receive packets up to 9000 bytes (Ethernet Jumbo Frame size, if that ever becomes widely used)
-// However, in the normal case we try to limit packets to 1500 bytes so that we don't get IP fragmentation on standard Ethernet
-// 40 (IPv6 header) + 8 (UDP header) + 12 (DNS message header) + 1440 (DNS message body) = 1500 total
-#define AbsoluteMaxDNSMessageData 8940
-#define NormalMaxDNSMessageData 1440
-typedef struct
- {
- DNSMessageHeader h; // Note: Size 12 bytes
- mDNSu8 data[AbsoluteMaxDNSMessageData]; // 40 (IPv6) + 8 (UDP) + 12 (DNS header) + 8940 (data) = 9000
- } DNSMessage;
-
-// ***************************************************************************
-// Functions
-
-// Every platform support module must provide the following functions.
-// Note: mDNSPlatformMemAllocate/mDNSPlatformMemFree are only required for handling oversized resource records.
-// If your target platform has a well-defined specialized application, and you know that all the records it uses
-// are InlineCacheRDSize or less, then you can just make a simple mDNSPlatformMemAllocate() stub that always returns
-// NULL. InlineCacheRDSize is a compile-time constant, which is set by default to 64. If you need to handle records
-// a little larger than this and you don't want to have to implement run-time allocation and freeing, then you
-// can raise the value of this constant to a suitable value (at the expense of increased memory usage).
-extern mStatus mDNSPlatformInit (mDNS *const m);
-extern void mDNSPlatformClose (mDNS *const m);
-extern mStatus mDNSPlatformSendUDP(const mDNS *const m, const DNSMessage *const msg, const mDNSu8 *const end,
- mDNSInterfaceID InterfaceID, mDNSIPPort srcport, const mDNSAddr *dst, mDNSIPPort dstport);
-
-extern void mDNSPlatformLock (const mDNS *const m);
-extern void mDNSPlatformUnlock (const mDNS *const m);
-
-extern void mDNSPlatformStrCopy (const void *src, void *dst);
-extern mDNSu32 mDNSPlatformStrLen (const void *src);
-extern void mDNSPlatformMemCopy (const void *src, void *dst, mDNSu32 len);
-extern mDNSBool mDNSPlatformMemSame (const void *src, const void *dst, mDNSu32 len);
-extern void mDNSPlatformMemZero ( void *dst, mDNSu32 len);
-extern void * mDNSPlatformMemAllocate (mDNSu32 len);
-extern void mDNSPlatformMemFree (void *mem);
-extern mStatus mDNSPlatformTimeInit (mDNSs32 *timenow);
-
-// The core mDNS code provides these functions, for the platform support code to call at appropriate times
-//
-// mDNS_GenerateFQDN() is called once on startup (typically from mDNSPlatformInit())
-// and then again on each subsequent dot-local host name change.
-//
-// mDNS_RegisterInterface() is used by the platform support layer to inform mDNSCore of what
-// physical and/or logical interfaces are available for sending and receiving packets.
-// Typically it is called on startup for each available interface, but register/deregister may be
-// called again later, on multiple occasions, to inform the core of interface configuration changes.
-// If set->Advertise is set non-zero, then mDNS_RegisterInterface() also registers the standard
-// resource records that should be associated with every publicised IP address/interface:
-// -- Name-to-address records (A/AAAA)
-// -- Address-to-name records (PTR)
-// -- Host information (HINFO)
-//
-// mDNSCoreInitComplete() is called when the platform support layer is finished.
-// Typically this is at the end of mDNSPlatformInit(), but may be later
-// (on platforms like OT that allow asynchronous initialization of the networking stack).
-//
-// mDNSCoreReceive() is called when a UDP packet is received
-//
-// mDNSCoreMachineSleep() is called when the machine sleeps or wakes
-// (This refers to heavyweight laptop-style sleep/wake that disables network access,
-// not lightweight second-by-second CPU power management modes.)
-
-extern void mDNS_GenerateFQDN(mDNS *const m);
-extern mStatus mDNS_RegisterInterface (mDNS *const m, NetworkInterfaceInfo *set);
-extern void mDNS_DeregisterInterface(mDNS *const m, NetworkInterfaceInfo *set);
-extern void mDNSCoreInitComplete(mDNS *const m, mStatus result);
-extern void mDNSCoreReceive(mDNS *const m, DNSMessage *const msg, const mDNSu8 *const end,
- const mDNSAddr *const srcaddr, const mDNSIPPort srcport,
- const mDNSAddr *const dstaddr, const mDNSIPPort dstport, const mDNSInterfaceID InterfaceID, mDNSu8 ttl);
-extern void mDNSCoreMachineSleep(mDNS *const m, mDNSBool wake);
-
-#ifdef __cplusplus
- }
-#endif
-
-#endif
+// Note: All moved to mDNSClientAPI.h
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
Change History (most recent first):
$Log: daemon.c,v $
+Revision 1.134.2.2 2003/12/05 00:03:35 cheshire
+<rdar://problem/3487869> Use buffer size MAX_ESCAPED_DOMAIN_NAME instead of 256
+
+Revision 1.134.2.1 2003/12/03 11:00:09 cheshire
+Update "mDNSResponderVersion" mechanism to allow dots so we can do mDNSResponder-58.1 for SUPan
+
Revision 1.134 2003/08/21 20:01:37 cheshire
<rdar://problem/3387941> Traffic reduction: Detect long-lived Resolve() calls, and report them in syslog
{
DNSServiceBrowserResult *next;
int resultType;
- char name[256], type[256], dom[256];
+ domainname result;
};
typedef struct DNSServiceBrowser_struct DNSServiceBrowser;
{
kern_return_t status;
#pragma unused(m)
- char buffer[256];
+ char buffer[MAX_ESCAPED_DOMAIN_NAME];
DNSServiceDomainEnumerationReplyResultType rt;
DNSServiceDomainEnumeration *x = (DNSServiceDomainEnumeration *)question->QuestionContext;
if (!x) { LogMsg("FoundInstance: Failed to allocate memory for result %##s", answer->rdata->u.name.c); return; }
verbosedebugf("FoundInstance: %s %##s", AddRecord ? "Add" : "Rmv", answer->rdata->u.name.c);
- ConvertDomainLabelToCString_unescaped(&name, x->name);
- ConvertDomainNameToCString(&type, x->type);
- ConvertDomainNameToCString(&domain, x->dom);
+ AssignDomainName(x->result, answer->rdata->u.name);
if (AddRecord)
x->resultType = DNSServiceBrowserReplyAddInstance;
else x->resultType = DNSServiceBrowserReplyRemoveInstance;
while (x->results)
{
DNSServiceBrowserResult *const r = x->results;
+ domainlabel name;
+ domainname type, domain;
+ DeconstructServiceName(&r->result, &name, &type, &domain); // Don't need to check result; already validated in FoundInstance()
+ char cname[MAX_DOMAIN_LABEL+1]; // Unescaped name: up to 63 bytes plus C-string terminating NULL.
+ char ctype[MAX_ESCAPED_DOMAIN_NAME];
+ char cdom [MAX_ESCAPED_DOMAIN_NAME];
+ ConvertDomainLabelToCString_unescaped(&name, cname);
+ ConvertDomainNameToCString(&type, ctype);
+ ConvertDomainNameToCString(&domain, cdom);
DNSServiceDiscoveryReplyFlags flags = (r->next) ? DNSServiceDiscoverReplyFlagsMoreComing : 0;
- kern_return_t status = DNSServiceBrowserReply_rpc(x->ClientMachPort, r->resultType, r->name, r->type, r->dom, flags, 1);
+ kern_return_t status = DNSServiceBrowserReply_rpc(x->ClientMachPort, r->resultType, cname, ctype, cdom, flags, 1);
// If we failed to send the mach message, try again in one second
if (status == MACH_SEND_TIMED_OUT)
{
}
// For convenience when using the "strings" command, this is the last thing in the file
-#if mDNSResponderVersion > 1
-mDNSexport const char mDNSResponderVersionString[] = "mDNSResponder-" STRINGIFY(mDNSResponderVersion) " (" __DATE__ " " __TIME__ ")";
-#else
-mDNSexport const char mDNSResponderVersionString[] = "mDNSResponder (Engineering Build) (" __DATE__ " " __TIME__ ")";
-#endif
+mDNSexport const char mDNSResponderVersionString[] = STRINGIFY(mDNSResponderVersion) " (" __DATE__ " " __TIME__ ")";
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
objectVersion = 38;
objects = {
000753D303367C1C0CCA2C71 = {
+ fileEncoding = 4;
isa = PBXFileReference;
path = mDNSMacOSX.h;
refType = 4;
};
0017390704CC75C30CCA2C71 = {
+ fileEncoding = 4;
isa = PBXFileReference;
path = SampleUDSClient.c;
refType = 2;
);
buildSettings = {
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
+ MACOSX_DEPLOYMENT_TARGET = 10.2;
OTHER_CFLAGS = "-no-cpp-precomp -DmDNSResponderVersion=$(MVERS)";
OTHER_LDFLAGS = "";
OTHER_REZFLAGS = "";
name = "UDS API Test Tool";
productName = "UDS API Test Tool";
productReference = 0044D34F04CC73600CCA2C71;
- shouldUseHeadermap = 0;
};
0044D34904CC73600CCA2C71 = {
buildActionMask = 2147483647;
refType = 3;
};
004EFB9604CC78130CCA2C71 = {
+ fileEncoding = 4;
isa = PBXFileReference;
path = dnssd_clientstub.c;
refType = 2;
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
HEADER_SEARCH_PATHS = "\"$(APPLE_INTERNAL_DEVELOPER_DIR)/Headers\"";
LIBRARY_SEARCH_PATHS = "";
+ MACOSX_DEPLOYMENT_TARGET = 10.2;
OPTIMIZATION_CFLAGS = "-O0";
OTHER_CFLAGS = "-no-cpp-precomp -D__MACOSX__ -DMDNS_DEBUGMSGS=1 -DmDNSResponderVersion=$(MVERS)";
OTHER_LDFLAGS = "";
name = "mDNSResponder debug";
productName = mDNSResponder;
productReference = 00AD62B8032D799A0CCA2C71;
- shouldUseHeadermap = 1;
};
00AD62A4032D799A0CCA2C71 = {
buildActionMask = 2147483647;
00AD62AE032D799A0CCA2C71,
00AD62AF032D799A0CCA2C71,
00AD62B0032D799A0CCA2C71,
- 00AD62B1032D799A0CCA2C71,
F5E11B5E04A28126019798ED,
F525E72B04AA167A01F1CF4D,
+ 00AD62B1032D799A0CCA2C71,
);
isa = PBXSourcesBuildPhase;
runOnlyForDeploymentPostprocessing = 0;
isa = PBXAggregateTarget;
name = "Build All";
productName = "Build All";
- shouldUseHeadermap = 0;
};
00AD62BC032D7A160CCA2C71 = {
isa = PBXTargetDependency;
buildRules = (
);
buildSettings = {
- MVERS = 1;
+ MVERS = "\"mDNSResponder (Engineering Build)\"";
};
isa = PBXBuildStyle;
name = Development;
buildStyles = (
00B2AB0C032D7B220CCA2C71,
);
+ hasScannedForEncodings = 1;
isa = PBXProject;
mainGroup = 08FB7794FE84155DC02AAC07;
projectDirPath = "";
HEADER_SEARCH_PATHS = "\"$(APPLE_INTERNAL_DEVELOPER_DIR)/Headers\"";
INSTALL_PATH = /usr/sbin;
LIBRARY_SEARCH_PATHS = "";
+ MACOSX_DEPLOYMENT_TARGET = 10.2;
OTHER_CFLAGS = "-no-cpp-precomp -D__MACOSX__ -DmDNSResponderVersion=$(MVERS)";
OTHER_LDFLAGS = "";
OTHER_REZFLAGS = "";
productInstallPath = "$(HOME)/bin";
productName = mDNSResponder;
productReference = 034768E2FF38A6DC11DB9C8B;
- shouldUseHeadermap = 1;
};
08FB77A0FE84155DC02AAC07 = {
buildActionMask = 2147483647;
6575FC0E022EB18700000109,
6575FBEA022EAF5A00000109,
6575FBED022EAF7200000109,
- 6575FBEE022EAF7200000109,
F5E11B5C04A28126019798ED,
F525E72904AA167501F1CF4D,
+ 6575FBEE022EAF7200000109,
);
isa = PBXSourcesBuildPhase;
runOnlyForDeploymentPostprocessing = 0;
//653
//654
654BE64F02B63B93000001D1 = {
+ fileEncoding = 4;
isa = PBXFileReference;
name = mDNSClientAPI.h;
path = ../mDNSCore/mDNSClientAPI.h;
refType = 4;
};
654BE65002B63B93000001D1 = {
+ fileEncoding = 4;
isa = PBXFileReference;
name = mDNSDebug.h;
path = ../mDNSCore/mDNSDebug.h;
refType = 4;
};
654BE65202B63B93000001D1 = {
+ fileEncoding = 4;
isa = PBXFileReference;
name = mDNSPlatformFunctions.h;
path = ../mDNSCore/mDNSPlatformFunctions.h;
};
};
6575FBE9022EAF5A00000109 = {
+ fileEncoding = 4;
indentWidth = 4;
isa = PBXFileReference;
name = mDNS.c;
};
};
6575FBEB022EAF7200000109 = {
+ fileEncoding = 4;
indentWidth = 4;
isa = PBXFileReference;
path = CFSocket.c;
usesTabs = 1;
};
6575FBEC022EAF7200000109 = {
+ fileEncoding = 4;
indentWidth = 4;
isa = PBXFileReference;
path = daemon.c;
refType = 4;
};
6575FBFF022EAFBA00000109 = {
+ fileEncoding = 4;
isa = PBXFileReference;
path = DNSServiceDiscoveryDefines.h;
refType = 4;
};
6575FC00022EAFBA00000109 = {
+ fileEncoding = 4;
isa = PBXFileReference;
path = DNSServiceDiscoveryReply.defs;
refType = 4;
};
6575FC01022EAFBA00000109 = {
+ fileEncoding = 4;
isa = PBXFileReference;
path = DNSServiceDiscoveryRequest.defs;
refType = 4;
buildSettings = {
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
INSTALL_PATH = /usr/bin;
+ MACOSX_DEPLOYMENT_TARGET = 10.2;
OTHER_CFLAGS = "-no-cpp-precomp -DmDNSResponderVersion=$(MVERS)";
OTHER_LDFLAGS = "";
OTHER_REZFLAGS = "";
productInstallPath = /usr/bin;
productName = "Sample mDNS Client";
productReference = 6575FC1D022EB76000000109;
- shouldUseHeadermap = 0;
};
6575FC1D022EB76000000109 = {
isa = PBXExecutableFileReference;
refType = 4;
};
6575FC20022EB7AA00000109 = {
+ fileEncoding = 4;
indentWidth = 4;
isa = PBXFileReference;
path = SamplemDNSClient.c;
};
};
F525E72804AA167501F1CF4D = {
+ fileEncoding = 4;
isa = PBXFileReference;
path = uds_daemon.c;
refType = 4;
};
};
F5E11B5A04A28126019798ED = {
+ fileEncoding = 4;
isa = PBXFileReference;
path = dnssd_ipc.c;
refType = 4;
};
F5E11B5B04A28126019798ED = {
+ fileEncoding = 4;
isa = PBXFileReference;
path = dnssd_ipc.h;
refType = 4;
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
Change History (most recent first):
$Log: uds_daemon.c,v $
+Revision 1.22.2.1 2003/12/05 00:03:35 cheshire
+<rdar://problem/3487869> Use buffer size MAX_ESCAPED_DOMAIN_NAME instead of 256
+
Revision 1.22 2003/08/19 16:03:55 ksekar
Bug #: <rdar://problem/3380097>: ER: SIGINFO dump should include resolves started by DNSServiceQueryRecord
Check termination_context for NULL before dereferencing.
{
DNSServiceFlags flags;
uint32_t interfaceIndex;
- char name[256], regtype[256], domain[256];
+ char name[256], regtype[MAX_ESCAPED_DOMAIN_NAME], domain[MAX_ESCAPED_DOMAIN_NAME];
char *ptr; // message data pointer
domainname fqdn;
resolve_t *srv, *txt;
mDNSInterfaceID InterfaceID = mDNSPlatformInterfaceIDfromInterfaceIndex(&mDNSStorage, interfaceIndex);
if (interfaceIndex && !InterfaceID) goto bad_param;
if (get_string(&ptr, name, 256) < 0 ||
- get_string(&ptr, regtype, 256) < 0 ||
- get_string(&ptr, domain, 256) < 0)
+ get_string(&ptr, regtype, MAX_ESCAPED_DOMAIN_NAME) < 0 ||
+ get_string(&ptr, domain, MAX_ESCAPED_DOMAIN_NAME) < 0)
goto bad_param;
// free memory in rstate since we don't need it anymore
static void resolve_result_callback(mDNS *const m, DNSQuestion *question, const ResourceRecord *const answer, mDNSBool AddRecord)
{
int len = 0;
- char fullname[MAX_DOMAIN_NAME], target[MAX_DOMAIN_NAME];
+ char fullname[MAX_ESCAPED_DOMAIN_NAME], target[MAX_ESCAPED_DOMAIN_NAME];
char *data;
transfer_state result;
reply_state *rep;
static void question_result_callback(mDNS *const m, DNSQuestion *question, const ResourceRecord *const answer, mDNSBool AddRecord)
{
char *data;
- char name[256];
+ char name[MAX_ESCAPED_DOMAIN_NAME];
request_state *req;
reply_state *rep;
int len;
{
DNSServiceFlags flags;
uint32_t interfaceIndex;
- char regtype[256], domain[256];
+ char regtype[MAX_ESCAPED_DOMAIN_NAME], domain[MAX_ESCAPED_DOMAIN_NAME];
DNSQuestion *q;
domainname typedn, domdn;
char *ptr;
ptr = request->msgdata;
flags = get_flags(&ptr);
interfaceIndex = get_long(&ptr);
- if (get_string(&ptr, regtype, 256) < 0 ||
- get_string(&ptr, domain, 256) < 0)
+ if (get_string(&ptr, regtype, MAX_ESCAPED_DOMAIN_NAME) < 0 ||
+ get_string(&ptr, domain, MAX_ESCAPED_DOMAIN_NAME) < 0)
goto bad_param;
freeL("handle_browse_request", request->msgbuf);
{
DNSServiceFlags flags;
uint32_t ifi;
- char name[256], regtype[256], domain[256], host[256];
+ char name[256], regtype[MAX_ESCAPED_DOMAIN_NAME], domain[MAX_ESCAPED_DOMAIN_NAME], host[MAX_ESCAPED_DOMAIN_NAME];
uint16_t txtlen;
mDNSIPPort port;
void *txtdata;
mDNSInterfaceID InterfaceID = mDNSPlatformInterfaceIDfromInterfaceIndex(&mDNSStorage, ifi);
if (ifi && !InterfaceID) goto bad_param;
if (get_string(&ptr, name, 256) < 0 ||
- get_string(&ptr, regtype, 256) < 0 ||
- get_string(&ptr, domain, 256) < 0 ||
- get_string(&ptr, host, 256) < 0)
+ get_string(&ptr, regtype, MAX_ESCAPED_DOMAIN_NAME) < 0 ||
+ get_string(&ptr, domain, MAX_ESCAPED_DOMAIN_NAME) < 0 ||
+ get_string(&ptr, host, MAX_ESCAPED_DOMAIN_NAME) < 0)
goto bad_param;
port.NotAnInteger = get_short(&ptr);
static void enum_result_callback(mDNS *const m, DNSQuestion *question, const ResourceRecord *const answer, mDNSBool AddRecord)
{
- char domain[256];
+ char domain[MAX_ESCAPED_DOMAIN_NAME];
domain_enum_t *de = question->QuestionContext;
DNSServiceFlags flags = 0;
reply_state *reply;
int len;
domainlabel name;
domainname type, dom;
- char namestr[256], typestr[256], domstr[256];
+ char namestr[MAX_DOMAIN_LABEL+1]; // Unescaped name: up to 63 bytes plus C-string terminating NULL.
+ char typestr[MAX_ESCAPED_DOMAIN_NAME];
+ char domstr [MAX_ESCAPED_DOMAIN_NAME];
*rep = NULL;
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
Change History (most recent first):
$Log: Client.c,v $
+Revision 1.11 2003/11/17 20:14:32 cheshire
+Typo: Wrote "domC" where it should have said "domainC"
+
+Revision 1.10 2003/11/14 21:27:09 cheshire
+<rdar://problem/3484766>: Security: Crashing bug in mDNSResponder
+Fix code that should use buffer size MAX_ESCAPED_DOMAIN_NAME (1005) instead of 256-byte buffers.
+
Revision 1.9 2003/08/14 02:19:55 cheshire
<rdar://problem/3375491> Split generic ResourceRecord type into two separate types: AuthRecord and CacheRecord
domainlabel name;
domainname type;
domainname domain;
- char nameC[256];
- char typeC[256];
- char domainC[256];
+ char nameC [MAX_DOMAIN_LABEL+1]; // Unescaped name: up to 63 bytes plus C-string terminating NULL.
+ char typeC [MAX_ESCAPED_DOMAIN_NAME];
+ char domainC[MAX_ESCAPED_DOMAIN_NAME];
const char *state;
(void)m; // Unused
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
Change History (most recent first):
$Log: Identify.c,v $
+Revision 1.12 2003/11/14 21:27:09 cheshire
+<rdar://problem/3484766>: Security: Crashing bug in mDNSResponder
+Fix code that should use buffer size MAX_ESCAPED_DOMAIN_NAME (1005) instead of 256-byte buffers.
+
+Revision 1.11 2003/10/30 19:26:38 cheshire
+Fix warnings on certain compilers
+
Revision 1.10 2003/09/02 20:38:57 cheshire
#include <signal.h> for Linux
static volatile int StopNow; // 0 means running, 1 means stop because we got an answer, 2 means stop because of Ctrl-C
static volatile int NumAnswers, NumAddr, NumAAAA, NumHINFO;
-static char hostname[256], hardware[256], software[256];
+static char hostname[MAX_ESCAPED_DOMAIN_NAME], hardware[256], software[256];
static mDNSOpaque16 lastid, id;
//*************************************************************************************************************
else if (answer->rrtype == kDNSType_HINFO)
{
mDNSu8 *p = answer->rdata->u.data;
- strncpy(hardware, p+1, p[0]);
+ strncpy(hardware, (char*)(p+1), p[0]);
hardware[p[0]] = 0;
p += 1 + p[0];
- strncpy(software, p+1, p[0]);
+ strncpy(software, (char*)(p+1), p[0]);
software[p[0]] = 0;
NumAnswers++;
NumHINFO++;
mDNSexport int main(int argc, char **argv)
{
mStatus status;
-
+ struct in_addr s4;
+ struct in6_addr s6;
+ char buffer[256];
+ DNSQuestion q;
+
if (argc < 2) goto usage;
// Initialise the mDNS core.
signal(SIGINT, HandleSIG); // SIGINT is what you get for a Ctrl-C
signal(SIGTERM, HandleSIG);
- struct in_addr s4;
- struct in6_addr s6;
-
- char buffer[256];
- DNSQuestion q;
-
if (inet_pton(AF_INET, argv[1], &s4) == 1)
{
mDNSu8 *p = (mDNSu8 *)&s4;
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
Change History (most recent first):
$Log: NetMonitor.c,v $
+Revision 1.49 2003/10/30 19:38:56 cheshire
+Fix warning on certain compilers
+
+Revision 1.48 2003/10/30 19:30:00 cheshire
+Fix warnings on certain compilers
+
Revision 1.47 2003/09/05 18:49:57 cheshire
Add total packet size to display
HostPkt_L = 1, // Legacy Query
HostPkt_R = 2, // Response
HostPkt_B = 3, // Bad
- HostPkt_NumTypes = 4,
+ HostPkt_NumTypes = 4
} HostPkt_Type;
typedef struct
for (i=0; i<msg->h.numQuestions; i++)
{
DNSQuestion q;
- mDNSu8 *p2;
- const mDNSu8 *ep = ptr;
- ptr = getQuestion(msg, ptr, end, InterfaceID, &q);
- if (!ptr) { DisplayError(srcaddr, ep, end, "QUESTION"); return; }
+ mDNSu8 *p2 = (mDNSu8 *)getQuestion(msg, ptr, end, InterfaceID, &q);
mDNSu16 ucbit = q.qclass & kDNSQClass_UnicastResponse;
q.qclass &= ~kDNSQClass_UnicastResponse;
+ if (!p2) { DisplayError(srcaddr, ptr, end, "QUESTION"); return; }
+ ptr = p2;
p2 = (mDNSu8 *)FindUpdate(m, msg, auth, end, &q, &pkt);
if (p2)
{
const mDNSu8 StdQ = kDNSFlag0_QR_Query | kDNSFlag0_OP_StdQuery;
const mDNSu8 StdR = kDNSFlag0_QR_Response | kDNSFlag0_OP_StdQuery;
const mDNSu8 QR_OP = (mDNSu8)(msg->h.flags.b[0] & kDNSFlag0_QROP_Mask);
+ mDNSu8 *ptr = (mDNSu8 *)&msg->h.numQuestions;
(void)dstaddr; // Unused
(void)dstport; // Unused
// Read the integer parts which are in IETF byte-order (MSB first, LSB second)
- mDNSu8 *ptr = (mDNSu8 *)&msg->h.numQuestions;
msg->h.numQuestions = (mDNSu16)((mDNSu16)ptr[0] << 8 | ptr[1]);
msg->h.numAnswers = (mDNSu16)((mDNSu16)ptr[2] << 8 | ptr[3]);
msg->h.numAuthorities = (mDNSu16)((mDNSu16)ptr[4] << 8 | ptr[5]);
for (i=1; i<argc; i++)
{
+ FilterList *f;
struct in_addr s4;
struct in6_addr s6;
mDNSAddr a;
else goto usage;
}
- FilterList *f = malloc(sizeof(*f));
+ f = malloc(sizeof(*f));
f->FilterAddr = a;
f->next = Filters;
Filters = f;
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
Change History (most recent first):
$Log: ProxyResponder.c,v $
+Revision 1.24 2003/11/14 21:27:09 cheshire
+<rdar://problem/3484766>: Security: Crashing bug in mDNSResponder
+Fix code that should use buffer size MAX_ESCAPED_DOMAIN_NAME (1005) instead of 256-byte buffers.
+
+Revision 1.23 2003/10/30 19:39:28 cheshire
+Fix warnings on certain compilers
+
Revision 1.22 2003/08/14 02:19:55 cheshire
<rdar://problem/3375491> Split generic ResourceRecord type into two separate types: AuthRecord and CacheRecord
if (result == mStatus_NoError)
{
- char buffer[256];
- ConvertDomainNameToCString_unescaped(&sr->RR_SRV.resrec.name, buffer);
+ char buffer[MAX_ESCAPED_DOMAIN_NAME];
+ ConvertDomainNameToCString(&sr->RR_SRV.resrec.name, buffer);
printf("Service %s now registered and active\n", buffer);
}
if (result == mStatus_NameConflict)
{
- char buffer1[256], buffer2[256];
- ConvertDomainNameToCString_unescaped(&sr->RR_SRV.resrec.name, buffer1);
+ char buffer1[MAX_ESCAPED_DOMAIN_NAME], buffer2[MAX_ESCAPED_DOMAIN_NAME];
+ ConvertDomainNameToCString(&sr->RR_SRV.resrec.name, buffer1);
mDNS_RenameAndReregisterService(m, sr, mDNSNULL);
- ConvertDomainNameToCString_unescaped(&sr->RR_SRV.resrec.name, buffer2);
+ ConvertDomainNameToCString(&sr->RR_SRV.resrec.name, buffer2);
printf("Name Conflict! %s renamed as %s\n", buffer1, buffer2);
}
}
domainlabel n;
domainname t, d;
mDNSIPPort port;
- unsigned char buffer[1024], *bptr = buffer;
+ unsigned char txtbuffer[1024], *bptr = txtbuffer;
+ char buffer[MAX_ESCAPED_DOMAIN_NAME];
MakeDomainLabelFromLiteralString(&n, name);
MakeDomainNameFromDNSNameString(&t, type);
int len = strlen(argv[0]);
printf("STR: %s\n", argv[0]);
bptr[0] = len;
- strcpy(bptr+1, argv[0]);
+ strcpy((char*)(bptr+1), argv[0]);
bptr += 1 + len;
argc--;
argv++;
mDNS_RegisterService(m, recordset,
&n, &t, &d, // Name, type, domain
host, port, // Host and port
- buffer, bptr-buffer, // TXT data, length
+ txtbuffer, bptr-txtbuffer, // TXT data, length
mDNSNULL, 0, // Subtypes
mDNSInterface_Any, // Interace ID
ServiceCallback, mDNSNULL); // Callback and context
- ConvertDomainNameToCString_unescaped(&recordset->RR_SRV.resrec.name, buffer);
+ ConvertDomainNameToCString(&recordset->RR_SRV.resrec.name, buffer);
printf("Made Service Records for %s\n", buffer);
}
if (result == mStatus_NoError)
{
- char buffer[256];
- ConvertDomainNameToCString_unescaped(&rr->resrec.name, buffer);
+ char buffer[MAX_ESCAPED_DOMAIN_NAME];
+ ConvertDomainNameToCString(&rr->resrec.name, buffer);
printf("Non-existence assertion %s now registered and active\n", buffer);
}
{
domainlabel n;
domainname t, d;
- char buffer1[256], buffer2[256];
- ConvertDomainNameToCString_unescaped(&rr->resrec.name, buffer1);
+ char buffer1[MAX_ESCAPED_DOMAIN_NAME], buffer2[MAX_ESCAPED_DOMAIN_NAME];
+ ConvertDomainNameToCString(&rr->resrec.name, buffer1);
DeconstructServiceName(&rr->resrec.name, &n, &t, &d);
IncrementLabelSuffix(&n, mDNStrue);
mDNS_RegisterNoSuchService(m, rr, &n, &t, &d, proxyhostname, mDNSInterface_Any, NoSuchServiceCallback, mDNSNULL);
- ConvertDomainNameToCString_unescaped(&rr->resrec.name, buffer2);
+ ConvertDomainNameToCString(&rr->resrec.name, buffer2);
printf("Name Conflict! %s renamed as %s\n", buffer1, buffer2);
}
}
{
domainlabel n;
domainname t, d;
- unsigned char buffer[256];
+ char buffer[MAX_ESCAPED_DOMAIN_NAME];
MakeDomainLabelFromLiteralString(&n, name);
MakeDomainNameFromDNSNameString(&t, type);
MakeDomainNameFromDNSNameString(&d, domain);
mDNS_RegisterNoSuchService(m, rr, &n, &t, &d, proxyhostname, mDNSInterface_Any, NoSuchServiceCallback, proxyhostname);
- ConvertDomainNameToCString_unescaped(&rr->resrec.name, buffer);
+ ConvertDomainNameToCString(&rr->resrec.name, buffer);
printf("Made Non-existence Record for %s\n", buffer);
}
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
Change History (most recent first):
$Log: mDNSPosix.c,v $
+Revision 1.25 2003/10/30 19:25:49 cheshire
+Fix signed/unsigned warning on certain compilers
+
Revision 1.24 2003/08/18 23:12:23 cheshire
<rdar://problem/3382647> mDNSResponder divide by zero in mDNSPlatformTimeNow()
mDNSlocal void GetUserSpecifiedRFC1034ComputerName(domainlabel *const namelabel)
{
int len = 0;
- gethostname(&namelabel->c[1], MAX_DOMAIN_LABEL);
+ gethostname((char *)(&namelabel->c[1]), MAX_DOMAIN_LABEL);
while (len < MAX_DOMAIN_LABEL && namelabel->c[len+1] && namelabel->c[len+1] != '.') len++;
namelabel->c[0] = len;
}
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
Change History (most recent first):
$Log: mDNSPosix.h,v $
+Revision 1.9 2003/10/30 19:25:19 cheshire
+Fix warning on certain compilers
+
Revision 1.8 2003/08/12 19:56:26 cheshire
Update to APSL 2.0
struct mDNS_PlatformSupport_struct
{
// No additional data required for Posix at this time
+ long dummy[1]; // Some compilers don't like empty structures
};
extern mStatus mDNSPlatformPosixRefreshInterfaceList(mDNS *const m);
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
--- /dev/null
+#!/usr/bin/python
+
+# parselog.py, written and contributed by Kevin Marks
+#
+# Copyright (c) 2002-2003 Apple Computer, Inc. All rights reserved.
+#
+# @APPLE_LICENSE_HEADER_START@
+#
+# This file contains Original Code and/or Modifications of Original Code
+# as defined in and that are subject to the Apple Public Source License
+# Version 2.0 (the 'License'). You may not use this file except in
+# compliance with the License. Please obtain a copy of the License at
+# http://www.opensource.apple.com/apsl/ and read it before using this
+# file.
+#
+# The Original Code and all software distributed under the License are
+# distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+# EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+# INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+# Please see the License for the specific language governing rights and
+# limitations under the License.
+#
+# @APPLE_LICENSE_HEADER_END@
+#
+# Requires OS X 10.3 Panther for Python and Core Graphics Python APIs
+# Invoke from the command line with "parselog.py fname" where fname is a log file made by mDNSNetMonitor
+#
+# Caveats:
+# It expects plain ASCII, and doesn't handle spaces in record names very well right now
+# There's a procedure you can follow to 'sanitize' an mDNSNetMonitor log file to make it more paletable to parselog.py:
+# 1. Run mDNSNetMonitor in a terminal window.
+# When you have enough traffic, type Ctrl-C and save the content of the terminal window to disk.
+# Alternatively, you can use "mDNSNetMonitor > logfile" to write the text directly to a file.
+# You now have a UTF-8 text file.
+# 2. Open the UTF-8 text file using BBEdit or some other text editor.
+# (These instructions are for BBEdit, which I highly recommend you use when doing this.)
+# 3. Make sure BBEdit correctly interprets the file as UTF-8.
+# Either set your "Text Files Opening" preference to "UTF-8 no BOM", and drop the file onto BBEdit,
+# or manually open the File using "File -> Open" and make sure the "Read As" setting is set to "UTF-8 no BOM"
+# Check in the document pulldown menu in the window toolbar to make sure that it says "Encoding: UTF-8 no BOM"
+# 4. Use "Tools -> Convert to ASCII" to replace all special characters with their seven-bit ascii equivalents.
+# (e.g. curly quotes are converted to straight quotes)
+# 5. Do a grep search and replace. (Cmd-F; make sure Grep checkbox is turned on.)
+# Enter this search text : ^(.................\(................\S*) (.* -> .*)$
+# Enter this replacement text: \1-\2
+# Click "Replace All"
+# Press Cmd-Opt-= repeatedly until there are no more instances to be replaced.
+# You now have text file with all spaces in names changed to hyphens
+# 6. Save the new file. You can save it as "UTF-8 no BOM", or as "Mac Roman". It really doesn't matter which --
+# the file now contains only seven-bit ascii, so it's all the same no matter how you save it.
+# 7. Run "parselog.py fname"
+# 8. Open the resulting fname.pdf file with a PDF viewer like Preview on OS X
+#
+# Key to what you see:
+# Time is on the horizontal axis
+# Individual machines are shown on the vertical axis
+# Filled red circle: Normal query Hollow red circle: Query requesting unicast reply
+# Filled orange circle: Probe (service starting) Hollow orange circle: First probe (requesting unicast reply)
+# Filled green circle: Normal answer Hollow green circle: Goodbye message (record going away)
+# Hollow blue circle: Legacy query (from old client)
+# $Log: parselog.py,v $
+# Revision 1.2 2003/12/01 21:47:44 cheshire
+# APSL
+#
+# Revision 1.1 2003/10/10 02:14:17 cheshire
+# First checkin of parselog.py, a tool to create graphical representations of mDNSNetMonitor logs
+
+from CoreGraphics import *
+import math # for pi
+
+import string
+import sys, os
+import re
+
+def parselog(inFile):
+ f = open(inFile)
+ hunt = 'getTime'
+ ipList = {}
+ querySource = {}
+ plotPoints = []
+ maxTime=0
+ minTime = 36*60*60
+ spaceExp = re.compile(r'\s+')
+ print "Reading " + inFile
+ while 1:
+ lines = f.readlines(100000)
+ if not lines:
+ break
+ for line in lines:
+ if (hunt == 'skip'):
+ if (line == '\n' or line == '\r' or line ==''):
+ hunt = 'getTime'
+# else:
+# msg = ("skipped" , line)
+# print msg
+ elif (hunt == 'getTime'):
+ if (line == "^C\n" ):
+ break
+ time = line.split(' ')[0].split(':')
+ if (len(time)<3):
+ #print "bad time, skipping",time
+ hunt = 'skip'
+ else:
+ hunt = 'getIP'
+ #print (("getTime:%s" % (line)), time)
+ elif (hunt == 'getIP'):
+ ip = line.split(' ',1)
+ ip = ip[0]
+ secs=0
+ for t in time:
+ secs = secs*60 +float(t)
+ if (secs>maxTime):
+ maxTime=secs
+ if (secs<minTime):
+ minTime=secs
+ if (not ip in ipList):
+ ipList[ip] = [len(ipList), "", ""]
+ #print (("getIP:%s" % (line)), time, secs)
+ hunt = 'getQA'
+ elif (hunt == 'getQA'):
+ qaList = spaceExp.split(line)
+ # qaList[0] Source Address
+ # qaList[1] Operation type (PU/PM/QU/QM/AN etc.)
+ # qaList[2] Record type (PTR/SRV/TXT etc.)
+ # For QU/QM/LQ:
+ # qaList[3] RR name
+ # For PU/PM/AN/AN+/AD/AD+/KA:
+ # qaList[3] TTL
+ # qaList[4] RR name
+ # qaList[5...] "->" symbol and following rdata
+ #print qaList
+ if (qaList[0] == ip):
+ if (qaList[1] == '(QU)' or qaList[1] == '(LQ)' or qaList[1] == '(PU)'):
+ plotPoints.append([secs, ipList[ip][0], (qaList[1])[1:-1]])
+ elif (qaList[1] == '(QM)'):
+ plotPoints.append([secs, ipList[ip][0], (qaList[1])[1:-1]])
+ querySource[qaList[3]] = len(plotPoints)-1
+ elif (qaList[1] == '(PM)'):
+ plotPoints.append([secs, ipList[ip][0], (qaList[1])[1:-1]])
+ querySource[qaList[4]] = len(plotPoints)-1
+ elif (qaList[1] == '(AN)' or qaList[1] == '(AN+)' or qaList[1] == '(DE)'):
+ plotPoints.append([secs, ipList[ip][0], (qaList[1])[1:-1]])
+ try:
+ theQuery = querySource[qaList[4]]
+ theDelta = secs - plotPoints[theQuery][0]
+ if (theDelta < 1.0):
+ plotPoints[-1].append(querySource[qaList[4]])
+ #print "Answer AN+ %s points to %d" % (qaList[4],querySource[qaList[4]])
+ except:
+ #print "Couldn't find any preceeding question for", qaList
+ pass
+ elif (qaList[1] != '(KA)' and qaList[1] != '(AD)' and qaList[1] != '(AD+)'):
+ print "Operation unknown", qaList
+
+ if (qaList[1] == '(AN)' or qaList[1] == '(AN+)' or qaList[1] == '(AD)' or qaList[1] == '(AD+)'):
+ if (qaList[2] == 'HINFO'):
+ ipList[ip][1] = qaList[4]
+ ipList[ip][2] = string.join(qaList[6:])
+ #print ipList[ip][1]
+ elif (qaList[2] == 'AAAA'):
+ if (ipList[ip][1] == ""):
+ ipList[ip][1] = qaList[4]
+ ipList[ip][2] = "Panther"
+ elif (qaList[2] == 'Addr'):
+ if (ipList[ip][1] == ""):
+ ipList[ip][1] = qaList[4]
+ ipList[ip][2] = "Jaguar"
+ else:
+ if (line == '\n'):
+ hunt = 'getTime'
+ else:
+ hunt = 'skip'
+ f.close()
+ #print plotPoints
+ #print querySource
+ #width=20.0*(maxTime-minTime)
+ if (maxTime < minTime + 10.0):
+ maxTime = minTime + 10.0
+ typesize = 12
+ width=20.0*(maxTime-minTime)
+ pageHeight=(len(ipList)+1) * typesize
+ scale = width/(maxTime-minTime)
+ leftMargin = typesize * 60
+ bottomMargin = typesize
+ pageRect = CGRectMake (-leftMargin, -bottomMargin, leftMargin + width, bottomMargin + pageHeight) # landscape
+ outFile = "%s.pdf" % (".".join(inFile.split('.')[:-1]))
+ c = CGPDFContextCreateWithFilename (outFile, pageRect)
+ print "Writing " + outFile
+ ourColourSpace = c.getColorSpace()
+ # QM/QU red solid/hollow
+ # PM/PU orange solid/hollow
+ # LQ blue hollow
+ # AN/DA green solid/hollow
+ #colourLookup = {"L":(0.0,0.0,.75), "Q":(.75,0.0,0.0), "P":(.75,0.5,0.0), "A":(0.0,0.75,0.0), "D":(0.0,0.75,0.0), "?":(.25,0.25,0.25)}
+ colourLookup = {"L":(0.0,0.0,1.0), "Q":(1.0,0.0,0.0), "P":(1.0,0.8,0.0), "A":(0.0,1.0,0.0), "D":(0.0,1.0,0.0), "?":(1.0,1.0,1.0)}
+ c.beginPage (pageRect)
+ c.setRGBFillColor(.75,0.0,0.0,1.0)
+ c.setRGBStrokeColor(.25,0.75,0.25,1.0)
+ c.setLineWidth(0.25)
+ for point in plotPoints:
+ #c.addArc((point[0]-minTime)*scale,point[1]*typesize+6,5,0,2*math.pi,1)
+ c.addArc((point[0]-minTime)*scale,point[1]*typesize+6,typesize/4,0,2*math.pi,1)
+ theColour = colourLookup[(point[2])[0]]
+ if (((point[2])[0]) != "L") and (((point[2])[0]) != "Q") and (((point[2])[0]) != "P") and (((point[2])[0]) != "A") and (((point[2])[0]) != "D"):
+ print "Unknown", point
+ if ((point[2])[-1] == "M" or (point[2])[0]== "A"):
+ c.setRGBFillColor(theColour[0],theColour[1],theColour[2],.5)
+ c.fillPath()
+ else:
+ c.setRGBStrokeColor(theColour[0],theColour[1],theColour[2],.5)
+ c.setLineWidth(1.0)
+ c.strokePath()
+ c.setRGBStrokeColor(.25,0.75,0.25,1.0)
+ c.setLineWidth(0.25)
+ for index in point[3:]:
+ c.beginPath()
+ c.moveToPoint((point[0]-minTime)*scale,point[1]*typesize+6)
+ c.addLineToPoint(((plotPoints[index])[0]-minTime)*scale,(plotPoints[index])[1]*typesize+6)
+ c.closePath()
+ c.strokePath()
+ c.setRGBFillColor (0,0,0, 1)
+ c.setTextDrawingMode (kCGTextFill)
+ c.setTextMatrix (CGAffineTransformIdentity)
+ c.selectFont ('Gill Sans', typesize, kCGEncodingMacRoman)
+ c.setRGBStrokeColor(0.25,0.0,0.0,1.0)
+ c.setLineWidth(0.1)
+ for ip,[height,hname,hinfo] in ipList.items():
+ c.beginPath()
+ c.moveToPoint(pageRect.origin.x,height*typesize+6)
+ c.addLineToPoint(width,height*typesize+6)
+ c.closePath()
+ c.strokePath()
+ c.showTextAtPoint(pageRect.origin.x + 2, height*typesize + 2, ip, len(ip))
+ c.showTextAtPoint(pageRect.origin.x + 2 + typesize*8, height*typesize + 2, hname, len(hname))
+ c.showTextAtPoint(pageRect.origin.x + 2 + typesize*25, height*typesize + 2, hinfo, len(hinfo))
+ for time in range (int(minTime),int(maxTime)+1):
+ c.beginPath()
+ c.moveToPoint((time-minTime)*scale,pageRect.origin.y)
+ c.addLineToPoint((time-minTime)*scale,pageHeight)
+ c.closePath()
+ if (int(time) % 10 == 0):
+ theHours = time/3600
+ theMinutes = time/60 % 60
+ theSeconds = time % 60
+ theTimeString = '%d:%02d:%02d' % (theHours, theMinutes, theSeconds)
+ # Should measure string width, but don't know how to do that
+ theStringWidth = typesize * 3.5
+ c.showTextAtPoint((time-minTime)*scale - theStringWidth/2, pageRect.origin.y + 2, theTimeString, len(theTimeString))
+ c.setLineWidth(0.3)
+ else:
+ c.setLineWidth(0.1)
+ c.strokePath()
+ c.endPage()
+ c.finish()
+
+
+for arg in sys.argv[1:]:
+ parselog(arg)
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
+++ /dev/null
-Microsoft Visual Studio Solution File, Format Version 7.00
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Application", "Application.vcproj", "{EDE4B529-4CF5-4A49-9B6F-C10F0EA24278}"
-EndProject
-Global
- GlobalSection(SolutionConfiguration) = preSolution
- ConfigName.0 = Debug
- ConfigName.1 = Release
- EndGlobalSection
- GlobalSection(ProjectDependencies) = postSolution
- EndGlobalSection
- GlobalSection(ProjectConfiguration) = postSolution
- {EDE4B529-4CF5-4A49-9B6F-C10F0EA24278}.Debug.ActiveCfg = Debug|Win32
- {EDE4B529-4CF5-4A49-9B6F-C10F0EA24278}.Debug.Build.0 = Debug|Win32
- {EDE4B529-4CF5-4A49-9B6F-C10F0EA24278}.Release.ActiveCfg = Release|Win32
- {EDE4B529-4CF5-4A49-9B6F-C10F0EA24278}.Release.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- EndGlobalSection
- GlobalSection(ExtensibilityAddIns) = postSolution
- EndGlobalSection
-EndGlobal
+++ /dev/null
-<?xml version="1.0" encoding = "Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.00"
- Name="Application"
- ProjectGUID="{EDE4B529-4CF5-4a49-9B6F-C10F0EA24278}"
- Keyword="MFCProj">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- UseOfMFC="1"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=".\Resources;..\;..\..\..\..\mDNSCore;..\..\..\mDNSWindows;..\..\..\DNSServices"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;DEBUG"
- StringPooling="TRUE"
- MinimalRebuild="FALSE"
- BasicRuntimeChecks="3"
- SmallerTypeCheck="FALSE"
- RuntimeLibrary="1"
- BufferSecurityCheck="TRUE"
- EnableFunctionLevelLinking="FALSE"
- ForceConformanceInForLoopScope="TRUE"
- RuntimeTypeInfo="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderThrough="StdAfx.h"
- PrecompiledHeaderFile=".\Debug/Application.pch"
- AssemblerListingLocation=".\Debug/"
- ObjectFile=".\Debug/"
- ProgramDataBaseFileName=".\Debug/"
- BrowseInformation="1"
- WarningLevel="4"
- WarnAsError="TRUE"
- SuppressStartupBanner="TRUE"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386"
- AdditionalDependencies="ws2_32.lib nafxcwd.lib LIBCMTD.lib"
- OutputFile="Rendezvous Browser Debug.exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- IgnoreDefaultLibraryNames="wsock32.lib;nafxcwd.lib;LIBCMTD.lib"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile=".\Debug/Application.pdb"
- SubSystem="2"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="FALSE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\Debug/Application.tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_AFXDLL;_DEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory=".\Release"
- IntermediateDirectory=".\Release"
- ConfigurationType="1"
- UseOfMFC="1"
- CharacterSet="2"
- WholeProgramOptimization="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="1"
- GlobalOptimizations="TRUE"
- InlineFunctionExpansion="0"
- FavorSizeOrSpeed="2"
- OmitFramePointers="FALSE"
- OptimizeForWindowsApplication="FALSE"
- AdditionalIncludeDirectories=".\Resources;..\;..\..\..\..\mDNSCore;..\..\..\mDNSWindows;..\..\..\DNSServices"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
- StringPooling="TRUE"
- MinimalRebuild="FALSE"
- RuntimeLibrary="0"
- BufferSecurityCheck="FALSE"
- EnableFunctionLevelLinking="FALSE"
- ForceConformanceInForLoopScope="TRUE"
- RuntimeTypeInfo="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderThrough="stdafx.h"
- PrecompiledHeaderFile=".\Release/Application.pch"
- AssemblerListingLocation=".\Release/"
- ObjectFile=".\Release/"
- ProgramDataBaseFileName=".\Release/"
- BrowseInformation="1"
- WarningLevel="4"
- WarnAsError="TRUE"
- SuppressStartupBanner="TRUE"
- Detect64BitPortabilityProblems="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386"
- AdditionalDependencies="ws2_32.lib nafxcw.lib LIBCMT.lib"
- OutputFile="Rendezvous Browser.exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- IgnoreDefaultLibraryNames="wsock32.lib;nafxcw.lib;LIBCMT.lib"
- ProgramDatabaseFile=".\Release/Application.pdb"
- SubSystem="2"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\Release/Application.tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_AFXDLL;NDEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- <Configuration
- Name="All|Win32"
- OutputDirectory="All"
- IntermediateDirectory="All"
- ConfigurationType="1">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories=""/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- </Configurations>
- <Files>
- <Filter
- Name="Source Files"
- Filter="">
- <File
- RelativePath="Sources\AboutDialog.cpp">
- </File>
- <File
- RelativePath="Sources\AboutDialog.h">
- </File>
- <File
- RelativePath="Sources\Application.cpp">
- </File>
- <File
- RelativePath="Sources\Application.h">
- </File>
- <File
- RelativePath="Sources\ChooserDialog.cpp">
- </File>
- <File
- RelativePath="Sources\ChooserDialog.h">
- </File>
- <File
- RelativePath="Sources\StdAfx.cpp">
- </File>
- <File
- RelativePath="Sources\StdAfx.h">
- </File>
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;rc">
- <File
- RelativePath="Resources\Application.ico">
- </File>
- <File
- RelativePath="Resources\Application.rc">
- </File>
- <File
- RelativePath="Resources\Application.rc2">
- </File>
- <File
- RelativePath=".\Resources\Resource.h">
- </File>
- </Filter>
- <Filter
- Name="Rendezvous"
- Filter="">
- <File
- RelativePath="..\..\..\DNSServices\DNSServices.c">
- </File>
- <File
- RelativePath="..\..\..\..\mDNSCore\mDNS.c">
- </File>
- <File
- RelativePath="..\..\..\mDNSWin32.c">
- </File>
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
--- /dev/null
+Microsoft Visual Studio Solution File, Format Version 7.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Application", "ApplicationVS2002.vcproj", "{EDE4B529-4CF5-4A49-9B6F-C10F0EA24278}"
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ ConfigName.0 = All
+ ConfigName.1 = Debug
+ ConfigName.2 = Release
+ EndGlobalSection
+ GlobalSection(ProjectDependencies) = postSolution
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {EDE4B529-4CF5-4A49-9B6F-C10F0EA24278}.All.ActiveCfg = All|Win32
+ {EDE4B529-4CF5-4A49-9B6F-C10F0EA24278}.All.Build.0 = All|Win32
+ {EDE4B529-4CF5-4A49-9B6F-C10F0EA24278}.Debug.ActiveCfg = Debug|Win32
+ {EDE4B529-4CF5-4A49-9B6F-C10F0EA24278}.Debug.Build.0 = Debug|Win32
+ {EDE4B529-4CF5-4A49-9B6F-C10F0EA24278}.Release.ActiveCfg = Release|Win32
+ {EDE4B529-4CF5-4A49-9B6F-C10F0EA24278}.Release.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
--- /dev/null
+<?xml version="1.0" encoding = "Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.00"
+ Name="Application"
+ ProjectGUID="{EDE4B529-4CF5-4A49-9B6F-C10F0EA24278}"
+ Keyword="MFCProj">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="Debug"
+ IntermediateDirectory="Debug"
+ ConfigurationType="1"
+ UseOfMFC="1"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=".\Resources;..\;..\..\..\..\mDNSCore;..\..\..\mDNSWindows;..\..\..\DNSServices"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;DEBUG"
+ StringPooling="TRUE"
+ MinimalRebuild="FALSE"
+ BasicRuntimeChecks="3"
+ SmallerTypeCheck="FALSE"
+ RuntimeLibrary="1"
+ BufferSecurityCheck="TRUE"
+ EnableFunctionLevelLinking="FALSE"
+ ForceConformanceInForLoopScope="TRUE"
+ RuntimeTypeInfo="TRUE"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderThrough="StdAfx.h"
+ PrecompiledHeaderFile=".\Debug/Application.pch"
+ AssemblerListingLocation=".\Debug/"
+ ObjectFile=".\Debug/"
+ ProgramDataBaseFileName=".\Debug/"
+ BrowseInformation="1"
+ WarningLevel="4"
+ WarnAsError="TRUE"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/MACHINE:I386"
+ AdditionalDependencies="ws2_32.lib nafxcwd.lib LIBCMTD.lib"
+ OutputFile="Rendezvous Browser Debug.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ IgnoreDefaultLibraryNames="wsock32.lib;nafxcwd.lib;LIBCMTD.lib"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\Debug/Application.pdb"
+ SubSystem="2"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="_DEBUG"
+ MkTypLibCompatible="FALSE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Debug/Application.tlb"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_AFXDLL;_DEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release"
+ ConfigurationType="1"
+ UseOfMFC="1"
+ CharacterSet="2"
+ WholeProgramOptimization="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="1"
+ GlobalOptimizations="TRUE"
+ InlineFunctionExpansion="0"
+ FavorSizeOrSpeed="2"
+ OmitFramePointers="FALSE"
+ OptimizeForWindowsApplication="FALSE"
+ AdditionalIncludeDirectories=".\Resources;..\;..\..\..\..\mDNSCore;..\..\..\mDNSWindows;..\..\..\DNSServices"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+ StringPooling="TRUE"
+ MinimalRebuild="FALSE"
+ RuntimeLibrary="0"
+ BufferSecurityCheck="FALSE"
+ EnableFunctionLevelLinking="FALSE"
+ ForceConformanceInForLoopScope="TRUE"
+ RuntimeTypeInfo="TRUE"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderThrough="stdafx.h"
+ PrecompiledHeaderFile=".\Release/Application.pch"
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
+ BrowseInformation="1"
+ WarningLevel="4"
+ WarnAsError="TRUE"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="TRUE"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/MACHINE:I386"
+ AdditionalDependencies="ws2_32.lib nafxcw.lib LIBCMT.lib"
+ OutputFile="Rendezvous Browser.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ IgnoreDefaultLibraryNames="wsock32.lib;nafxcw.lib;LIBCMT.lib"
+ ProgramDatabaseFile=".\Release/Application.pdb"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Release/Application.tlb"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_AFXDLL;NDEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ </Configuration>
+ <Configuration
+ Name="All|Win32"
+ OutputDirectory="All"
+ IntermediateDirectory="All"
+ ConfigurationType="1">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ </Configuration>
+ </Configurations>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="">
+ <File
+ RelativePath="Sources\AboutDialog.cpp">
+ </File>
+ <File
+ RelativePath="Sources\AboutDialog.h">
+ </File>
+ <File
+ RelativePath="Sources\Application.cpp">
+ </File>
+ <File
+ RelativePath="Sources\Application.h">
+ </File>
+ <File
+ RelativePath="Sources\ChooserDialog.cpp">
+ </File>
+ <File
+ RelativePath="Sources\ChooserDialog.h">
+ </File>
+ <File
+ RelativePath="Sources\StdAfx.cpp">
+ </File>
+ <File
+ RelativePath="Sources\StdAfx.h">
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;rc">
+ <File
+ RelativePath="Resources\Application.ico">
+ </File>
+ <File
+ RelativePath="Resources\Application.rc">
+ </File>
+ <File
+ RelativePath="Resources\Application.rc2">
+ </File>
+ <File
+ RelativePath=".\Resources\Resource.h">
+ </File>
+ </Filter>
+ <Filter
+ Name="Rendezvous"
+ Filter="">
+ <File
+ RelativePath="..\..\..\DNSServices\DNSServices.c">
+ </File>
+ <File
+ RelativePath="..\..\..\..\mDNSCore\mDNS.c">
+ </File>
+ <File
+ RelativePath="..\..\..\mDNSWin32.c">
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
--- /dev/null
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Application", "ApplicationVS2003.vcproj", "{EDE4B529-4CF5-4A49-9B6F-C10F0EA24278}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ All = All
+ Debug = Debug
+ Release = Release
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {EDE4B529-4CF5-4A49-9B6F-C10F0EA24278}.All.ActiveCfg = All|Win32
+ {EDE4B529-4CF5-4A49-9B6F-C10F0EA24278}.All.Build.0 = All|Win32
+ {EDE4B529-4CF5-4A49-9B6F-C10F0EA24278}.Debug.ActiveCfg = Debug|Win32
+ {EDE4B529-4CF5-4A49-9B6F-C10F0EA24278}.Debug.Build.0 = Debug|Win32
+ {EDE4B529-4CF5-4A49-9B6F-C10F0EA24278}.Release.ActiveCfg = Release|Win32
+ {EDE4B529-4CF5-4A49-9B6F-C10F0EA24278}.Release.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
--- /dev/null
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="Application"
+ ProjectGUID="{EDE4B529-4CF5-4A49-9B6F-C10F0EA24278}"
+ Keyword="MFCProj">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="Debug"
+ IntermediateDirectory="Debug"
+ ConfigurationType="1"
+ UseOfMFC="1"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=".\Resources;..\;..\..\..\..\mDNSCore;..\..\..\mDNSWindows;..\..\..\DNSServices"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;DEBUG"
+ StringPooling="TRUE"
+ MinimalRebuild="FALSE"
+ BasicRuntimeChecks="3"
+ SmallerTypeCheck="FALSE"
+ RuntimeLibrary="1"
+ BufferSecurityCheck="TRUE"
+ EnableFunctionLevelLinking="FALSE"
+ ForceConformanceInForLoopScope="TRUE"
+ RuntimeTypeInfo="TRUE"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderThrough="StdAfx.h"
+ PrecompiledHeaderFile=".\Debug/Application.pch"
+ AssemblerListingLocation=".\Debug/"
+ ObjectFile=".\Debug/"
+ ProgramDataBaseFileName=".\Debug/"
+ BrowseInformation="1"
+ WarningLevel="4"
+ WarnAsError="TRUE"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/MACHINE:I386"
+ AdditionalDependencies="ws2_32.lib nafxcwd.lib LIBCMTD.lib"
+ OutputFile="Rendezvous Browser Debug.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ IgnoreDefaultLibraryNames="wsock32.lib;nafxcwd.lib;LIBCMTD.lib"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\Debug/Application.pdb"
+ SubSystem="2"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="_DEBUG"
+ MkTypLibCompatible="FALSE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Debug/Application.tlb"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_AFXDLL;_DEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release"
+ ConfigurationType="1"
+ UseOfMFC="1"
+ CharacterSet="2"
+ WholeProgramOptimization="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="1"
+ GlobalOptimizations="TRUE"
+ InlineFunctionExpansion="0"
+ FavorSizeOrSpeed="2"
+ OmitFramePointers="FALSE"
+ OptimizeForWindowsApplication="FALSE"
+ AdditionalIncludeDirectories=".\Resources;..\;..\..\..\..\mDNSCore;..\..\..\mDNSWindows;..\..\..\DNSServices"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+ StringPooling="TRUE"
+ MinimalRebuild="FALSE"
+ RuntimeLibrary="0"
+ BufferSecurityCheck="FALSE"
+ EnableFunctionLevelLinking="FALSE"
+ ForceConformanceInForLoopScope="TRUE"
+ RuntimeTypeInfo="TRUE"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderThrough="stdafx.h"
+ PrecompiledHeaderFile=".\Release/Application.pch"
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
+ BrowseInformation="1"
+ WarningLevel="4"
+ WarnAsError="TRUE"
+ SuppressStartupBanner="TRUE"
+ Detect64BitPortabilityProblems="TRUE"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/MACHINE:I386"
+ AdditionalDependencies="ws2_32.lib nafxcw.lib LIBCMT.lib"
+ OutputFile="Rendezvous Browser.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ IgnoreDefaultLibraryNames="wsock32.lib;nafxcw.lib;LIBCMT.lib"
+ ProgramDatabaseFile=".\Release/Application.pdb"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Release/Application.tlb"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_AFXDLL;NDEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="All|Win32"
+ OutputDirectory="All"
+ IntermediateDirectory="All"
+ ConfigurationType="1">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="">
+ <File
+ RelativePath="Sources\AboutDialog.cpp">
+ </File>
+ <File
+ RelativePath="Sources\AboutDialog.h">
+ </File>
+ <File
+ RelativePath="Sources\Application.cpp">
+ </File>
+ <File
+ RelativePath="Sources\Application.h">
+ </File>
+ <File
+ RelativePath="Sources\ChooserDialog.cpp">
+ </File>
+ <File
+ RelativePath="Sources\ChooserDialog.h">
+ </File>
+ <File
+ RelativePath="Sources\StdAfx.cpp">
+ </File>
+ <File
+ RelativePath="Sources\StdAfx.h">
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;rc">
+ <File
+ RelativePath="Resources\Application.ico">
+ </File>
+ <File
+ RelativePath="Resources\Application.rc">
+ </File>
+ <File
+ RelativePath="Resources\Application.rc2">
+ </File>
+ <File
+ RelativePath=".\Resources\Resource.h">
+ </File>
+ </Filter>
+ <Filter
+ Name="Rendezvous"
+ Filter="">
+ <File
+ RelativePath="..\..\..\DNSServices\DNSServices.c">
+ </File>
+ <File
+ RelativePath="..\..\..\..\mDNSCore\mDNS.c">
+ </File>
+ <File
+ RelativePath="..\..\..\mDNSWin32.c">
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
+++ /dev/null
-Microsoft Visual Studio Solution File, Format Version 7.00
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Tool", "ToolWin32.vcproj", "{F66EFE7E-50A6-44D4-87C7-742B303BA852}"
-EndProject
-Global
- GlobalSection(SolutionConfiguration) = preSolution
- ConfigName.0 = Debug
- ConfigName.1 = Release
- EndGlobalSection
- GlobalSection(ProjectDependencies) = postSolution
- EndGlobalSection
- GlobalSection(ProjectConfiguration) = postSolution
- {F66EFE7E-50A6-44D4-87C7-742B303BA852}.Debug.ActiveCfg = Debug|Win32
- {F66EFE7E-50A6-44D4-87C7-742B303BA852}.Debug.Build.0 = Debug|Win32
- {F66EFE7E-50A6-44D4-87C7-742B303BA852}.Release.ActiveCfg = Release|Win32
- {F66EFE7E-50A6-44D4-87C7-742B303BA852}.Release.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- EndGlobalSection
- GlobalSection(ExtensibilityAddIns) = postSolution
- EndGlobalSection
-EndGlobal
+++ /dev/null
-<?xml version="1.0" encoding = "Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.00"
- Name="Tool"
- ProjectGUID="{F66EFE7E-50A6-44D4-87C7-742B303BA852}"
- Keyword="Win32Proj">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- CharacterSet="1">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\mDNSCore;..\..\..\mDNSWindows;..\..\DNSServices"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- StringPooling="TRUE"
- MinimalRebuild="TRUE"
- BasicRuntimeChecks="3"
- SmallerTypeCheck="FALSE"
- RuntimeLibrary="1"
- BufferSecurityCheck="TRUE"
- ForceConformanceInForLoopScope="TRUE"
- UsePrecompiledHeader="2"
- BrowseInformation="1"
- WarningLevel="4"
- WarnAsError="TRUE"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="4"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib"
- OutputFile="$(OutDir)/Tool.exe"
- LinkIncremental="2"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(OutDir)/Tool.pdb"
- SubSystem="1"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- CharacterSet="1"
- WholeProgramOptimization="FALSE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="2"
- FavorSizeOrSpeed="2"
- OmitFramePointers="TRUE"
- AdditionalIncludeDirectories="..\..\..\mDNSCore;..\..\..\mDNSWindows;..\..\DNSServices"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- StringPooling="TRUE"
- ExceptionHandling="FALSE"
- RuntimeLibrary="0"
- BufferSecurityCheck="FALSE"
- EnableFunctionLevelLinking="FALSE"
- DisableLanguageExtensions="FALSE"
- ForceConformanceInForLoopScope="TRUE"
- UsePrecompiledHeader="2"
- WarningLevel="4"
- WarnAsError="TRUE"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="3"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib"
- OutputFile="$(OutDir)/Tool.exe"
- LinkIncremental="1"
- GenerateDebugInformation="TRUE"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- <Configuration
- Name="all|Win32"
- OutputDirectory="all"
- IntermediateDirectory="all"
- ConfigurationType="1">
- <Tool
- Name="VCCLCompilerTool"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- </Configuration>
- </Configurations>
- <Files>
- <Filter
- Name="Rendezvous"
- Filter="">
- <File
- RelativePath="..\..\DNSServices\DNSServiceDiscovery.c">
- </File>
- <File
- RelativePath="..\..\DNSServices\DNSServiceDiscovery.h">
- </File>
- <File
- RelativePath="..\..\DNSServices\DNSServices.c">
- </File>
- <File
- RelativePath="..\..\DNSServices\DNSServices.h">
- </File>
- <File
- RelativePath="..\..\..\mDNSCore\mDNS.c">
- </File>
- <File
- RelativePath="..\..\..\mDNSCore\mDNSClientAPI.h">
- </File>
- <File
- RelativePath="..\..\..\mDNSCore\mDNSDebug.h">
- </File>
- <File
- RelativePath="..\..\..\mDNSCore\mDNSPlatformFunctions.h">
- </File>
- <File
- RelativePath="..\..\mDNSWin32.c">
- </File>
- <File
- RelativePath="..\..\mDNSWin32.h">
- </File>
- </Filter>
- <File
- RelativePath="Tool.c">
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
--- /dev/null
+Microsoft Visual Studio Solution File, Format Version 7.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Tool", "ToolWin32VS2002.vcproj", "{F66EFE7E-50A6-44D4-87C7-742B303BA852}"
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ ConfigName.0 = all
+ ConfigName.1 = Debug
+ ConfigName.2 = Release
+ EndGlobalSection
+ GlobalSection(ProjectDependencies) = postSolution
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {F66EFE7E-50A6-44D4-87C7-742B303BA852}.all.ActiveCfg = all|Win32
+ {F66EFE7E-50A6-44D4-87C7-742B303BA852}.all.Build.0 = all|Win32
+ {F66EFE7E-50A6-44D4-87C7-742B303BA852}.Debug.ActiveCfg = Debug|Win32
+ {F66EFE7E-50A6-44D4-87C7-742B303BA852}.Debug.Build.0 = Debug|Win32
+ {F66EFE7E-50A6-44D4-87C7-742B303BA852}.Release.ActiveCfg = Release|Win32
+ {F66EFE7E-50A6-44D4-87C7-742B303BA852}.Release.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
--- /dev/null
+<?xml version="1.0" encoding = "Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.00"
+ Name="Tool"
+ ProjectGUID="{F66EFE7E-50A6-44D4-87C7-742B303BA852}"
+ Keyword="Win32Proj">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="Debug"
+ IntermediateDirectory="Debug"
+ ConfigurationType="1"
+ CharacterSet="1">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\..\mDNSCore;..\..\..\mDNSWindows;..\..\DNSServices"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+ StringPooling="TRUE"
+ MinimalRebuild="TRUE"
+ BasicRuntimeChecks="3"
+ SmallerTypeCheck="FALSE"
+ RuntimeLibrary="1"
+ BufferSecurityCheck="TRUE"
+ ForceConformanceInForLoopScope="TRUE"
+ UsePrecompiledHeader="2"
+ BrowseInformation="1"
+ WarningLevel="4"
+ WarnAsError="TRUE"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="4"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ OutputFile="$(OutDir)/Tool.exe"
+ LinkIncremental="2"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile="$(OutDir)/Tool.pdb"
+ SubSystem="1"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="Release"
+ IntermediateDirectory="Release"
+ ConfigurationType="1"
+ CharacterSet="1"
+ WholeProgramOptimization="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="2"
+ FavorSizeOrSpeed="2"
+ OmitFramePointers="TRUE"
+ AdditionalIncludeDirectories="..\..\..\mDNSCore;..\..\..\mDNSWindows;..\..\DNSServices"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ StringPooling="TRUE"
+ ExceptionHandling="FALSE"
+ RuntimeLibrary="0"
+ BufferSecurityCheck="FALSE"
+ EnableFunctionLevelLinking="FALSE"
+ DisableLanguageExtensions="FALSE"
+ ForceConformanceInForLoopScope="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="4"
+ WarnAsError="TRUE"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ OutputFile="$(OutDir)/Tool.exe"
+ LinkIncremental="1"
+ GenerateDebugInformation="TRUE"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ </Configuration>
+ <Configuration
+ Name="all|Win32"
+ OutputDirectory="all"
+ IntermediateDirectory="all"
+ ConfigurationType="1">
+ <Tool
+ Name="VCCLCompilerTool"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ </Configuration>
+ </Configurations>
+ <Files>
+ <Filter
+ Name="Rendezvous"
+ Filter="">
+ <File
+ RelativePath="..\..\DNSServices\DNSServiceDiscovery.c">
+ </File>
+ <File
+ RelativePath="..\..\DNSServices\DNSServiceDiscovery.h">
+ </File>
+ <File
+ RelativePath="..\..\DNSServices\DNSServices.c">
+ </File>
+ <File
+ RelativePath="..\..\DNSServices\DNSServices.h">
+ </File>
+ <File
+ RelativePath="..\..\..\mDNSCore\mDNS.c">
+ </File>
+ <File
+ RelativePath="..\..\..\mDNSCore\mDNSClientAPI.h">
+ </File>
+ <File
+ RelativePath="..\..\..\mDNSCore\mDNSDebug.h">
+ </File>
+ <File
+ RelativePath="..\..\..\mDNSCore\mDNSPlatformFunctions.h">
+ </File>
+ <File
+ RelativePath="..\..\mDNSWin32.c">
+ </File>
+ <File
+ RelativePath="..\..\mDNSWin32.h">
+ </File>
+ </Filter>
+ <File
+ RelativePath="Tool.c">
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
--- /dev/null
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Tool", "ToolWin32VS2003.vcproj", "{F66EFE7E-50A6-44D4-87C7-742B303BA852}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ all = all
+ Debug = Debug
+ Release = Release
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {F66EFE7E-50A6-44D4-87C7-742B303BA852}.all.ActiveCfg = all|Win32
+ {F66EFE7E-50A6-44D4-87C7-742B303BA852}.all.Build.0 = all|Win32
+ {F66EFE7E-50A6-44D4-87C7-742B303BA852}.Debug.ActiveCfg = Debug|Win32
+ {F66EFE7E-50A6-44D4-87C7-742B303BA852}.Debug.Build.0 = Debug|Win32
+ {F66EFE7E-50A6-44D4-87C7-742B303BA852}.Release.ActiveCfg = Release|Win32
+ {F66EFE7E-50A6-44D4-87C7-742B303BA852}.Release.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
--- /dev/null
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="Tool"
+ ProjectGUID="{F66EFE7E-50A6-44D4-87C7-742B303BA852}"
+ Keyword="Win32Proj">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="Debug"
+ IntermediateDirectory="Debug"
+ ConfigurationType="1"
+ CharacterSet="1">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\..\mDNSCore;..\..\..\mDNSWindows;..\..\DNSServices"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+ StringPooling="TRUE"
+ MinimalRebuild="TRUE"
+ BasicRuntimeChecks="3"
+ SmallerTypeCheck="FALSE"
+ RuntimeLibrary="1"
+ BufferSecurityCheck="TRUE"
+ ForceConformanceInForLoopScope="TRUE"
+ UsePrecompiledHeader="2"
+ BrowseInformation="1"
+ WarningLevel="4"
+ WarnAsError="TRUE"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="4"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ OutputFile="$(OutDir)/Tool.exe"
+ LinkIncremental="2"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile="$(OutDir)/Tool.pdb"
+ SubSystem="1"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="Release"
+ IntermediateDirectory="Release"
+ ConfigurationType="1"
+ CharacterSet="1"
+ WholeProgramOptimization="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="2"
+ FavorSizeOrSpeed="2"
+ OmitFramePointers="TRUE"
+ AdditionalIncludeDirectories="..\..\..\mDNSCore;..\..\..\mDNSWindows;..\..\DNSServices"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ StringPooling="TRUE"
+ ExceptionHandling="FALSE"
+ RuntimeLibrary="0"
+ BufferSecurityCheck="FALSE"
+ EnableFunctionLevelLinking="FALSE"
+ DisableLanguageExtensions="FALSE"
+ ForceConformanceInForLoopScope="TRUE"
+ UsePrecompiledHeader="2"
+ WarningLevel="4"
+ WarnAsError="TRUE"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib"
+ OutputFile="$(OutDir)/Tool.exe"
+ LinkIncremental="1"
+ GenerateDebugInformation="TRUE"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="all|Win32"
+ OutputDirectory="all"
+ IntermediateDirectory="all"
+ ConfigurationType="1">
+ <Tool
+ Name="VCCLCompilerTool"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Rendezvous"
+ Filter="">
+ <File
+ RelativePath="..\..\DNSServices\DNSServiceDiscovery.c">
+ </File>
+ <File
+ RelativePath="..\..\DNSServices\DNSServiceDiscovery.h">
+ </File>
+ <File
+ RelativePath="..\..\DNSServices\DNSServices.c">
+ </File>
+ <File
+ RelativePath="..\..\DNSServices\DNSServices.h">
+ </File>
+ <File
+ RelativePath="..\..\..\mDNSCore\mDNS.c">
+ </File>
+ <File
+ RelativePath="..\..\..\mDNSCore\mDNSClientAPI.h">
+ </File>
+ <File
+ RelativePath="..\..\..\mDNSCore\mDNSDebug.h">
+ </File>
+ <File
+ RelativePath="..\..\..\mDNSCore\mDNSPlatformFunctions.h">
+ </File>
+ <File
+ RelativePath="..\..\mDNSWin32.c">
+ </File>
+ <File
+ RelativePath="..\..\mDNSWin32.h">
+ </File>
+ </Filter>
+ <File
+ RelativePath="Tool.c">
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
*
* @APPLE_LICENSE_HEADER_START@
*
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in