Lines Matching defs:mDNS

251 // mDNS defines its own names for these common types to simplify portability across
339 // mDNS return values are in the range FFFE FF00 (-65792) to FFFE FFFF (-65537)
387 // mStatus_MemFree is the last legal mDNS error code, at the end of the range allocated for mDNS
473 typedef struct mDNS_struct mDNS;
518 mDNS *m;
693 // * Unique Resource Records should be unique among hosts within any given mDNS scope
700 // * Known Unique Resource Records are treated like Unique Resource Records, except that mDNS does
743 kDNSRecordTypeVerified = 0x10, // Unique means mDNS should check that name is unique (and then send immediate responses)
744 kDNSRecordTypeKnownUnique = 0x20, // Known Unique means mDNS can assume name is unique without checking
1077 // Note: Within an mDNSRecordCallback mDNS all API calls are legal except mDNS_Init(), mDNS_Exit(), mDNS_Execute()
1078 typedef void mDNSRecordCallback (mDNS *const m, AuthRecord *const rr, mStatus result);
1081 // Restrictions: An mDNSRecordUpdateCallback may not make any mDNS API calls.
1083 // The internal data structures of the mDNS code may not be in a state where mDNS API calls may be made safely.
1084 typedef void mDNSRecordUpdateCallback (mDNS *const m, AuthRecord *const rr, RData *OldRData, mDNSu16 OldRDLen);
1240 mDNS *m;
1254 typedef void (*NATTraversalClientCallback)(mDNS *m, NATTraversalInfo *n);
1599 // IsLocalDomain alone is not sufficient to determine that a record is mDNS or uDNS. By default domain names within
1601 // as mDNS records, but it is also possible to force any record (even those not within one of the inherently local
1602 // domains) to be handled as an mDNS record by setting the ForceMCast flag, or by setting a non-zero InterfaceID.
1605 // The same applies to Sleep Proxy records, which we will answer for when queried via mDNS, but we never want to try
1725 // Note: Within an mDNSServiceCallback mDNS all API calls are legal except mDNS_Init(), mDNS_Exit(), mDNS_Execute()
1726 typedef void mDNSServiceCallback (mDNS *const m, ServiceRecordSet *const sr, mStatus result);
1846 // Note: Within an mDNSQuestionCallback mDNS all API calls are legal except mDNS_Init(), mDNS_Exit(), mDNS_Execute()
1852 typedef void mDNSQuestionCallback (mDNS *const m, DNSQuestion *question, const ResourceRecord *const answer, QC_result AddRecord);
1853 typedef void AsyncDispatchFunc(mDNS *const m, void *context);
1854 typedef void DNSSECAuthInfoFreeCallback(mDNS *const m, void *context);
1855 extern void mDNSPlatformDispatchAsync(mDNS *const m, void *context, AsyncDispatchFunc func);
1987 mDNSBool ForceMCast; // Set by client to force mDNS query, even for apparently uDNS names
2021 // Note: Within an mDNSServiceInfoQueryCallback mDNS all API calls are legal except mDNS_Init(), mDNS_Exit(), mDNS_Execute()
2023 typedef void mDNSServiceInfoQueryCallback (mDNS *const m, ServiceInfoQuery *query);
2047 typedef void ZoneDataCallback (mDNS *const m, mStatus err, const ZoneData *result);
2065 extern ZoneData *StartGetZoneData(mDNS *const m, const domainname *const name, const ZoneService target, ZoneDataCallback callback, void *callbackInfo);
2066 extern void CancelGetZoneData(mDNS *const m, ZoneData *nta);
2184 #pragma mark - Main mDNS object, used to hold all the mDNS state
2187 typedef void mDNSCallback (mDNS *const m, mStatus result);
2266 extern void LogMDNSStatistics(mDNS *const m);
2299 mDNSs32 timenow; // The time that this particular activation of the mDNS code started
2303 mDNSs32 SuppressSending; // Don't send local-link mDNS packets during this time
2340 // These fields only required for mDNS Searcher...
2359 // Fields below only required for mDNS Responder...
2592 // Every client should call mDNS_Init, passing in storage for the mDNS object and the mDNS_PlatformSupport object.
2614 // higher-layer API calls) must also set DivertMulticastAdvertisements in the mDNS structure and
2617 // When mDNS has finished setting up the client's callback is called
2631 // Call mDNS_StartQuery to initiate a query. mDNS will proceed to issue Multicast DNS query packets, and any time a response
2636 // The main mDNS routines call mDNSPlatformLock() on entry and mDNSPlatformUnlock() on exit;
2639 // mDNSPlatformLock/Unlock need to disable interrupts or do similar concurrency control to ensure that the mDNS
2642 extern mStatus mDNS_Init (mDNS *const m, mDNS_PlatformSupport *const p,
2655 extern void mDNS_ConfigChanged(mDNS *const m);
2656 extern void mDNS_GrowCache (mDNS *const m, CacheEntity *storage, mDNSu32 numrecords);
2657 extern void mDNS_GrowAuth (mDNS *const m, AuthEntity *storage, mDNSu32 numrecords);
2658 extern void mDNS_StartExit (mDNS *const m);
2659 extern void mDNS_FinalExit (mDNS *const m);
2663 extern mDNSs32 mDNS_Execute (mDNS *const m);
2665 extern mStatus mDNS_Register (mDNS *const m, AuthRecord *const rr);
2666 extern mStatus mDNS_Update (mDNS *const m, AuthRecord *const rr, mDNSu32 newttl,
2668 extern mStatus mDNS_Deregister(mDNS *const m, AuthRecord *const rr);
2670 extern mStatus mDNS_StartQuery(mDNS *const m, DNSQuestion *const question);
2671 extern mStatus mDNS_StopQuery (mDNS *const m, DNSQuestion *const question);
2672 extern mStatus mDNS_StopQueryWithRemoves(mDNS *const m, DNSQuestion *const question);
2673 extern mStatus mDNS_Reconfirm (mDNS *const m, CacheRecord *const cacherr);
2674 extern mStatus mDNS_Reconfirm_internal(mDNS *const m, CacheRecord *const rr, mDNSu32 interval);
2675 extern mStatus mDNS_ReconfirmByValue(mDNS *const m, ResourceRecord *const rr);
2676 extern void mDNS_PurgeCacheResourceRecord(mDNS *const m, CacheRecord *rr);
2677 extern mDNSs32 mDNS_TimeNow(const mDNS *const m);
2679 extern mStatus mDNS_StartNATOperation(mDNS *const m, NATTraversalInfo *traversal);
2680 extern mStatus mDNS_StopNATOperation(mDNS *const m, NATTraversalInfo *traversal);
2681 extern mStatus mDNS_StopNATOperation_internal(mDNS *m, NATTraversalInfo *traversal);
2683 extern DomainAuthInfo *GetAuthInfoForName(mDNS *m, const domainname *const name);
2685 extern void mDNS_UpdateAllowSleep(mDNS *const m);
2743 extern mStatus mDNS_RegisterService (mDNS *const m, ServiceRecordSet *sr,
2748 extern mStatus mDNS_AddRecordToService(mDNS *const m, ServiceRecordSet *sr, ExtraResourceRecord *extra, RData *rdata, mDNSu32 ttl, mDNSu32 flags);
2749 extern mStatus mDNS_RemoveRecordFromService(mDNS *const m, ServiceRecordSet *sr, ExtraResourceRecord *extra, mDNSRecordCallback MemFreeCallback, void *Context);
2750 extern mStatus mDNS_RenameAndReregisterService(mDNS *const m, ServiceRecordSet *const sr, const domainlabel *newname);
2751 extern mStatus mDNS_DeregisterService_drt(mDNS *const m, ServiceRecordSet *sr, mDNS_Dereg_type drt);
2754 extern mStatus mDNS_RegisterNoSuchService(mDNS *const m, AuthRecord *const rr,
2763 extern mStatus mDNS_StartBrowse(mDNS *const m, DNSQuestion *const question,
2770 extern mStatus mDNS_StartResolveService(mDNS *const m, ServiceInfoQuery *query, ServiceInfo *info, mDNSServiceInfoQueryCallback *Callback, void *Context);
2771 extern void mDNS_StopResolveService (mDNS *const m, ServiceInfoQuery *query);
2786 extern mStatus mDNS_GetDomains(mDNS *const m, DNSQuestion *const question, mDNS_DomainType DomainType, const domainname *dom,
2789 extern mStatus mDNS_AdvertiseDomains(mDNS *const m, AuthRecord *rr, mDNS_DomainType DomainType, const mDNSInterfaceID InterfaceID, char *domname);
2792 extern mDNSOpaque16 mDNS_NewMessageID(mDNS *const m);
2793 extern mDNSBool mDNS_AddressIsLocalSubnet(mDNS *const m, const mDNSInterfaceID InterfaceID, const mDNSAddr *addr, mDNSBool *myself);
2795 extern DNSServer *GetServerForQuestion(mDNS *m, DNSQuestion *question);
2796 extern mDNSu32 SetValidDNSServers(mDNS *m, DNSQuestion *question);
2805 // in domain name labels, including unlikely characters like ascii nulls and even dots) all the mDNS APIs
2898 extern mDNSu32 NumCacheRecordsForInterfaceID(const mDNS *const m, mDNSInterfaceID id);
2983 extern mStatus mDNS_SetSecretForDomain(mDNS *m, DomainAuthInfo *info,
2986 extern void RecreateNATMappings(mDNS *const m, const mDNSu32 waitTicks);
3005 extern void mDNS_AddDynDNSHostName(mDNS *m, const domainname *fqdn, mDNSRecordCallback *StatusCallback, const void *StatusContext);
3006 extern void mDNS_RemoveDynDNSHostName(mDNS *m, const domainname *fqdn);
3007 extern void mDNS_SetPrimaryInterfaceInfo(mDNS *m, const mDNSAddr *v4addr, const mDNSAddr *v6addr, const mDNSAddr *router);
3008 extern DNSServer *mDNS_AddDNSServer(mDNS *const m, const domainname *d, const mDNSInterfaceID interface, mDNSs32 serviceID, const mDNSAddr *addr,
3011 extern void PenalizeDNSServer(mDNS *const m, DNSQuestion *q, mDNSOpaque16 responseFlags);
3014 extern McastResolver *mDNS_AddMcastResolver(mDNS *const m, const domainname *d, const mDNSInterfaceID interface, mDNSu32 timeout);
3059 // mDNSPlatformInit() typically opens a communication endpoint, and starts listening for mDNS packets.
3074 // Code that's protected by the main mDNS lock should just use the m->timenow value
3075 // Code outside the main mDNS lock should use mDNS_TimeNow(m) to get properly adjusted time
3082 extern mStatus mDNSPlatformInit (mDNS *const m);
3083 extern void mDNSPlatformClose (mDNS *const m);
3084 extern mStatus mDNSPlatformSendUDP(const mDNS *const m, const void *const msg, const mDNSu8 *const end,
3088 extern mDNSBool mDNSPlatformPeekUDP (mDNS *const m, UDPSocket *src);
3089 extern void mDNSPlatformLock (const mDNS *const m);
3090 extern void mDNSPlatformUnlock (const mDNS *const m);
3135 extern void mDNSLogStatistics(mDNS *const m);
3142 extern mDNSInterfaceID mDNSPlatformInterfaceIDfromInterfaceIndex(mDNS *const m, mDNSu32 ifindex);
3143 extern mDNSu32 mDNSPlatformInterfaceIndexfromInterfaceID(mDNS *const m, mDNSInterfaceID id, mDNSBool suppressNetworkChange);
3169 extern TCPSocket *mDNSPlatformTCPSocket(mDNS *const m, TCPSocketFlags flags, mDNSIPPort *port, mDNSBool useBackgroundTrafficClass); // creates a TCP socket
3177 extern UDPSocket *mDNSPlatformUDPSocket(mDNS *const m, const mDNSIPPort requestedport);
3180 extern void mDNSPlatformReceiveBPF_fd(mDNS *const m, int fd);
3181 extern void mDNSPlatformUpdateProxyList(mDNS *const m, const mDNSInterfaceID InterfaceID);
3183 extern void mDNSPlatformSetLocalAddressCacheEntry(mDNS *const m, const mDNSAddr *const tpa, const mDNSEthAddr *const tha, mDNSInterfaceID InterfaceID);
3186 extern mStatus mDNSPlatformRetrieveTCPInfo(mDNS *const m, mDNSAddr *laddr, mDNSIPPort *lport, mDNSAddr *raddr, mDNSIPPort *rport, mDNSTCPInfo *mti);
3187 extern mStatus mDNSPlatformGetRemoteMacAddr(mDNS *const m, mDNSAddr *raddr);
3198 extern mDNSBool mDNSPlatformSetDNSConfig(mDNS *const m, mDNSBool setservers, mDNSBool setsearch, domainname *const fqdn, DNameListElem **RegDomains,
3200 extern mStatus mDNSPlatformGetPrimaryInterface(mDNS *const m, mDNSAddr *v4, mDNSAddr *v6, mDNSAddr *router);
3203 extern void mDNSPlatformSetAllowSleep(mDNS *const m, mDNSBool allowSleep, const char *reason);
3204 extern void mDNSPlatformSendWakeupPacket(mDNS *const m, mDNSInterfaceID InterfaceID, char *EthAddr, char *IPAddr, int iteration);
3216 extern void LNT_SendDiscoveryMsg(mDNS *m);
3217 extern void LNT_ConfigureRouterInfo(mDNS *m, const mDNSInterfaceID InterfaceID, const mDNSu8 *const data, const mDNSu16 len);
3218 extern mStatus LNT_GetExternalAddress(mDNS *m);
3219 extern mStatus LNT_MapPort(mDNS *m, NATTraversalInfo *const n);
3220 extern mStatus LNT_UnmapPort(mDNS *m, NATTraversalInfo *const n);
3221 extern void LNT_ClearState(mDNS *const m);
3224 // The core mDNS code provides these functions, for the platform support code to call at appropriate times
3259 extern void mDNS_SetFQDN(mDNS *const m);
3260 extern void mDNS_ActivateNetWake_internal (mDNS *const m, NetworkInterfaceInfo *set);
3261 extern void mDNS_DeactivateNetWake_internal(mDNS *const m, NetworkInterfaceInfo *set);
3262 extern mStatus mDNS_RegisterInterface (mDNS *const m, NetworkInterfaceInfo *set, mDNSBool flapping);
3263 extern void mDNS_DeregisterInterface(mDNS *const m, NetworkInterfaceInfo *set, mDNSBool flapping);
3264 extern void mDNSCoreInitComplete(mDNS *const m, mStatus result);
3265 extern void mDNSCoreReceive(mDNS *const m, void *const msg, const mDNSu8 *const end,
3268 extern void mDNSCoreRestartQueries(mDNS *const m);
3269 extern void mDNSCoreRestartQuestion(mDNS *const m, DNSQuestion *q);
3270 extern void mDNSCoreRestartRegistration(mDNS *const m, AuthRecord *rr, int announceCount);
3271 typedef void (*FlushCache)(mDNS *const m);
3272 typedef void (*CallbackBeforeStartQuery)(mDNS *const m, void *context);
3273 extern void mDNSCoreRestartAddressQueries(mDNS *const m, mDNSBool SearchDomainsChanged, FlushCache flushCacheRecords,
3275 extern mDNSBool mDNSCoreHaveAdvertisedMulticastServices(mDNS *const m);
3276 extern void mDNSCoreMachineSleep(mDNS *const m, mDNSBool wake);
3277 extern mDNSBool mDNSCoreReadyForSleep(mDNS *m, mDNSs32 now);
3278 extern mDNSs32 mDNSCoreIntervalToNextWake(mDNS *const m, mDNSs32 now);
3280 extern void mDNSCoreReceiveRawPacket (mDNS *const m, const mDNSu8 *const p, const mDNSu8 *const end, const mDNSInterfaceID InterfaceID);
3284 extern CacheRecord *CreateNewCacheEntry(mDNS *const m, const mDNSu32 slot, CacheGroup *cg, mDNSs32 delay, mDNSBool Add, const mDNSAddr *sourceAddress);
3285 extern CacheGroup *CacheGroupForName(const mDNS *const m, const mDNSu32 slot, const mDNSu32 namehash, const domainname *const name);
3286 extern void ReleaseCacheRecord(mDNS *const m, CacheRecord *r);
3287 extern void ScheduleNextCacheCheckTime(mDNS *const m, const mDNSu32 slot, const mDNSs32 event);
3288 extern void SetNextCacheCheckTimeForRecord(mDNS *const m, CacheRecord *const rr);
3289 extern void GrantCacheExtensions(mDNS *const m, DNSQuestion *q, mDNSu32 lease);
3290 extern void MakeNegativeCacheRecord(mDNS *const m, CacheRecord *const cr,
3293 extern void CompleteDeregistration(mDNS *const m, AuthRecord *rr);
3294 extern void AnswerCurrentQuestionWithResourceRecord(mDNS *const m, CacheRecord *const rr, const QC_result AddRecord);
3295 extern void AnswerQuestionByFollowingCNAME(mDNS *const m, DNSQuestion *q, ResourceRecord *rr);
3296 extern char *InterfaceNameForID(mDNS *const m, const mDNSInterfaceID InterfaceID);
3297 extern void DNSServerChangeForQuestion(mDNS *const m, DNSQuestion *q, DNSServer *newServer);
3298 extern void ActivateUnicastRegistration(mDNS *const m, AuthRecord *const rr);
3299 extern void CheckSuppressUnusableQuestions(mDNS *const m);
3300 extern void RetrySearchDomainQuestions(mDNS *const m);
3302 extern mStatus UpdateKeepaliveRData(mDNS *const m, AuthRecord *rr, NetworkInterfaceInfo *const intf, mDNSBool updateMac, char *ethAddr);
3303 extern void UpdateKeepaliveRMACAsync(mDNS *const m, void *context);
3304 extern void UpdateRMACCallback(mDNS *const m, void *context);
3307 extern void FreeEtcHosts(mDNS *const m, AuthRecord *const rr, mStatus result);
3311 extern AuthGroup *InsertAuthRecord(mDNS *const m, AuthHash *r, AuthRecord *rr);
3312 extern AuthGroup *RemoveAuthRecord(mDNS *const m, AuthHash *r, AuthRecord *rr);
3313 extern mDNSBool mDNS_CheckForCacheRecord(mDNS *const m, DNSQuestion *q, mDNSu16 qtype);
3318 extern void AutoTunnelCallback(mDNS *const m, DNSQuestion *question, const ResourceRecord *const answer, QC_result AddRecord);
3319 extern void AddNewClientTunnel(mDNS *const m, DNSQuestion *const q);
3320 extern void StartServerTunnel(mDNS *const m, DomainAuthInfo *const info);
3321 extern void UpdateAutoTunnelDomainStatuses(const mDNS *const m);
3322 extern void RemoveAutoTunnel6Record(mDNS *const m);
3323 extern mDNSBool RecordReadyForSleep(mDNS *const m, AuthRecord *rr);
3326 extern mStatus ActivateLocalProxy(mDNS *const m, NetworkInterfaceInfo *const intf);
3327 extern void mDNSPlatformUpdateDNSStatus(mDNS *const m, DNSQuestion *q);
3328 extern void mDNSPlatformTriggerDNSRetry(mDNS *const m, DNSQuestion *v4q, DNSQuestion *v6q);
3333 typedef void ProxyCallback (mDNS *const m, void *socket, void *const msg, const mDNSu8 *const end, const mDNSAddr *const srcaddr,
3335 extern void mDNSPlatformInitDNSProxySkts(mDNS *const m, ProxyCallback *UDPCallback, ProxyCallback *TCPCallback);
3336 extern void mDNSPlatformCloseDNSProxySkts(mDNS *const m);
3342 extern void mDNSPlatformSleepAssertion(mDNS *const m, double timeout);
3345 extern mDNSBool mDNSPlatformAllowPID(mDNS *const m, DNSQuestion *q);
3346 extern mDNSs32 mDNSPlatformGetServiceID(mDNS *const m, DNSQuestion *q);
3487 extern void mDNSCoreBeSleepProxyServer_internal(mDNS *const m, mDNSu8 sps, mDNSu8 port, mDNSu8 marginalpower, mDNSu8 totpower, mDNSu8 features);
3491 extern void FindSPSInCache(mDNS *const m, const DNSQuestion *const q, const CacheRecord *sps[3]);
3584 mDNSu32 initializeDeviceInfoTXT(mDNS *m, mDNSu8 *ptr);