Home | History | Annotate | Download | only in mDNSCore

Lines Matching refs:mDNS

221 // mDNS defines its own names for these common types to simplify portability across
315 // mDNS return values are in the range FFFE FF00 (-65792) to FFFE FFFF (-65537)
363 // mStatus_MemFree is the last legal mDNS error code, at the end of the range allocated for mDNS
438 typedef struct mDNS_struct mDNS;
480 mDNS *m;
641 // * Unique Resource Records should be unique among hosts within any given mDNS scope
648 // * Known Unique Resource Records are treated like Unique Resource Records, except that mDNS does
691 kDNSRecordTypeVerified = 0x10, // Unique means mDNS should check that name is unique (and then send immediate responses)
692 kDNSRecordTypeKnownUnique = 0x20, // Known Unique means mDNS can assume name is unique without checking
882 // Note: Within an mDNSRecordCallback mDNS all API calls are legal except mDNS_Init(), mDNS_Exit(), mDNS_Execute()
883 typedef void mDNSRecordCallback(mDNS *const m, AuthRecord *const rr, mStatus result);
886 // Restrictions: An mDNSRecordUpdateCallback may not make any mDNS API calls.
888 // The internal data structures of the mDNS code may not be in a state where mDNS API calls may be made safely.
889 typedef void mDNSRecordUpdateCallback(mDNS *const m, AuthRecord *const rr, RData *OldRData, mDNSu16 OldRDLen);
975 mDNS *m;
989 typedef void (*NATTraversalClientCallback)(mDNS *m, NATTraversalInfo *n);
1270 // IsLocalDomain alone is not sufficient to determine that a record is mDNS or uDNS. By default domain names within
1272 // as mDNS records, but it is also possible to force any record (even those not within one of the inherently local
1273 // domains) to be handled as an mDNS record by setting the ForceMCast flag, or by setting a non-zero InterfaceID.
1276 // The same applies to Sleep Proxy records, which we will answer for when queried via mDNS, but we never want to try
1379 // Note: Within an mDNSServiceCallback mDNS all API calls are legal except mDNS_Init(), mDNS_Exit(), mDNS_Execute()
1380 typedef void mDNSServiceCallback(mDNS *const m, ServiceRecordSet *const sr, mStatus result);
1495 // Note: Within an mDNSQuestionCallback mDNS all API calls are legal except mDNS_Init(), mDNS_Exit(), mDNS_Execute()
1497 typedef void mDNSQuestionCallback(mDNS *const m, DNSQuestion *question, const ResourceRecord *const answer, QC_result AddRecord);
1574 mDNSBool ForceMCast; // Set by client to force mDNS query, even for apparently uDNS names
1600 // Note: Within an mDNSServiceInfoQueryCallback mDNS all API calls are legal except mDNS_Init(), mDNS_Exit(), mDNS_Execute()
1602 typedef void mDNSServiceInfoQueryCallback(mDNS *const m, ServiceInfoQuery *query);
1626 typedef void ZoneDataCallback(mDNS *const m, mStatus err, const ZoneData *result);
1644 extern ZoneData *StartGetZoneData(mDNS *const m, const domainname *const name, const ZoneService target, ZoneDataCallback callback, void *callbackInfo);
1645 extern void CancelGetZoneData(mDNS *const m, ZoneData *nta);
1758 #pragma mark - Main mDNS object, used to hold all the mDNS state
1761 typedef void mDNSCallback(mDNS *const m, mStatus result);
1810 mDNSs32 timenow; // The time that this particular activation of the mDNS code started
1814 mDNSs32 SuppressSending; // Don't send local-link mDNS packets during this time
1839 // These fields only required for mDNS Searcher...
1856 // Fields below only required for mDNS Responder...
2070 // Every client should call mDNS_Init, passing in storage for the mDNS object and the mDNS_PlatformSupport object.
2092 // higher-layer API calls) must also set DivertMulticastAdvertisements in the mDNS structure and
2095 // When mDNS has finished setting up the client's callback is called
2109 // Call mDNS_StartQuery to initiate a query. mDNS will proceed to issue Multicast DNS query packets, and any time a response
2114 // The main mDNS routines call mDNSPlatformLock() on entry and mDNSPlatformUnlock() on exit;
2117 // mDNSPlatformLock/Unlock need to disable interrupts or do similar concurrency control to ensure that the mDNS
2120 extern mStatus mDNS_Init (mDNS *const m, mDNS_PlatformSupport *const p,
2133 extern void mDNS_ConfigChanged(mDNS *const m);
2134 extern void mDNS_GrowCache (mDNS *const m, CacheEntity *storage, mDNSu32 numrecords);
2135 extern void mDNS_GrowAuth (mDNS *const m, AuthEntity *storage, mDNSu32 numrecords);
2136 extern void mDNS_StartExit (mDNS *const m);
2137 extern void mDNS_FinalExit (mDNS *const m);
2141 extern mDNSs32 mDNS_Execute (mDNS *const m);
2143 extern mStatus mDNS_Register (mDNS *const m, AuthRecord *const rr);
2144 extern mStatus mDNS_Update (mDNS *const m, AuthRecord *const rr, mDNSu32 newttl,
2146 extern mStatus mDNS_Deregister(mDNS *const m, AuthRecord *const rr);
2148 extern mStatus mDNS_StartQuery(mDNS *const m, DNSQuestion *const question);
2149 extern mStatus mDNS_StopQuery (mDNS *const m, DNSQuestion *const question);
2150 extern mStatus mDNS_StopQueryWithRemoves(mDNS *const m, DNSQuestion *const question);
2151 extern mStatus mDNS_Reconfirm (mDNS *const m, CacheRecord *const cacherr);
2152 extern mStatus mDNS_ReconfirmByValue(mDNS *const m, ResourceRecord *const rr);
2153 extern void mDNS_PurgeCacheResourceRecord(mDNS *const m, CacheRecord *rr);
2154 extern mDNSs32 mDNS_TimeNow(const mDNS *const m);
2156 extern mStatus mDNS_StartNATOperation(mDNS *const m, NATTraversalInfo *traversal);
2157 extern mStatus mDNS_StopNATOperation(mDNS *const m, NATTraversalInfo *traversal);
2158 extern mStatus mDNS_StopNATOperation_internal(mDNS *m, NATTraversalInfo *traversal);
2160 extern DomainAuthInfo *GetAuthInfoForName(mDNS *m, const domainname *const name);
2162 extern void mDNS_UpdateAllowSleep(mDNS *const m);
2216 extern mStatus mDNS_RegisterService (mDNS *const m, ServiceRecordSet *sr,
2221 extern mStatus mDNS_AddRecordToService(mDNS *const m, ServiceRecordSet *sr, ExtraResourceRecord *extra, RData *rdata, mDNSu32 ttl, mDNSu32 includeP2P);
2222 extern mStatus mDNS_RemoveRecordFromService(mDNS *const m, ServiceRecordSet *sr, ExtraResourceRecord *extra, mDNSRecordCallback MemFreeCallback, void *Context);
2223 extern mStatus mDNS_RenameAndReregisterService(mDNS *const m, ServiceRecordSet *const sr, const domainlabel *newname);
2224 extern mStatus mDNS_DeregisterService_drt(mDNS *const m, ServiceRecordSet *sr, mDNS_Dereg_type drt);
2227 extern mStatus mDNS_RegisterNoSuchService(mDNS *const m, AuthRecord *const rr,
2236 extern mStatus mDNS_StartBrowse(mDNS *const m, DNSQuestion *const question,
2241 extern mStatus mDNS_StartResolveService(mDNS *const m, ServiceInfoQuery *query, ServiceInfo *info, mDNSServiceInfoQueryCallback *Callback, void *Context);
2242 extern void mDNS_StopResolveService (mDNS *const m, ServiceInfoQuery *query);
2257 extern mStatus mDNS_GetDomains(mDNS *const m, DNSQuestion *const question, mDNS_DomainType DomainType, const domainname *dom,
2260 extern mStatus mDNS_AdvertiseDomains(mDNS *const m, AuthRecord *rr, mDNS_DomainType DomainType, const mDNSInterfaceID InterfaceID, char *domname);
2263 extern mDNSOpaque16 mDNS_NewMessageID(mDNS *const m);
2264 extern mDNSBool mDNS_AddressIsLocalSubnet(mDNS *const m, const mDNSInterfaceID InterfaceID, const mDNSAddr *addr);
2266 extern DNSServer *GetServerForName(mDNS *m, const domainname *name, mDNSInterfaceID InterfaceID);
2267 extern DNSServer *GetServerForQuestion(mDNS *m, DNSQuestion *question);
2268 extern mDNSu32 SetValidDNSServers(mDNS *m, DNSQuestion *question);
2277 // in domain name labels, including unlikely characters like ascii nulls and even dots) all the mDNS APIs
2370 extern mDNSu32 NumCacheRecordsForInterfaceID(const mDNS *const m, mDNSInterfaceID id);
2446 extern mStatus mDNS_SetSecretForDomain(mDNS *m, DomainAuthInfo *info,
2449 extern void RecreateNATMappings(mDNS *const m);
2468 extern void mDNS_AddDynDNSHostName(mDNS *m, const domainname *fqdn, mDNSRecordCallback *StatusCallback, const void *StatusContext);
2469 extern void mDNS_RemoveDynDNSHostName(mDNS *m, const domainname *fqdn);
2470 extern void mDNS_SetPrimaryInterfaceInfo(mDNS *m, const mDNSAddr *v4addr, const mDNSAddr *v6addr, const mDNSAddr *router);
2471 extern DNSServer *mDNS_AddDNSServer(mDNS *const m, const domainname *d, const mDNSInterfaceID interface, const mDNSAddr *addr, const mDNSIPPort port, mDNSBool scoped, mDNSu32 timeout);
2472 extern void PenalizeDNSServer(mDNS *const m, DNSQuestion *q);
2475 extern McastResolver *mDNS_AddMcastResolver(mDNS *const m, const domainname *d, const mDNSInterfaceID interface, mDNSu32 timeout);
2520 // mDNSPlatformInit() typically opens a communication endpoint, and starts listening for mDNS packets.
2535 // Code that's protected by the main mDNS lock should just use the m->timenow value
2536 // Code outside the main mDNS lock should use mDNS_TimeNow(m) to get properly adjusted time
2543 extern mStatus mDNSPlatformInit (mDNS *const m);
2544 extern void mDNSPlatformClose (mDNS *const m);
2545 extern mStatus mDNSPlatformSendUDP(const mDNS *const m, const void *const msg, const mDNSu8 *const end,
2548 extern void mDNSPlatformLock (const mDNS *const m);
2549 extern void mDNSPlatformUnlock (const mDNS *const m);
2593 extern mDNSInterfaceID mDNSPlatformInterfaceIDfromInterfaceIndex(mDNS *const m, mDNSu32 ifindex);
2594 extern mDNSu32 mDNSPlatformInterfaceIndexfromInterfaceID(mDNS *const m, mDNSInterfaceID id, mDNSBool suppressNetworkChange);
2620 extern TCPSocket *mDNSPlatformTCPSocket(mDNS *const m, TCPSocketFlags flags, mDNSIPPort *port); // creates a TCP socket
2628 extern UDPSocket *mDNSPlatformUDPSocket(mDNS *const m, const mDNSIPPort requestedport);
2630 extern void mDNSPlatformReceiveBPF_fd(mDNS *const m, int fd);
2631 extern void mDNSPlatformUpdateProxyList(mDNS *const m, const mDNSInterfaceID InterfaceID);
2633 extern void mDNSPlatformSetLocalAddressCacheEntry(mDNS *const m, const mDNSAddr *const tpa, const mDNSEthAddr *const tha, mDNSInterfaceID InterfaceID);
2643 extern void mDNSPlatformSetDNSConfig(mDNS *const m, mDNSBool setservers, mDNSBool setsearch, domainname *const fqdn, DNameListElem **RegDomains, DNameListElem **BrowseDomains);
2644 extern mStatus mDNSPlatformGetPrimaryInterface(mDNS *const m, mDNSAddr *v4, mDNSAddr *v6, mDNSAddr *router);
2647 extern void mDNSPlatformSetAllowSleep(mDNS *const m, mDNSBool allowSleep, const char *reason);
2648 extern void mDNSPlatformSendWakeupPacket(mDNS *const m, mDNSInterfaceID InterfaceID, char *EthAddr, char *IPAddr, int iteration);
2653 extern void LNT_SendDiscoveryMsg(mDNS *m);
2654 extern void LNT_ConfigureRouterInfo(mDNS *m, const mDNSInterfaceID InterfaceID, const mDNSu8 *const data, const mDNSu16 len);
2655 extern mStatus LNT_GetExternalAddress(mDNS *m);
2656 extern mStatus LNT_MapPort(mDNS *m, NATTraversalInfo *n);
2657 extern mStatus LNT_UnmapPort(mDNS *m, NATTraversalInfo *n);
2658 extern void LNT_ClearState(mDNS *const m);
2661 // The core mDNS code provides these functions, for the platform support code to call at appropriate times
2696 extern void mDNS_SetFQDN(mDNS *const m);
2697 extern void mDNS_ActivateNetWake_internal (mDNS *const m, NetworkInterfaceInfo *set);
2698 extern void mDNS_DeactivateNetWake_internal(mDNS *const m, NetworkInterfaceInfo *set);
2699 extern mStatus mDNS_RegisterInterface (mDNS *const m, NetworkInterfaceInfo *set, mDNSBool flapping);
2700 extern void mDNS_DeregisterInterface(mDNS *const m, NetworkInterfaceInfo *set, mDNSBool flapping);
2701 extern void mDNSCoreInitComplete(mDNS *const m, mStatus result);
2702 extern void mDNSCoreReceive(mDNS *const m, void *const msg, const mDNSu8 *const end,
2705 extern void mDNSCoreRestartQueries(mDNS *const m);
2706 typedef void (*FlushCache)(mDNS *const m);
2707 typedef void (*CallbackBeforeStartQuery)(mDNS *const m, void *context);
2708 extern void mDNSCoreRestartAddressQueries(mDNS *const m, mDNSBool SearchDomainsChanged, FlushCache flushCacheRecords,
2710 extern mDNSBool mDNSCoreHaveAdvertisedMulticastServices(mDNS *const m);
2711 extern void mDNSCoreMachineSleep(mDNS *const m, mDNSBool wake);
2712 extern mDNSBool mDNSCoreReadyForSleep(mDNS *m, mDNSs32 now);
2713 extern mDNSs32 mDNSCoreIntervalToNextWake(mDNS *const m, mDNSs32 now);
2715 extern void mDNSCoreReceiveRawPacket (mDNS *const m, const mDNSu8 *const p, const mDNSu8 *const end, const mDNSInterfaceID InterfaceID);
2719 extern CacheRecord *CreateNewCacheEntry(mDNS *const m, const mDNSu32 slot, CacheGroup *cg, mDNSs32 delay);
2720 extern void ScheduleNextCacheCheckTime(mDNS *const m, const mDNSu32 slot, const mDNSs32 event);
2721 extern void GrantCacheExtensions(mDNS *const m, DNSQuestion *q, mDNSu32 lease);
2722 extern void MakeNegativeCacheRecord(mDNS *const m, CacheRecord *const cr,
2725 extern void CompleteDeregistration(mDNS *const m, AuthRecord *rr);
2726 extern void AnswerCurrentQuestionWithResourceRecord(mDNS *const m, CacheRecord *const rr, const QC_result AddRecord);
2727 extern char *InterfaceNameForID(mDNS *const m, const mDNSInterfaceID InterfaceID);
2728 extern void DNSServerChangeForQuestion(mDNS *const m, DNSQuestion *q, DNSServer *newServer);
2729 extern void ActivateUnicastRegistration(mDNS *const m, AuthRecord *const rr);
2730 extern void CheckSuppressUnusableQuestions(mDNS *const m);
2731 extern void RetrySearchDomainQuestions(mDNS *const m);
2734 extern void FreeEtcHosts(mDNS *const m, AuthRecord *const rr, mStatus result);
2738 extern AuthGroup *InsertAuthRecord(mDNS *const m, AuthHash *r, AuthRecord *rr);
2739 extern AuthGroup *RemoveAuthRecord(mDNS *const m, AuthHash *r, AuthRecord *rr);
2744 extern void AutoTunnelCallback(mDNS *const m, DNSQuestion *question, const ResourceRecord *const answer, QC_result AddRecord);
2745 extern void AddNewClientTunnel(mDNS *const m, DNSQuestion *const q);
2746 extern void SetupLocalAutoTunnelInterface_internal(mDNS *const m, mDNSBool servicesStarting);
2747 extern void UpdateAutoTunnelDomainStatuses(const mDNS *const m);
2748 extern mStatus ActivateLocalProxy(mDNS *const m, char *ifname);
2749 extern void RemoveAutoTunnel6Record(mDNS *const m);
2750 extern mDNSBool RecordReadyForSleep(mDNS *const m, AuthRecord *rr);
2882 extern void mDNSCoreBeSleepProxyServer_internal(mDNS *const m, mDNSu8 sps, mDNSu8 port, mDNSu8 marginalpower, mDNSu8 totpower);
2886 extern void FindSPSInCache(mDNS *const m, const DNSQuestion *const q, const CacheRecord *sps[3]);