Home | History | Annotate | Download | only in mDNSCore

Lines Matching refs:interfaceID

118 mDNSlocal void SendWakeup(mDNS *const m, mDNSInterfaceID InterfaceID, mDNSEthAddr *EthAddr, mDNSOpaque48 *password, mDNSBool unicastOnly);
143 mDNSu16 rrclass, mDNSu32 ttl, mDNSInterfaceID InterfaceID, DNSServRef dnsserv, mDNSOpaque16 responseFlags);
350 if (!LocalOnlyOrP2PInterface(q->InterfaceID) && mDNSOpaque16IsZero(q->TargetQID))
607 mDNSexport mDNSBool mDNS_AddressIsLocalSubnet(mDNS *const m, const mDNSInterfaceID InterfaceID, const mDNSAddr *addr)
615 if (intf->ip.type == addr->type && intf->InterfaceID == InterfaceID && intf->McastTxRx)
623 if (intf->ip.type == addr->type && intf->InterfaceID == InterfaceID && intf->McastTxRx)
675 mDNSlocal void GenerateNegativeResponseEx(mDNS *const m, const mDNSInterfaceID InterfaceID, const QC_result qc,
684 MakeNegativeCacheRecordForQuestion(m, &m->rec.r, q, 60, InterfaceID, responseFlags);
1011 mDNSlocal mDNSBool IsInterfaceValidForAuthRecord(const AuthRecord *const rr, const mDNSInterfaceID InterfaceID)
1013 if (rr->resrec.InterfaceID == mDNSInterface_Any)
1015 return mDNSPlatformValidRecordForInterface(rr, InterfaceID);
1019 return ((rr->resrec.InterfaceID == InterfaceID) ? mDNStrue : mDNSfalse);
1023 mDNSlocal mDNSBool ResourceRecordIsValidInterfaceAnswer(const AuthRecord *const rr, const mDNSInterfaceID interfaceID)
1025 return ((IsInterfaceValidForAuthRecord(rr, interfaceID) && ResourceRecordIsValidAnswer(rr)) ? mDNStrue : mDNSfalse);
1073 // ResourceRecordNameClassInterfaceMatch returns true if two resource records have the same InterfaceID, class and name.
1080 if (r1->InterfaceID && r2->InterfaceID && r1->InterfaceID != r2->InterfaceID)
1117 if (pktrr->resrec.InterfaceID &&
1118 authrr->resrec.InterfaceID &&
1119 pktrr->resrec.InterfaceID != authrr->resrec.InterfaceID) return(mDNSfalse);
1122 if ((authrr->resrec.InterfaceID == mDNSInterface_Any) &&
1123 !mDNSPlatformValidRecordForInterface(authrr, pktrr->resrec.InterfaceID)) return(mDNSfalse);
1292 return ((AuthRecordIncludesAWDL(ar) || mDNSPlatformInterfaceIsAWDL(ar->resrec.InterfaceID)) ? mDNStrue : mDNSfalse);
1304 else if (rr->resrec.InterfaceID == mDNSInterface_LocalOnly)
1453 ((A)->resrec.InterfaceID == (B)->resrec.InterfaceID && RecordLDT((A),(B)) && IdenticalResourceRecord(& (A)->resrec, & (B)->resrec))
1564 if (mDNSPlatformInterfaceIsAWDL(intf->InterfaceID))
1657 else if (mDNSPlatformInterfaceIsAWDL(rr->resrec.InterfaceID))
1728 mDNSInterfaceID previousID = rr->resrec.InterfaceID;
1729 if (rr->resrec.InterfaceID == mDNSInterface_Any || rr->resrec.InterfaceID == mDNSInterface_P2P)
1731 rr->resrec.InterfaceID = mDNSInterface_LocalOnly;
1734 if (rr->resrec.InterfaceID != mDNSInterface_LocalOnly)
1736 NetworkInterfaceInfo *intf = FirstInterfaceForID(m, rr->resrec.InterfaceID);
1737 if (intf && !intf->Advertise) { rr->resrec.InterfaceID = mDNSInterface_LocalOnly; rr->ARType = AuthRecordLocalOnly; }
1739 if (rr->resrec.InterfaceID != previousID)
1928 LogRedact(MDNS_LOG_CATEGORY_STATE, MDNS_LOG_DEFAULT, "mDNS_Register_internal: Name conflict " PRI_S " (%p), InterfaceID %p",
1929 ARDisplayString(m, rr), rr, rr->resrec.InterfaceID);
2276 mDNSInterfaceID storeID = rr->resrec.InterfaceID;
2277 rr->resrec.InterfaceID = kDNSServiceInterfaceIndexAny;
2281 rr->resrec.InterfaceID = storeID;
2458 const mDNSInterfaceID interface = cr->resrec.InterfaceID;
2586 mDNSlocal void AddRRSetAdditionalsToResponseList(mDNS *const m, AuthRecord ***nrpp, AuthRecord *rr, AuthRecord *additional, const mDNSInterfaceID InterfaceID)
2598 ResourceRecordIsValidInterfaceAnswer(rr2, InterfaceID) &&
2607 mDNSlocal void AddAdditionalsToResponseList(mDNS *const m, AuthRecord *ResponseRecords, AuthRecord ***nrpp, const mDNSInterfaceID InterfaceID)
2614 if (rr->Additional1 && ResourceRecordIsValidInterfaceAnswer(rr->Additional1, InterfaceID))
2617 AddRRSetAdditionalsToResponseList(m, nrpp, rr, rr->Additional1, InterfaceID);
2620 if (rr->Additional2 && ResourceRecordIsValidInterfaceAnswer(rr->Additional2, InterfaceID))
2623 AddRRSetAdditionalsToResponseList(m, nrpp, rr, rr->Additional2, InterfaceID);
2631 ResourceRecordIsValidInterfaceAnswer(rr2, InterfaceID) && // ... which are valid for answer ...
2640 ResourceRecordIsValidInterfaceAnswer(rr2, InterfaceID) && // ... which are valid for answer ...
2647 if (ResourceRecordIsValidInterfaceAnswer(&m->DeviceInfo, InterfaceID) &&
2654 mDNSlocal void SendDelayedUnicastResponse(mDNS *const m, const mDNSAddr *const dest, const mDNSInterfaceID InterfaceID)
2659 NetworkInterfaceInfo *intf = FirstInterfaceForID(m, InterfaceID);
2670 if (rr->ImmedUnicast && rr->ImmedAnswer == InterfaceID)
2681 if (intf && !mDNSPlatformValidRecordForInterface(rr, intf->InterfaceID))
2696 AddAdditionalsToResponseList(m, ResponseRecords, &nrp, InterfaceID);
2793 mDNSSendDNSMessage(m, &m->omsg, responseptr, InterfaceID, mDNSNULL, mDNSNULL, dest, MulticastDNSPort, mDNSNULL, mDNSfalse);
2911 NetworkInterfaceInfo *intf = FirstInterfaceForID(m, rr->resrec.InterfaceID);
2912 if (!intf) { LogMsg("SendARP: No interface with InterfaceID %p found %s", rr->resrec.InterfaceID, ARDisplayString(m,rr)); return; }
2943 mDNSPlatformSendRawPacket(m->omsg.data, ptr, rr->resrec.InterfaceID);
2982 NetworkInterfaceInfo *intf = FirstInterfaceForID(m, rr->resrec.InterfaceID);
2983 if (!intf) { LogMsg("SendNDP: No interface with InterfaceID %p found %s", rr->resrec.InterfaceID, ARDisplayString(m,rr)); return; }
3056 mDNSPlatformSendRawPacket(m->omsg.data, ptr, rr->resrec.InterfaceID);
3109 debugf("ShouldSendGoodbyesBeforeSleep: not sending goodbye %s, int %p", ARDisplayString(m, rr), intf->InterfaceID);
3114 debugf("ShouldSendGoodbyesBeforeSleep: sending goodbye %s, int %p", ARDisplayString(m, rr), intf->InterfaceID);
3200 SendWakeup(m, rr->resrec.InterfaceID, &rr->WakeUp.IMAC, &rr->WakeUp.password, unicastOnly);
3202 if ((r2->resrec.RecordType == kDNSRecordTypeDeregistering) && r2->AnnounceCount && (r2->resrec.InterfaceID == rr->resrec.InterfaceID) &&
3256 if ((rr->resrec.InterfaceID && rr->ImmedAnswer) ||
3264 // Note: Currently all address records are interface-specific, so it's safe to set ImmedAdditional to their InterfaceID,
3276 (rr->ImmedAnswer == mDNSInterfaceMark || rr->ImmedAnswer == r2->resrec.InterfaceID))
3277 r2->ImmedAdditional = r2->resrec.InterfaceID; // ... then mark this address record for sending too
3331 rr->SendRNow = !intf ? mDNSNULL : (rr->resrec.InterfaceID) ? rr->resrec.InterfaceID : intf->InterfaceID;
3382 // Skip this interface if the record InterfaceID is *Any and the record is not
3384 if ((rr->SendRNow == intf->InterfaceID) &&
3385 ((rr->resrec.InterfaceID == mDNSInterface_Any) && !mDNSPlatformValidRecordForInterface(rr, intf->InterfaceID)))
3389 else if (rr->SendRNow == intf->InterfaceID)
3443 if (rr->ImmedAnswer == mDNSInterfaceMark && rr->resrec.InterfaceID == mDNSInterface_Any)
3454 if (rr->ImmedAdditional == intf->InterfaceID)
3468 a->LastMCInterface == intf->InterfaceID &&
3500 rr->LastMCInterface = intf->InterfaceID;
3507 // (recognized by rr->SendNSECNow == intf->InterfaceID) we should really put the NSEC in the Answer Section,
3510 if (rr->SendNSECNow == mDNSInterfaceMark || rr->SendNSECNow == intf->InterfaceID)
3557 if (r2->SendNSECNow == mDNSInterfaceMark || r2->SendNSECNow == intf->InterfaceID)
3624 m->omsg.h.numAdditionals, m->omsg.h.numAdditionals == 1 ? "" : "s", intf->InterfaceID);
3626 if (intf->IPv4Available) mDNSSendDNSMessage(m, &m->omsg, responseptr, intf->InterfaceID, mDNSNULL, mDNSNULL, &AllDNSLinkGroup_v4, MulticastDNSPort, mDNSNULL, mDNSfalse);
3627 if (intf->IPv6Available) mDNSSendDNSMessage(m, &m->omsg, responseptr, intf->InterfaceID, mDNSNULL, mDNSNULL, &AllDNSLinkGroup_v6, MulticastDNSPort, mDNSNULL, mDNSfalse);
3662 "%d to send: %d %02X " PRI_S, IIDPrintable(rr->SendRNow), IIDPrintable(rr->resrec.InterfaceID),
3818 if (cr->resrec.InterfaceID == q->SendQNow && // received on this interface
3856 if (cr->resrec.InterfaceID == q->SendQNow && // received on this interface
3881 mDNSlocal void ReconfirmAntecedents(mDNS *const m, const domainname *const name, const mDNSu32 namehash, const mDNSInterfaceID InterfaceID, const int depth)
3887 if (!InterfaceID) return; // mDNS records have a non-zero InterfaceID. If InterfaceID is 0, then there's nothing to do.
3894 if (cr->resrec.InterfaceID != InterfaceID) continue; // Skip non-mDNS records and mDNS records from other interfaces.
3909 "(depth=%d, InterfaceID=%p, name_hash=%x, target_name_hash=%x) " PRI_S, depth, InterfaceID, nameHash,
3913 ReconfirmAntecedents(m, cr->resrec.name, cr->resrec.namehash, InterfaceID, depth+1);
3931 mDNSlocal mDNSBool CacheGroupHasAddressOnInterface(const CacheGroup *const cg, mDNSu16 rrtype, const mDNSAddr *const addr, const mDNSInterfaceID interfaceID)
3939 cr->resrec.InterfaceID == interfaceID &&
4025 slot->InterfaceID = mDNSNULL;
4031 const mDNSInterfaceID InterfaceID)
4038 if ((slot->InterfaceID == InterfaceID) && ((slot->Time - time) < 0))
4040 slot->InterfaceID = mDNSNULL;
4054 if (slot->InterfaceID == intf->InterfaceID)
4075 mDNSlocal void RecordDupSuppressInfo(DNSQuestion *const q, const mDNSs32 time, const mDNSInterfaceID InterfaceID,
4091 if ((candidate->InterfaceID == InterfaceID) && (candidate->Type == type))
4107 const mDNSBool unused = !candidate->InterfaceID;
4121 slot->InterfaceID = InterfaceID;
4131 mDNSInterfaceID InterfaceID = q->InterfaceID;
4135 if (InterfaceID == mDNSInterface_Any || LocalOnlyOrP2PInterface(InterfaceID))
4137 LogMsg("mDNSSendWakeOnResolve: ERROR!! Invalid InterfaceID %p for question %##s", InterfaceID, q->qname.c);
4170 mDNSPlatformSendWakeupPacket(InterfaceID, EthAddr, IPAddr, InitialWakeOnResolveCount - q->WakeOnResolveCount);
4219 const mDNSInterfaceID InterfaceID)
4234 if (!IsInterfaceValidForAuthRecord(rr, InterfaceID))
4313 ExpireDupSuppressInfoOnInterface(q->DupSuppress, m->timenow - TicksTTL(cr)/20, cr->resrec.InterfaceID);
4324 q->SendQNow = cr->resrec.InterfaceID;
4326 else if (q->SendQNow != cr->resrec.InterfaceID)
4351 mDNSSendDNSMessage(m, &m->omsg, end, cr->resrec.InterfaceID, mDNSNULL, mDNSNULL, &cr->sourceAddress,
4393 mDNSSendDNSMessage(m, &m->omsg, end, q->InterfaceID, mDNSNULL, mDNSNULL, &q->UnicastMDNSResolver,
4416 unicast_assist_addr_enumerate(q->qnamehash, q->InterfaceID,
4535 else if (mDNSOpaque16IsZero(q->TargetQID) && q->InterfaceID &&
4547 ReconfirmAntecedents(m, &q->qname, q->qnamehash, q->InterfaceID, 0);
4555 q->SendQNow = !intf ? mDNSNULL : (q->InterfaceID) ? q->InterfaceID : intf->InterfaceID;
4600 LogSPS("SendQueries ARP Probe %d %s %s", ar->ProbeCount, InterfaceNameForID(m, ar->resrec.InterfaceID), ARDisplayString(m,ar));
4605 LogSPS("SendQueries NDP Probe %d %s %s", ar->ProbeCount, InterfaceNameForID(m, ar->resrec.InterfaceID), ARDisplayString(m,ar));
4613 ar->SendRNow = (!intf || ar->WakeUp.HMAC.l[0]) ? mDNSNULL : ar->resrec.InterfaceID ? ar->resrec.InterfaceID : intf->InterfaceID;
4689 if (mDNSOpaque16IsZero(q->TargetQID) && (q->SendQNow == intf->InterfaceID))
4703 else if (DPCSuppressMDNSQuery(q, intf->InterfaceID))
4755 q->SendQNow = (q->InterfaceID || !q->SendOnAll) ? mDNSNULL : GetNextActiveInterfaceID(intf);
4784 DPCBrowse.SendQNow = intf->InterfaceID;
4795 if (ar->IncludeInProbe || (ar->SendRNow != intf->InterfaceID) ||
4800 if (!mDNSPlatformValidRecordForInterface(ar, intf->InterfaceID))
4802 ar->SendRNow = (ar->resrec.InterfaceID) ? mDNSNULL : GetNextActiveInterfaceID(intf);
4838 if (AddRecordInProbe(m, ar, tmp, intf->InterfaceID))
4856 verbosedebugf("SendQueries: Put Question %##s (%s) probecount %d InterfaceID= %d %d %d",
4857 ar->resrec.name->c, DNSTypeName(ar->resrec.rrtype), ar->ProbeCount, ar->resrec.InterfaceID, ar->resrec.rdestimate, answerforecast);
4872 if (AddRecordInProbe(m, ar, tmp, intf->InterfaceID))
4874 tmp->SendRNow = (ar->resrec.InterfaceID) ? mDNSNULL : GetNextActiveInterfaceID(intf);
4882 LogRedact(MDNS_LOG_CATEGORY_MDNS, MDNS_LOG_DEBUG, "SendQueries: %u questions will be sent in a later request on InterfaceID= %p",
4883 numQuestionSkipped, intf->InterfaceID);
4995 m->omsg.h.numAuthorities, m->omsg.h.numAuthorities == 1 ? "" : "s", IIDPrintable(intf->InterfaceID), intf->ifname);
4996 if (intf->IPv4Available) mDNSSendDNSMessage(m, &m->omsg, queryptr, intf->InterfaceID, mDNSNULL, mDNSNULL, &AllDNSLinkGroup_v4, MulticastDNSPort, mDNSNULL, useBackgroundTrafficClass);
4997 if (intf->IPv6Available) mDNSSendDNSMessage(m, &m->omsg, queryptr, intf->InterfaceID, mDNSNULL, mDNSNULL, &AllDNSLinkGroup_v6, MulticastDNSPort, mDNSNULL, useBackgroundTrafficClass);
5023 IIDPrintable(ar->SendRNow), IIDPrintable(ar->resrec.InterfaceID), ARDisplayString(m, ar));
5061 if (q->InterfaceID != mDNSInterface_BLE)
5063 IIDPrintable(q->SendQNow), x ? "new" : "old", IIDPrintable(q->InterfaceID), q->qname.c, DNSTypeName(q->qtype));
5070 mDNSlocal void SendWakeup(mDNS *const m, mDNSInterfaceID InterfaceID, mDNSEthAddr *EthAddr, mDNSOpaque48 *password, mDNSBool unicastOnly)
5075 NetworkInterfaceInfo *intf = FirstInterfaceForID(m, InterfaceID);
5078 LogRedact(MDNS_LOG_CATEGORY_DEFAULT, MDNS_LOG_DEFAULT, "SendARP: No interface with InterfaceID %p found", InterfaceID);
5101 mDNSPlatformSendRawPacket(m->omsg.data, ptr, InterfaceID);
5111 mDNSPlatformSendRawPacket(m->omsg.data, ptr, InterfaceID);
5424 if (interface->delayHistogram && (interface->InterfaceID == rr->resrec.InterfaceID))
5461 MakeNegativeCacheRecordForQuestion(m, &neg, q, 1, rr->resrec.InterfaceID, zeroID);
5749 ReconfirmAntecedents(m, &q->qname, q->qnamehash, cr->resrec.InterfaceID, 0);
5807 if (!rr->resrec.InterfaceID)
5844 if (!r->resrec.InterfaceID)
5996 if (rr->ARType == AuthRecordLocalOnly || (rr->ARType == AuthRecordP2P && (q->InterfaceID == mDNSInterface_Any || q->InterfaceID == mDNSInterface_BLE)))
6574 SetSPSProxyListChanged(rr->resrec.InterfaceID);
6610 mDNSlocal void TimeoutQuestions_internal(mDNS *const m, DNSQuestion* questions, mDNSInterfaceID InterfaceID)
6628 GenerateNegativeResponse(m, InterfaceID, QC_forceresponse);
6696 mDNSPlatformInterfaceIndexfromInterfaceID(m, intf->InterfaceID, mDNStrue), delay_histogram);
7293 if (intf->McastTxRx && !intf->Loopback && !intf->MustNotPreventSleep && !mDNSPlatformInterfaceIsD2D(intf->InterfaceID))
7366 // Note: scopeid is the same as intf->InterfaceID. It is passed in so that we don't have to call the
7370 (!rr->resrec.InterfaceID || rr->resrec.InterfaceID == intf->InterfaceID))
7462 if ((intf != mDNSNULL) && (mti.IntfId != intf->InterfaceID))
7464 LogInfo("mDNSPlatformRetrieveTCPInfo: InterfaceID mismatch mti.IntfId = %p InterfaceID = %p", mti.IntfId, intf->InterfaceID);
7517 scopeid = mDNSPlatformInterfaceIndexfromInterfaceID(m, intf->InterfaceID, mDNStrue);
7543 if (rr->resrec.InterfaceID == intf->InterfaceID || (!rr->resrec.InterfaceID && (rr->ForceMCast || IsLocalDomain(rr->resrec.name))))
7644 err = mDNSSendDNSMessage(m, &m->omsg, p, intf->InterfaceID, mDNSNULL, mDNSNULL, &intf->SPSAddr[sps], intf->SPSPort[sps], mDNSNULL, mDNSfalse);
7672 mDNSlocal void mDNSCoreStoreProxyRR(mDNS *const m, const mDNSInterfaceID InterfaceID, AuthRecord *const rr)
7681 mDNS_SetupResourceRecord(newRR, mDNSNULL, InterfaceID, rr->resrec.rrtype,
7741 if (!ar->resrec.InterfaceID)
7750 mDNSu32 scopeid = mDNSPlatformInterfaceIndexfromInterfaceID(m, ar->resrec.InterfaceID, mDNStrue);
7766 mDNSCoreStoreProxyRR(m, ar->resrec.InterfaceID, ar);
7807 mDNSu32 scopeid = mDNSPlatformInterfaceIndexfromInterfaceID(m, intf->InterfaceID, mDNStrue);
7809 (!rr->resrec.InterfaceID || rr->resrec.InterfaceID == intf->InterfaceID))
7939 if ((newIntf->InterfaceID != intfid) ||
7948 if ((intf->InterfaceID != regID[i]) ||
8014 if (!intf->McastTxRx || mDNSPlatformInterfaceIsD2D(intf->InterfaceID))
8038 if (skipSameSubnetRegistration(m, registeredIntfIDS, registeredCount, intf->InterfaceID))
8058 scopeid = mDNSPlatformInterfaceIndexfromInterfaceID(m, intf->InterfaceID, mDNStrue);
8078 mDNS_SetupQuestion(&intf->NetWakeResolve[i], intf->InterfaceID, &sps[i]->resrec.rdata->u.name, kDNSType_SRV, NetWakeResolve, intf);
8083 registeredIntfIDS[registeredCount] = intf->InterfaceID;
8274 if (!cr->resrec.InterfaceID)
8517 const mDNSInterfaceID InterfaceID, mDNSBool LegacyQuery, DNSMessage *const response, AuthRecord *ResponseRecords)
8523 mDNSu32 maxttl = (!InterfaceID) ? mDNSMaximumUnicastTTLSeconds : mDNSMaximumMulticastTTLSeconds;
8538 ptr = getQuestion(query, ptr, end, InterfaceID, &q); // get the question...
8758 ptr = GetLargeResourceRecord(m, query, ptr, end, q->InterfaceID, kDNSRecordTypePacketAuth, &m->rec);
8771 DM_NAME_PARAM(our->resrec.name), DNSTypeName(our->resrec.rrtype), our->resrec.InterfaceID);
8791 LogMsg("ResolveSimultaneousProbe: %p Pkt Record: %08lX %s", q->InterfaceID, m->rec.r.resrec.rdatahash, CRDisplayString(m, &m->rec.r));
8792 LogMsg("ResolveSimultaneousProbe: %p Our Record %d %s %08lX %s", our->resrec.InterfaceID, our->ProbeCount, msg, our->resrec.rdatahash, ARDisplayString(m, our));
8809 LogMsg("ResolveSimultaneousProbe: %p Pkt Record: %08lX %s", q->InterfaceID, m->rec.r.resrec.rdatahash, CRDisplayString(m, &m->rec.r));
8810 LogMsg("ResolveSimultaneousProbe: %p Our Record %d ign: %08lX %s", our->resrec.InterfaceID, our->ProbeCount, our->resrec.rdatahash, ARDisplayString(m, our));
8839 ptr = GetLargeResourceRecord(m, query, ptr, end, q->InterfaceID, kDNSRecordTypePacketAuth, &m->rec);
8883 ptr = GetLargeResourceRecord(m, query, ptr, end, q->InterfaceID, kDNSRecordTypePacketAuth, &m->rec);
8892 q->InterfaceID, DNSTypeName(m->rec.r.resrec.rrtype), DM_NAME_PARAM(m->rec.r.resrec.name), CRDisplayString(m, &m->rec.r));
8894 our->resrec.InterfaceID, DNSTypeName(our->resrec.rrtype), DM_NAME_PARAM(our->resrec.name), ARDisplayString(m, our));
8940 if (!pktrr->InterfaceID)
8950 else match = (pktrr->InterfaceID == rr->resrec.InterfaceID);
8961 SetSPSProxyListChanged(m->rec.r.resrec.InterfaceID);
8964 mDNSlocal void ClearKeepaliveProxyRecords(mDNS *const m, const OwnerOptData *const owner, AuthRecord *const thelist, const mDNSInterfaceID InterfaceID)
8975 if (InterfaceID == rr->resrec.InterfaceID && mDNSSameEthAddress(&owner->HMAC, &rr->WakeUp.HMAC))
9001 if (m->rec.r.resrec.InterfaceID == rr->resrec.InterfaceID && mDNSSameEthAddress(&owner->HMAC, &rr->WakeUp.HMAC))
9024 if (m->rec.r.resrec.InterfaceID == rr->resrec.InterfaceID && mDNSSameEthAddress(&owner->HMAC, &rr->WakeUp.HMAC))
9045 SetSPSProxyListChanged(m->rec.r.resrec.InterfaceID);
9056 const mDNSAddr *srcaddr, const mDNSInterfaceID InterfaceID, mDNSBool LegacyQuery, mDNSBool QueryWasMulticast,
9059 const mDNSBool FromLocalSubnet = mDNS_AddressIsLocalSubnet(m, InterfaceID, srcaddr);
9064 mDNSBool notD2D = !mDNSPlatformInterfaceIsD2D(InterfaceID); // We don't run the POOF algorithm on D2D interfaces.
9087 ptr = GetLargeResourceRecord(m, query, ptr, end, InterfaceID, kDNSRecordTypePacketAdd, &m->rec);
9113 tsrsCount, m->rec.r.resrec.InterfaceID, opt->u.tsr.timeStamp, opt->u.tsr.hostkeyHash,
9123 tsrsCount, m->rec.r.resrec.InterfaceID, opt->u.tsr.timeStamp, opt->u.tsr.hostkeyHash,
9132 tsrsCount, m->rec.r.resrec.InterfaceID, RRDisplayString(m, &m->rec.r.resrec));
9148 ptr = getQuestion(query, ptr, end, InterfaceID, &pktq); // get the question...
9201 DM_NAME_PARAM(rr->resrec.name), DNSTypeName(rr->resrec.rrtype), rr->resrec.InterfaceID);
9225 (rr->LastMCInterface != mDNSInterfaceMark && rr->LastMCInterface != InterfaceID))
9243 InterfaceID;
9296 if (!q->InterfaceID || q->InterfaceID == InterfaceID)
9321 AddAdditionalsToResponseList(m, ResponseRecords, &nrp, InterfaceID);
9330 ptr = GetLargeResourceRecord(m, query, ptr, end, InterfaceID, kDNSRecordTypePacketAns, &m->rec);
9349 if (rr->ImmedAnswer == InterfaceID && ShouldSuppressKnownAnswer(&m->rec.r, rr))
9382 if (cr->resrec.InterfaceID == InterfaceID && IdenticalResourceRecord(&m->rec.r.resrec, &cr->resrec))
9464 if (rr->ImmedAnswer && rr->ImmedAnswer != InterfaceID)
9468 rr->ImmedAnswer = InterfaceID; // Record interface to send it on
9496 rr->ImmedAdditional = InterfaceID;
9543 responseptr = GenerateUnicastResponse(query, end, InterfaceID, LegacyQuery, response, ResponseRecords);
9586 cr->UnansweredQueries, InterfaceID, (RRExpireTime(cr) - m->timenow + mDNSPlatformOneSecond-1) / mDNSPlatformOneSecond, CRDisplayString(m, cr));
9599 RecordDupSuppressInfo(q, m->timenow, InterfaceID, srcaddr->type);
9600 debugf("ProcessQuery: Recorded DSI for %##s (%s) on %p/%s", q->qname.c, DNSTypeName(q->qtype), InterfaceID,
9609 const mDNSInterfaceID InterfaceID)
9613 !mDNSAddrIsDNSMulticast(dstaddr) && mDNS_AddressIsLocalSubnet(m, InterfaceID, srcaddr);
9615 if (!dstaddr || (!InterfaceID && mDNSAddrIsDNSMulticast(dstaddr)))
9617 const char *const reason = !dstaddr ? "Received over TCP connection" : "Multicast, but no InterfaceID";
9620 srcaddr, mDNSVal16(srcport), dstaddr, mDNSVal16(dstport), InterfaceID,
9630 srcaddr, mDNSVal16(srcport), dstaddr, mDNSVal16(dstport), InterfaceID,
9637 responseend = ProcessQuery(m, msg, end, srcaddr, InterfaceID,
9643 DumpPacket(mStatus_NoError, mDNSfalse, "N/A", srcaddr, srcport, dstaddr, dstport, msg, end, InterfaceID);
9652 srcaddr, mDNSVal16(srcport), InterfaceID, srcaddr->type);
9653 mDNSSendDNSMessage(m, &m->omsg, responseend, InterfaceID, mDNSNULL, mDNSNULL, srcaddr, srcport, mDNSNULL, mDNSfalse);
9698 // DNS server or a response to the QU query. Hence, the cache record's InterfaceId can be both NULL or non-NULL (QU case)
9871 if (!m->rec.r.resrec.InterfaceID) debugf("CreateNewCacheEntry %s", CRDisplayString(m, &m->rec.r));
9926 if (!rr->resrec.InterfaceID)
9951 mDNS_AddressIsLocalSubnet(m, rr->resrec.InterfaceID, &rr->sourceAddress))
9954 &rr->sourceAddress, rr->resrec.InterfaceID);
10021 mDNS_AddressIsLocalSubnet(m, rr->resrec.InterfaceID, &rr->sourceAddress))
10024 &rr->sourceAddress, rr->resrec.InterfaceID);
10101 const mDNSInterfaceID InterfaceID,
10135 ptr = GetLargeResourceRecord(m, response, ptr, limit, InterfaceID, kDNSRecordTypePacketAuth, &m->rec);
10220 const mDNSInterfaceID InterfaceID,
10268 ptr = GetLargeResourceRecord(m, response, ptr, limit, InterfaceID, kDNSRecordTypePacketAuth, &m->rec);
10416 const mDNSAddr *dstaddr, const mDNSIPPort dstport, const mDNSInterfaceID InterfaceID,
10464 ptr = getQuestion(response, ptr, end, InterfaceID, &q);
10512 ParseCNameChainFromMessage(response, end, InterfaceID, &q.qname, cnameChain, &chainLen);
10679 mDNSBool doNotCreateUnicastNegativeRecordForLocalDomains = (!InterfaceID && (q.qtype != kDNSType_SOA) && IsLocalDomain(&q.qname));
10738 ptr = GetLargeResourceRecord(m, response, ptr, end, InterfaceID, kDNSRecordTypePacketAuth, &m->rec);
10805 const mDNSu32 possible_denial_ttl = ParseDenialOfExistenceObjsFromMessage(response, end, InterfaceID,
11154 const mDNSu32 slot, CacheGroup *cg, CacheRecord ***cfp, mDNSInterfaceID InterfaceID)
11163 mDNSBool requireMatchedDNSService = !InterfaceID;
11187 match = (cr->resrec.InterfaceID == InterfaceID);
11195 m->rec.r.resrec.rdlength, InterfaceID, CRDisplayString(m, &m->rec.r));
11257 mDNSPlatformInterfaceIsAWDL(cr->resrec.InterfaceID) &&
11261 CRDisplayString(m, cr), cr->resrec.InterfaceID);
11278 if (!InterfaceID)
11342 const mDNSu32 ifIndex = mDNSPlatformInterfaceIndexfromInterfaceID(m, InterfaceID, mDNStrue);
11460 if (rr1->InterfaceID != rr2->InterfaceID)
11465 if (!rr1->InterfaceID)
11467 // For Unicast (null InterfaceID) the resolver IDs should also match
11494 // InterfaceID non-NULL tells us the interface this multicast response was received on
11495 // InterfaceID NULL tells us this was a unicast response
11502 const mDNSInterfaceID InterfaceID)
11506 const mDNSBool ResponseSrcLocal = !srcaddr || mDNS_AddressIsLocalSubnet(m, InterfaceID, srcaddr);
11519 InterfaceID);
11551 srcaddr, dstaddr, InterfaceID,
11588 if (!InterfaceID && (response->h.flags.b[0] & kDNSFlag0_TC) && !client &&
11590 if (!InterfaceID && (response->h.flags.b[0] & kDNSFlag0_TC) &&
11603 ptr = GetLargeResourceRecord(m, response, ptr, end, InterfaceID, kDNSRecordTypePacketAdd, &m->rec);
11622 tsrsCount, m->rec.r.resrec.InterfaceID, opt->u.tsr.timeStamp, opt->u.tsr.hostkeyHash,
11632 tsrsCount, m->rec.r.resrec.InterfaceID, opt->u.tsr.timeStamp, opt->u.tsr.hostkeyHash,
11641 tsrsCount, m->rec.r.resrec.InterfaceID, RRDisplayString(m, &m->rec.r.resrec));
11690 ptr = getQuestion(response, ptr, end, InterfaceID, &q);
11739 ", RR interface ID: %p, RR description: " PRI_S ".", q.InterfaceID, DM_NAME_PARAM(&q.qname),
11740 DNSTypeName(q.qtype), cr->resrec.InterfaceID, CRDisplayString(m, cr));
11851 ptr = GetLargeResourceRecord(m, response, ptr, end, InterfaceID, RecordType, &m->rec);
11861 if (DPCHaveSubscriberForRecord(InterfaceID, rr->name, rr->rrtype, rr->rrclass))
11999 if (!InterfaceID)
12001 debugf("mDNSCoreReceiveResponse: InterfaceID %p %##s (%s)", q->InterfaceID, q->qname.c, DNSTypeName(q->qtype));
12018 if (!InterfaceID)
12088 DM_NAME_PARAM(rr->resrec.name), DNSTypeName(rr->resrec.rrtype), (int)IIDPrintable(InterfaceID));
12108 if (rr->ImmedAnswer == InterfaceID) { rr->ImmedAnswer = mDNSNULL; rr->ImmedUnicast = mDNSfalse; }
12112 if (rr->ImmedAnswer == mDNSNULL) { rr->ImmedAnswer = InterfaceID; m->NextScheduledResponse = m->timenow; }
12113 else if (rr->ImmedAnswer != InterfaceID) { rr->ImmedAnswer = mDNSInterfaceMark; m->NextScheduledResponse = m->timenow; }
12125 m->rec.r.resrec.rdatahash, CRDisplayString(m, &m->rec.r), IIDPrintable(InterfaceID));
12183 const NetworkInterfaceInfo *const intf = FirstInterfaceForID(m, InterfaceID);
12194 kMaxAllowedMCastProbingConflicts, IIDPrintable(InterfaceID),
12207 IIDPrintable(InterfaceID));
12288 DM_NAME_PARAM(m->rec.r.resrec.name), DNSTypeName(m->rec.r.resrec.rrtype), (int)IIDPrintable(InterfaceID));
12297 (int)IIDPrintable(cr->resrec.InterfaceID), CRDisplayString(m, cr));
12327 rr = mDNSCoreReceiveCacheCheck(m, response, LLQType, slot, cg, &cfp, InterfaceID);
12501 DumpPacket(mStatus_NoError, mDNSfalse, "N/A", srcaddr, srcport, dstaddr, dstport, response, end, InterfaceID);
12616 else if (r2->resrec.InterfaceID) // else, if record is old, mark it to be flushed
12621 if (mDNSPlatformInterfaceIsAWDL(r2->resrec.InterfaceID))
12721 if (r1->resrec.InterfaceID)
12764 mDNSCoreReceiveNoUnicastAnswers(m, response, end, dstaddr, dstport, InterfaceID,
12782 mDNSlocal void ScheduleWakeupForList(mDNS *const m, mDNSInterfaceID InterfaceID, mDNSEthAddr *e, AuthRecord *const thelist)
12797 if (rr->resrec.InterfaceID == InterfaceID && rr->resrec.RecordType != kDNSRecordTypeDeregistering && mDNSSameEthAddress(&rr->WakeUp.HMAC, e))
12807 mDNSlocal void ScheduleWakeup(mDNS *const m, mDNSInterfaceID InterfaceID, mDNSEthAddr *e)
12814 ScheduleWakeupForList(m, InterfaceID, e, m->DuplicateRecords);
12815 ScheduleWakeupForList(m, InterfaceID, e, m->ResourceRecords);
12829 InterfaceNameForID(m, ar->resrec.InterfaceID), &ar->WakeUp.HMAC, ARDisplayString(m, ar));
12832 SendWakeup(m, ar->resrec.InterfaceID, &ar->WakeUp.IMAC, &ar->WakeUp.password, mDNSfalse); // Send one wakeup magic packet
12833 ScheduleWakeup(m, ar->resrec.InterfaceID, &ar->WakeUp.HMAC); // Schedule all other records with the same owner to be woken
13302 const mDNSInterfaceID InterfaceID)
13313 srcaddr, mDNSVal16(srcport), dstaddr, mDNSVal16(dstport), InterfaceID,
13319 if (!InterfaceID || !m->SPSSocket || !mDNSSameIPPort(dstport, m->SPSSocket->port)) return;
13322 DumpPacket(mStatus_NoError, mDNSfalse, "UDP", srcaddr, srcport, dstaddr, dstport, msg, end, InterfaceID);
13378 ClearKeepaliveProxyRecords(m, &owner, m->DuplicateRecords, InterfaceID);
13379 ClearKeepaliveProxyRecords(m, &owner, m->ResourceRecords, InterfaceID);
13383 ptr = GetLargeResourceRecord(m, msg, ptr, end, InterfaceID, kDNSRecordTypePacketAuth, &m->rec);
13403 mDNS_SetupResourceRecord(ar, mDNSNULL, InterfaceID, m->rec.r.resrec.rrtype, m->rec.r.resrec.rroriginalttl, RecordType, AuthRecordAny, SPSRecordCallback, ar);
13416 if (ar->AddressProxy.type) SetSPSProxyListChanged(InterfaceID);
13451 if (p) mDNSSendDNSMessage(m, &m->omsg, p, InterfaceID, mDNSNULL, m->SPSSocket, srcaddr, srcport, mDNSNULL, mDNSfalse);
13455 mDNSlocal mDNSu32 mDNSGenerateOwnerOptForInterface(mDNS *const m, const mDNSInterfaceID InterfaceID, DNSMessage *msg)
13468 intf = FirstInterfaceForID(m, InterfaceID);
13489 mDNSlocal void mDNSCoreReceiveUpdateR(mDNS *const m, const DNSMessage *const msg, const mDNSu8 *end, const mDNSAddr *srcaddr, const mDNSInterfaceID InterfaceID)
13491 if (InterfaceID)
13496 if (gotlease) LogSPS("DNS Update response contains lease option granting %4d seconds, updateid %d, InterfaceID %p", updatelease, mDNSVal16(msg->h.id), InterfaceID);
13504 if (rr->resrec.InterfaceID == InterfaceID || (!rr->resrec.InterfaceID && (rr->ForceMCast || IsLocalDomain(rr->resrec.name))))
13507 // We successfully completed this record's registration on this "InterfaceID". Clear that bit.
13509 mDNSu32 scopeid = mDNSPlatformInterfaceIndexfromInterfaceID(m, InterfaceID, mDNStrue);
13536 ifname = InterfaceNameForID(m, InterfaceID);
13543 length = mDNSGenerateOwnerOptForInterface(m, InterfaceID, &optMsg);
13558 const mDNSInterfaceID InterfaceID, const DNSServRef dnsserv, const mDNSOpaque16 responseFlags)
13565 cr->resrec.InterfaceID = InterfaceID;
13606 const mDNSu32 ttl, const mDNSInterfaceID InterfaceID, const mDNSOpaque16 responseFlags)
13613 MakeNegativeCacheRecord(m, cr, &q->qname, q->qnamehash, q->qtype, q->qclass, ttl, InterfaceID, dnsserv, responseFlags);
13618 const mdns_client_t client, const mdns_dns_service_t dnsservice, const mDNSInterfaceID InterfaceID)
13622 mDNSCoreReceiveResponse(m, msg, end, mDNSNULL, zeroIPPort, mDNSNULL, zeroIPPort, client, dnsservice, InterfaceID);
13629 const mDNSInterfaceID InterfaceID)
13631 mDNSInterfaceID ifid = InterfaceID;
13649 LNT_ConfigureRouterInfo(m, InterfaceID, (mDNSu8 *)msg, (mDNSu16)(end - pkt));
13657 uDNS_ReceiveNATPacket(m, InterfaceID, (mDNSu8 *)msg, (mDNSu16)(end - pkt));
13699 DumpPacket(mStatus_NoError, mDNSfalse, TLS ? "TLS" : !dstaddr ? "TCP" : "UDP", srcaddr, srcport, dstaddr, dstport, msg, end, InterfaceID);
13710 else if (QR_OP == UpdQ) mDNSCoreReceiveUpdate (m, msg, end, srcaddr, srcport, dstaddr, dstport, InterfaceID);
13711 else if (QR_OP == UpdR) mDNSCoreReceiveUpdateR (m, msg, end, srcaddr, InterfaceID);
13721 msg->h.flags.b[0], msg->h.flags.b[1], srcaddr, mDNSVal16(srcport), dstaddr, mDNSVal16(dstport), (int)(end - pkt), InterfaceID);
13780 if (q->InterfaceID != question->InterfaceID) continue;
13962 LogRedact(MDNS_LOG_CATEGORY_DEFAULT, MDNS_LOG_DEBUG, "mDNS_AddMcastResolver: Adding " PUB_DM_NAME ", InterfaceID %p, timeout %u",
14128 // Note: InterfaceID is the InterfaceID of the question
14129 mDNSlocal mDNSBool DNSServerMatch(DNSServer *d, mDNSInterfaceID InterfaceID, mDNSs32 ServiceID)
14131 // 1) Unscoped questions (NULL InterfaceID) should consider *only* unscoped DNSServers ( DNSServer
14134 // 2) Scoped questions (non-NULL InterfaceID) should consider *only* scoped DNSServers (DNSServer
14141 // unscoped. The question is unscoped only if InterfaceID is zero and ServiceID is -1.
14144 // InterfaceID for discussion and the same holds good for ServiceID):
14146 // - DNSServer is not scoped, InterfaceID is not NULL - we should skip the current DNSServer entry
14149 // - DNSServer is scoped, InterfaceID is NULL - we should skip the current DNSServer entry as
14150 // unscoped question should not match scoped DNSServer (Refer to (1) above). The InterfaceID check
14153 // - DNSServer is scoped and InterfaceID is not NULL - the InterfaceID of the question and the DNSServer
14156 if (((d->scopeType == kScopeNone) && (!InterfaceID && ServiceID == -1)) ||
14157 ((d->scopeType == kScopeInterfaceID) && d->interface == InterfaceID) ||
14187 // This happens normally when you unplug the interface where we reset the interfaceID to mDNSInterface_Any for all
14188 // the DNS servers whose scope match the interfaceID. Few seconds later, we also receive the updated DNS configuration.
14195 // Skip DNSServers that are InterfaceID Scoped but have no valid interfaceid set OR DNSServers that are ServiceID Scoped but have no valid serviceid set
14205 if ((!DEQuery || !curr->isCell) && DNSServerMatch(curr, question->InterfaceID, question->ServiceID))
14243 mDNSlocal DNSServer *GetBestServer(mDNS *m, const domainname *name, mDNSInterfaceID InterfaceID, mDNSs32 ServiceID, mDNSOpaque128 validBits,
14286 if (DNSServerMatch(curr, InterfaceID, ServiceID))
14292 // part and still do some redundant steps e.g., InterfaceID match
14317 // Look up a DNS Server, matching by name and InterfaceID
14318 mDNSlocal DNSServer *GetServerForName(mDNS *m, const domainname *name, mDNSInterfaceID InterfaceID, mDNSs32 ServiceID)
14324 if (InterfaceID == mDNSInterface_LocalOnly)
14325 InterfaceID = mDNSNULL;
14327 if (InterfaceID) ifname = InterfaceNameForID(m, InterfaceID);
14332 curmatch = GetBestServer(m, name, InterfaceID, ServiceID, allValid, mDNSNULL, mDNStrue);
14337 InterfaceID, name);
14339 LogInfo("GetServerForName: no DNS server (Scope %s:%p) for %##s", ifname ? ifname : "None", InterfaceID, name);
14349 mDNSInterfaceID InterfaceID = question->InterfaceID;
14353 if (InterfaceID == mDNSInterface_LocalOnly)
14354 InterfaceID = mDNSNULL;
14356 if (InterfaceID)
14357 ifname = InterfaceNameForID(m, InterfaceID);
14361 curmatch = GetBestServer(m, name, InterfaceID, question->ServiceID, question->validDNSServers, &currindex, mDNSfalse);
14372 ifname ? ifname : "None", InterfaceID, question->ServiceID, DM_NAME_PARAM(name),
14379 ifname ? ifname : "None", InterfaceID, question->ServiceID, DM_NAME_PARAM(name),
14737 const mDNSInterfaceID InterfaceID)
14739 mDNSCoreReceiveResponse(m, response, end, srcaddr, srcport, dstaddr, dstport, mDNSNULL, mDNSNULL, InterfaceID);
14836 if (question->InterfaceID && !LocalOnlyOrP2PInterface(question->InterfaceID))
14838 NetworkInterfaceInfo *intf = FirstInterfaceForID(m, question->InterfaceID);
14840 InterfaceID %d for question %##s (%s) not currently found in active interface list",
14841 IIDPrintable(question->InterfaceID), question->qname.c, DNSTypeName(question->qtype));
14867 if (LocalOnlyOrP2PInterface(question->InterfaceID) && !question->TimeoutQuestion)
14905 mDNSu32 timeout = LocalOnlyOrP2PInterface(question->InterfaceID) ?
14918 if (!(LocalOnlyOrP2PInterface(question->InterfaceID)))
15004 question->qname.c, DNSTypeName(question->qtype), question->InterfaceID, m->timenow,
15125 const mDNSBool localOnlyOrP2P = LocalOnlyOrP2PInterface(question->InterfaceID);
15245 const mDNSBool localOnlyOrP2P = LocalOnlyOrP2PInterface(question->InterfaceID);
15412 if (LocalOnlyOrP2PInterface(question->InterfaceID))
15430 if (!LocalOnlyOrP2PInterface(question->InterfaceID) && mDNSOpaque16IsZero(question->TargetQID))
15664 DNSQuestion *const *qp = LocalOnlyOrP2PInterface(question->InterfaceID) ? &m->LocalOnlyQuestions : &m->Questions;
15738 if (status == mStatus_NoError) ReconfirmAntecedents(m, cr->resrec.name, cr->resrec.namehash, cr->resrec.InterfaceID, 0);
15751 if (status == mStatus_NoError) ReconfirmAntecedents(m, cr->resrec.name, cr->resrec.namehash, cr->resrec.InterfaceID, 0);
15758 const mDNSInterfaceID InterfaceID, mDNSu32 flags,
15762 question->InterfaceID = InterfaceID;
15796 const mDNSInterfaceID InterfaceID, mDNSu32 flags,
15802 status = mDNS_StartBrowse_internal(m, question, srv, domain, InterfaceID, flags, ForceMCast, useBackgroundTrafficClass, Callback, Context);
15808 const domainname * domain, const mDNSInterfaceID InterfaceID, mDNSQuestionCallback *const Callback,
15811 question->InterfaceID = InterfaceID;
15837 const domainname *const domain, const mDNSInterfaceID InterfaceID, mDNSQuestionCallback *const Callback,
15841 const mStatus err = mDNS_GetDomains_Internal(m, question, DomainType, domain, InterfaceID, Callback, Context);
16269 if (mDNSPlatformInterfaceIsAWDL(intf->InterfaceID)) continue;
16292 const mDNSBool interfaceIsAWDL = mDNSPlatformInterfaceIsAWDL(set->InterfaceID);
16334 mDNS_SetupResourceRecord(addrAR, mDNSNULL, set->InterfaceID, kDNSType_A, kHostNameTTL, addrRecordType, AuthRecordAny, hostnameCallback, set);
16335 InterfaceID, kDNSType_PTR, kHostNameTTL, kDNSRecordTypeKnownUnique, AuthRecordAny, mDNSNULL, mDNSNULL);
16395 if (mDNSPlatformInterfaceIsAWDL(set->InterfaceID))
16415 const mDNSBool interfaceIsAWDL = mDNSPlatformInterfaceIsAWDL(set->InterfaceID);
16592 if (intf->InterfaceID == active->InterfaceID)
16649 mDNS_StartBrowse_internal(m, &set->NetWakeBrowse, &SleepProxyServiceType, &localdomain, set->InterfaceID, 0, mDNSfalse, mDNSfalse, m->SPSBrowseCallback, set);
16701 if (q->InterfaceID == mDNSInterface_Any)
16707 return (q->InterfaceID == intf->InterfaceID);
16717 if (!set->InterfaceID)
16719 LogRedact(MDNS_LOG_CATEGORY_MDNS, MDNS_LOG_ERROR, "Tried to register a NetworkInterfaceInfo with zero InterfaceID - ifaddr: " PRI_IP_ADDR,
16742 // Scan list to see if this InterfaceID is already represented
16753 if ((*p)->InterfaceID == set->InterfaceID)
16755 // This InterfaceID already represented by a different interface in the list, so mark this instance inactive for now
16773 "ifid: %d, ifname: " PUB_S ", ifaddr: " PRI_IP_ADDR, IIDPrintable(set->InterfaceID), set->ifname, &set->ip);
16778 IIDPrintable(set->InterfaceID), set->ifname, &set->ip);
16877 mDNSBool dodelay = (activationSpeed == SlowActivation) && (q->FlappingInterface1 == set->InterfaceID || q->FlappingInterface2 == set->InterfaceID);
16906 if (IsInterfaceValidForAuthRecord(rr, set->InterfaceID))
16927 if (mDNSPlatformInterfaceIsAWDL(removedIntf->InterfaceID)) return;
16935 if (mDNSPlatformInterfaceIsAWDL(intf->InterfaceID)) continue;
16984 if (intf->InterfaceActive && intf->InterfaceID == set->InterfaceID)
16989 intf = FirstInterfaceForID(m, set->InterfaceID);
16993 "Another representative of InterfaceID exists - ifid: %d, ifname: " PUB_S ", ifaddr: " PRI_IP_ADDR,
16994 IIDPrintable(set->InterfaceID), set->ifname, &set->ip);
17008 if (intf->InterfaceID == set->InterfaceID && intf->ip.type == set->ip.type)
17024 LogRedact(MDNS_LOG_CATEGORY_MDNS, MDNS_LOG_DEFAULT, "Last representative of InterfaceID deregistered; marking questions etc. dormant - "
17026 IIDPrintable(set->InterfaceID), set->ifname, &set->ip);
17040 DPCHandleInterfaceDown(set->InterfaceID);
17048 if (q->InterfaceID == set->InterfaceID) q->ThisQInterval = 0;
17049 if (!q->InterfaceID || q->InterfaceID == set->InterfaceID)
17052 q->FlappingInterface1 = set->InterfaceID; // Keep history of the last two interfaces to go away
17061 if (rr->resrec.InterfaceID == set->InterfaceID)
17131 if (rr->resrec.InterfaceID == set->InterfaceID)
17216 mDNSlocal AuthRecType setAuthRecType(mDNSInterfaceID InterfaceID, mDNSu32 flags)
17220 if (InterfaceID == mDNSInterface_LocalOnly)
17222 else if (InterfaceID == mDNSInterface_P2P || InterfaceID == mDNSInterface_BLE)
17224 else if ((InterfaceID == mDNSInterface_Any) && (flags & kDNSServiceFlagsIncludeP2P)
17227 else if ((InterfaceID == mDNSInterface_Any) && (flags & kDNSServiceFlagsIncludeP2P))
17229 else if ((InterfaceID == mDNSInterface_Any) && (flags & kDNSServiceFlagsIncludeAWDL))
17250 mDNSInterfaceID InterfaceID, mDNSServiceCallback Callback, void *Context, mDNSu32 flags)
17266 artype = setAuthRecType(InterfaceID, flags);
17270 mDNS_SetupResourceRecord(&sr->RR_ADV, mDNSNULL, InterfaceID, kDNSType_PTR, kStandardTTL, kDNSRecordTypeAdvisory, artype, ServiceCallback, sr);
17271 mDNS_SetupResourceRecord(&sr->RR_PTR, mDNSNULL, InterfaceID, kDNSType_PTR, kStandardTTL, kDNSRecordTypeShared, artype, ServiceCallback, sr);
17278 mDNS_SetupResourceRecord(&sr->RR_SRV, mDNSNULL, InterfaceID, kDNSType_SRV, kHostNameTTL, recordType, artype, ServiceCallback, sr);
17279 mDNS_SetupResourceRecord(&sr->RR_TXT, txtrdata, InterfaceID, kDNSType_TXT, kStandardTTL, recordType, artype, ServiceCallback, sr);
17283 return(mDNS_RegisterNoSuchService(m, &sr->RR_SRV, name, type, domain, mDNSNULL, InterfaceID, NSSCallback, sr, flags));
17318 mDNS_SetupResourceRecord(&sr->SubTypes[i], mDNSNULL, InterfaceID, kDNSType_PTR, kStandardTTL, kDNSRecordTypeShared, artype, ServiceCallback, sr);
17376 unicast_assist_auth_add(sr->RR_PTR.resrec.name, sr->RR_PTR.resrec.namehash, InterfaceID);
17388 InterfaceID = sr->RR_PTR.resrec.InterfaceID;
17391 artype = setAuthRecType(InterfaceID, flags);
17394 mDNS_SetupResourceRecord(&extra->r, rdata, sr->RR_PTR.resrec.InterfaceID,
17501 sr->RR_PTR.resrec.InterfaceID, sr->ServiceCallback, sr->ServiceContext, sr->flags);
17575 unicast_assist_auth_rmv(sr->RR_PTR.resrec.name, sr->RR_PTR.resrec.namehash, sr->RR_PTR.resrec.InterfaceID);
17593 const mDNSInterfaceID InterfaceID, mDNSRecordCallback Callback, void *Context, mDNSu32 flags)
17597 artype = setAuthRecType(InterfaceID, flags);
17599 mDNS_SetupResourceRecord(rr, mDNSNULL, InterfaceID, kDNSType_SRV, kHostNameTTL, kDNSRecordTypeUnique, artype, Callback, Context);
17610 mDNS_DomainType DomainType, const mDNSInterfaceID InterfaceID, char *domname)
17614 if (InterfaceID == mDNSInterface_LocalOnly)
17616 else if (InterfaceID == mDNSInterface_P2P || InterfaceID == mDNSInterface_BLE)
17620 mDNS_SetupResourceRecord(rr, mDNSNULL, InterfaceID, kDNSType_PTR, kStandardTTL, kDNSRecordTypeShared, artype, mDNSNULL, mDNSNULL);
17692 mDNSlocal void mDNSCoreReceiveRawARP(mDNS *const m, const ARP_EthIP *const arp, const mDNSInterfaceID InterfaceID)
17696 NetworkInterfaceInfo *intf = FirstInterfaceForID(m, InterfaceID);
17712 if (rr->resrec.InterfaceID == InterfaceID && rr->resrec.RecordType != kDNSRecordTypeDeregistering &&
17734 mDNSPlatformSetLocalAddressCacheEntry(&rr->AddressProxy, &rr->WakeUp.IMAC, InterfaceID);
17759 if (rr->resrec.InterfaceID == InterfaceID && rr->resrec.RecordType != kDNSRecordTypeDeregistering &&
17780 ScheduleWakeup(m, rr->resrec.InterfaceID, &rr->WakeUp.HMAC);
17806 const IPv6NDP *const ndp, const mDNSu8 *const end, const mDNSInterfaceID InterfaceID)
17809 NetworkInterfaceInfo *intf = FirstInterfaceForID(m, InterfaceID);
17820 if (rr->resrec.InterfaceID == InterfaceID && rr->resrec.RecordType != kDNSRecordTypeDeregistering &&
17842 mDNSPlatformSetLocalAddressCacheEntry(&rr->AddressProxy, &rr->WakeUp.IMAC, InterfaceID);
17862 if (rr->resrec.InterfaceID == InterfaceID && rr->resrec.RecordType != kDNSRecordTypeDeregistering &&
17882 ScheduleWakeup(m, rr->resrec.InterfaceID, &rr->WakeUp.HMAC);
17892 const mDNSu8 *const p, const TransportLayerPacket *const t, const mDNSu8 *const end, const mDNSInterfaceID InterfaceID, const mDNSu16 len)
18031 if (!checksum) mDNSCoreReceiveRawND(m, sha, &src->ip.v6, &t->ndp, &t->bytes[len], InterfaceID);
18046 if (rr->resrec.InterfaceID == InterfaceID &&
18052 if (r2->resrec.InterfaceID == InterfaceID && mDNSSameEthAddress(&r2->WakeUp.HMAC, &rr->WakeUp.HMAC) &&
18062 InterfaceNameForID(m, rr->resrec.InterfaceID), dst, &rr->WakeUp.HMAC, &rr->WakeUp.IMAC, ARDisplayString(m, r2));
18063 ScheduleWakeup(m, rr->resrec.InterfaceID, &rr->WakeUp.HMAC);
18067 InterfaceNameForID(m, rr->resrec.InterfaceID), dst, &rr->WakeUp.HMAC, tp, mDNSVal16(port));
18073 mDNSexport void mDNSCoreReceiveRawPacket(mDNS *const m, const mDNSu8 *const p, const mDNSu8 *const end, const mDNSInterfaceID InterfaceID)
18092 mDNSCoreReceiveRawARP(m, &pkt->arp, InterfaceID);
18103 mDNSCoreReceiveRawTransportPacket(m, &eth->src, &src, &dst, pkt->v4.protocol, p, (const TransportLayerPacket*)trans, transEnd, InterfaceID, 0);
18113 mDNSCoreReceiveRawTransportPacket(m, &eth->src, &src, &dst, pkt->v6.pro, p, (const TransportLayerPacket*)trans, end, InterfaceID,
18764 DM_NAME_PARAM(&q->qname), DNSTypeName(q->qtype), q->InterfaceID);
18845 if (cr->resrec.InterfaceID) continue;
18857 // active question's InterfaceID/ServiceID for looking up the right DNS server.
18866 ptr = GetServerForName(m, cr->resrec.name, cr->CRActiveQuestion->InterfaceID, cr->CRActiveQuestion->ServiceID);
18890 qptr->qname.c, DNSTypeName(qptr->qtype), qptr->InterfaceID,
18900 qptr->qname.c, DNSTypeName(qptr->qtype), qptr->InterfaceID,
18946 if (!cr->resrec.InterfaceID)