Lines Matching refs:rr
117 #define LORecordAnswersAddressType(rr) ((rr)->ARType == AuthRecordLocalOnly && \ argument
118 (rr)->resrec.RecordType & kDNSRecordTypeUniqueMask && \
119 ((rr)->resrec.rrtype == kDNSType_A || (rr)->resrec.rrtype == kDNSType_AAAA || \
120 (rr)->resrec.rrtype == kDNSType_CNAME))
122 #define FollowCNAME(q, rr, AddRecord) (AddRecord && (q)->qtype != kDNSType_CNAME && \ argument
123 (rr)->RecordType != kDNSRecordTypePacketNegative && \
124 (rr)->rrtype == kDNSType_CNAME)
247 …port AuthGroup *AuthGroupForRecord(AuthHash *r, const mDNSu32 slot, const ResourceRecord *const rr) in AuthGroupForRecord() argument
249 return(AuthGroupForName(r, slot, rr->namehash, rr->name)); in AuthGroupForRecord()
252 mDNSlocal AuthGroup *GetAuthGroup(AuthHash *r, const mDNSu32 slot, const ResourceRecord *const rr) in GetAuthGroup() argument
254 mDNSu16 namelen = DomainNameLength(rr->name); in GetAuthGroup()
256 …if (!ag) { LogMsg("GetAuthGroup: Failed to allocate memory for %##s", rr->name->c); return(mDNSNUL… in GetAuthGroup()
258 ag->namehash = rr->namehash; in GetAuthGroup()
266 LogMsg("GetAuthGroup: Failed to allocate name storage for %##s", rr->name->c); in GetAuthGroup()
270 AssignDomainName(ag->name, rr->name); in GetAuthGroup()
272 …if (AuthGroupForRecord(r, slot, rr)) LogMsg("GetAuthGroup: Already have AuthGroup for %##s", rr->n… in GetAuthGroup()
274 …if (AuthGroupForRecord(r, slot, rr) != ag) LogMsg("GetAuthGroup: Not finding AuthGroup for %##s", … in GetAuthGroup()
280 mDNSexport AuthGroup *InsertAuthRecord(mDNS *const m, AuthHash *r, AuthRecord *rr) in InsertAuthRecord() argument
283 const mDNSu32 slot = AuthHashSlot(rr->resrec.name); in InsertAuthRecord()
284 ag = AuthGroupForRecord(r, slot, &rr->resrec); in InsertAuthRecord()
285 …if (!ag) ag = GetAuthGroup(r, slot, &rr->resrec); // If we don't have a AuthGroup for this name, m… in InsertAuthRecord()
288 LogInfo("InsertAuthRecord: inserting auth record %s from table", ARDisplayString(m, rr)); in InsertAuthRecord()
289 *(ag->rrauth_tail) = rr; // Append this record to tail of cache slot list in InsertAuthRecord()
290 ag->rrauth_tail = &(rr->next); // Advance tail pointer in InsertAuthRecord()
295 mDNSexport AuthGroup *RemoveAuthRecord(mDNS *const m, AuthHash *r, AuthRecord *rr) in RemoveAuthRecord() argument
300 const mDNSu32 slot = AuthHashSlot(rr->resrec.name); in RemoveAuthRecord()
302 a = AuthGroupForRecord(r, slot, &rr->resrec); in RemoveAuthRecord()
303 …if (!a) { LogMsg("RemoveAuthRecord: ERROR!! AuthGroup not found for %s", ARDisplayString(m, rr)); … in RemoveAuthRecord()
307 if (*rp != rr) in RemoveAuthRecord()
313 LogInfo("RemoveAuthRecord: removing auth record %s from table", ARDisplayString(m, rr)); in RemoveAuthRecord()
331 …Group *CacheGroupForRecord(const mDNS *const m, const mDNSu32 slot, const ResourceRecord *const rr) in CacheGroupForRecord() argument
333 return(CacheGroupForName(m, slot, rr->namehash, rr->name)); in CacheGroupForRecord()
393 mDNSlocal void AnswerQuestionByFollowingCNAME(mDNS *const m, DNSQuestion *q, ResourceRecord *rr) in AnswerQuestionByFollowingCNAME() argument
395 const mDNSBool selfref = SameDomainName(&q->qname, &rr->rdata->u.name); in AnswerQuestionByFollowingCNAME()
398 …peName(q->qtype), q->CNAMEReferrals, selfref ? " (Self-Referential)" : "", RRDisplayString(m, rr)); in AnswerQuestionByFollowingCNAME()
419 q, q->qname.c, DNSTypeName(q->qtype), q->CNAMEReferrals, RRDisplayString(m, rr)); in AnswerQuestionByFollowingCNAME()
422 AssignDomainName(&q->qname, &rr->rdata->u.name); // Update qname in AnswerQuestionByFollowingCNAME()
430 q, q->qname.c, DNSTypeName(q->qtype), RRDisplayString(m, rr)); in AnswerQuestionByFollowingCNAME()
442 mDNSlocal void AnswerLocalQuestionWithLocalAuthRecord(mDNS *const m, AuthRecord *rr, QC_result AddR… in AnswerLocalQuestionWithLocalAuthRecord() argument
449 …ithLocalAuthRecord: ERROR!! CurrentQuestion NULL while answering with %s", ARDisplayString(m, rr)); in AnswerLocalQuestionWithLocalAuthRecord()
453 followcname = FollowCNAME(q, &rr->resrec, AddRecord); in AnswerLocalQuestionWithLocalAuthRecord()
456 if (!(rr->resrec.RecordType & kDNSRecordTypeActiveMask)) in AnswerLocalQuestionWithLocalAuthRecord()
459 AddRecord ? "Add" : "Rmv", rr->resrec.RecordType, ARDisplayString(m, rr)); in AnswerLocalQuestionWithLocalAuthRecord()
464 if (AddRecord) rr->AnsweredLocalQ = mDNStrue; in AnswerLocalQuestionWithLocalAuthRecord()
469 if (LORecordAnswersAddressType(rr)) in AnswerLocalQuestionWithLocalAuthRecord()
476 q->QuestionCallback(m, q, &rr->resrec, AddRecord); in AnswerLocalQuestionWithLocalAuthRecord()
482 AnswerQuestionByFollowingCNAME(m, q, &rr->resrec); in AnswerLocalQuestionWithLocalAuthRecord()
486 q->QuestionCallback(m, q, &rr->resrec, AddRecord); in AnswerLocalQuestionWithLocalAuthRecord()
491 mDNSlocal void AnswerInterfaceAnyQuestionsWithLocalAuthRecord(mDNS *const m, AuthRecord *rr, QC_res… in AnswerInterfaceAnyQuestionsWithLocalAuthRecord() argument
501 if (RRAny(rr)) in AnswerInterfaceAnyQuestionsWithLocalAuthRecord()
502 answered = ResourceRecordAnswersQuestion(&rr->resrec, q); in AnswerInterfaceAnyQuestionsWithLocalAuthRecord()
504 answered = LocalOnlyRecordAnswersQuestion(rr, q); in AnswerInterfaceAnyQuestionsWithLocalAuthRecord()
506 AnswerLocalQuestionWithLocalAuthRecord(m, rr, AddRecord); // MUST NOT dereference q again in AnswerInterfaceAnyQuestionsWithLocalAuthRecord()
524 mDNSlocal void AnswerAllLocalQuestionsWithLocalAuthRecord(mDNS *const m, AuthRecord *rr, QC_result … in AnswerAllLocalQuestionsWithLocalAuthRecord() argument
536 if (RRAny(rr)) in AnswerAllLocalQuestionsWithLocalAuthRecord()
537 answered = ResourceRecordAnswersQuestion(&rr->resrec, q); in AnswerAllLocalQuestionsWithLocalAuthRecord()
539 answered = LocalOnlyRecordAnswersQuestion(rr, q); in AnswerAllLocalQuestionsWithLocalAuthRecord()
541 AnswerLocalQuestionWithLocalAuthRecord(m, rr, AddRecord); // MUST NOT dereference q again in AnswerAllLocalQuestionsWithLocalAuthRecord()
549 if (rr->ARType == AuthRecordLocalOnly || rr->ARType == AuthRecordP2P) in AnswerAllLocalQuestionsWithLocalAuthRecord()
550 AnswerInterfaceAnyQuestionsWithLocalAuthRecord(m, rr, AddRecord); in AnswerAllLocalQuestionsWithLocalAuthRecord()
658 …NSlocal mDNSBool ShouldSuppressKnownAnswer(const CacheRecord *const ka, const AuthRecord *const rr) in ShouldSuppressKnownAnswer() argument
661 if (!IdenticalResourceRecord(&ka->resrec, &rr->resrec)) return(mDNSfalse); in ShouldSuppressKnownAnswer()
672 return(mDNSBool)(ka->resrec.rroriginalttl >= rr->resrec.rroriginalttl / 2); in ShouldSuppressKnownAnswer()
675 mDNSlocal void SetNextAnnounceProbeTime(mDNS *const m, const AuthRecord *const rr) in SetNextAnnounceProbeTime() argument
677 if (rr->resrec.RecordType == kDNSRecordTypeUnique) in SetNextAnnounceProbeTime()
679 if ((rr->LastAPTime + rr->ThisAPInterval) - m->timenow > mDNSPlatformOneSecond * 10) in SetNextAnnounceProbeTime()
681 …: ProbeCount %d Next in %d %s", rr->ProbeCount, (rr->LastAPTime + rr->ThisAPInterval) - m->timenow… in SetNextAnnounceProbeTime()
684 if (m->NextScheduledProbe - (rr->LastAPTime + rr->ThisAPInterval) >= 0) in SetNextAnnounceProbeTime()
685 m->NextScheduledProbe = (rr->LastAPTime + rr->ThisAPInterval); in SetNextAnnounceProbeTime()
693 …else if (rr->AnnounceCount && (ResourceRecordIsValidAnswer(rr) || rr->resrec.RecordType == kDNSRec… in SetNextAnnounceProbeTime()
695 if (m->NextScheduledResponse - (rr->LastAPTime + rr->ThisAPInterval) >= 0) in SetNextAnnounceProbeTime()
696 m->NextScheduledResponse = (rr->LastAPTime + rr->ThisAPInterval); in SetNextAnnounceProbeTime()
700 mDNSlocal void InitializeLastAPTime(mDNS *const m, AuthRecord *const rr) in InitializeLastAPTime() argument
703 …rr->ThisAPInterval = rr->AddressProxy.type ? mDNSPlatformOneSecond : DefaultAPIntervalForRecordTyp… in InitializeLastAPTime()
716 if (rr->ProbeCount) in InitializeLastAPTime()
756 rr->LastAPTime = m->SuppressProbes - rr->ThisAPInterval; in InitializeLastAPTime()
759 …rr->LastAPTime = m->SuppressProbes - rr->ThisAPInterval + DefaultProbeIntervalForTypeUnique * Defa… in InitializeLastAPTime()
761 rr->LastAPTime = m->timenow - rr->ThisAPInterval; in InitializeLastAPTime()
769 if (rr->AddressProxy.type) rr->LastAPTime = m->timenow; in InitializeLastAPTime()
777 if (rr->WakeUp.HMAC.l[0] && rr->resrec.rrtype == kDNSType_AAAA) in InitializeLastAPTime()
778 rr->LastAPTime = m->timenow - rr->ThisAPInterval + mDNSPlatformOneSecond * 10; in InitializeLastAPTime()
782 rr->LastMCTime = m->timenow; in InitializeLastAPTime()
783 rr->LastMCInterface = mDNSInterfaceMark; in InitializeLastAPTime()
785 SetNextAnnounceProbeTime(m, rr); in InitializeLastAPTime()
788 mDNSlocal const domainname *SetUnicastTargetToHostName(mDNS *const m, AuthRecord *rr) in SetUnicastTargetToHostName() argument
791 if (rr->AutoTarget) in SetUnicastTargetToHostName()
796 DomainAuthInfo *AuthInfo = GetAuthInfoForName_internal(m, rr->resrec.name); in SetUnicastTargetToHostName()
797 if (!AuthInfo || !AuthInfo->AutoTunnel) rr->AutoTarget = Target_AutoHostAndNATMAP; in SetUnicastTargetToHostName()
800 target = GetServiceTarget(m, rr); in SetUnicastTargetToHostName()
804 LogInfo("SetUnicastTargetToHostName No target for %s", ARDisplayString(m, rr)); in SetUnicastTargetToHostName()
805 rr->state = regState_NoTarget; in SetUnicastTargetToHostName()
810 …"SetUnicastTargetToHostName target %##s for resource record %s", target->c, ARDisplayString(m,rr)); in SetUnicastTargetToHostName()
817 mDNSlocal void SetTargetToHostName(mDNS *const m, AuthRecord *const rr) in SetTargetToHostName() argument
819 domainname *const target = GetRRDomainNameTarget(&rr->resrec); in SetTargetToHostName()
822 …tTargetToHostName: Don't know how to set the target of rrtype %s", DNSTypeName(rr->resrec.rrtype)); in SetTargetToHostName()
824 …if (!(rr->ForceMCast || rr->ARType == AuthRecordLocalOnly || rr->ARType == AuthRecordP2P || IsLoca… in SetTargetToHostName()
826 const domainname *const n = SetUnicastTargetToHostName(m, rr); in SetTargetToHostName()
828 else { target->c[0] = 0; SetNewRData(&rr->resrec, mDNSNULL, 0); return; } in SetTargetToHostName()
832 debugf("SetTargetToHostName: Target of %##s is already %##s", rr->resrec.name->c, target->c); in SetTargetToHostName()
837 SetNewRData(&rr->resrec, mDNSNULL, 0); // Update rdlength, rdestimate, rdatahash in SetTargetToHostName()
842 rr->ProbeCount = DefaultProbeCountForRecordType(rr->resrec.RecordType); in SetTargetToHostName()
847 if (rr->RequireGoodbye && rr->resrec.RecordType == kDNSRecordTypeShared) in SetTargetToHostName()
849 rr->resrec.name->c, DNSTypeName(rr->resrec.rrtype)); in SetTargetToHostName()
851 rr->AnnounceCount = InitialAnnounceCount; in SetTargetToHostName()
852 rr->RequireGoodbye = mDNSfalse; in SetTargetToHostName()
853 InitializeLastAPTime(m, rr); in SetTargetToHostName()
857 mDNSlocal void AcknowledgeRecord(mDNS *const m, AuthRecord *const rr) in AcknowledgeRecord() argument
859 if (rr->RecordCallback) in AcknowledgeRecord()
863 rr->Acknowledged = mDNStrue; in AcknowledgeRecord()
865 rr->RecordCallback(m, rr, mStatus_NoError); in AcknowledgeRecord()
870 mDNSexport void ActivateUnicastRegistration(mDNS *const m, AuthRecord *const rr) in ActivateUnicastRegistration() argument
876 if (rr->resrec.rrtype != kDNSType_SRV) in ActivateUnicastRegistration()
879 if (rr->resrec.rrtype == kDNSType_PTR) in ActivateUnicastRegistration()
880 srvRR = rr->Additional1; in ActivateUnicastRegistration()
881 else if (rr->resrec.rrtype == kDNSType_TXT) in ActivateUnicastRegistration()
882 srvRR = rr->DependentOn; in ActivateUnicastRegistration()
892 ARDisplayString(m, srvRR), srvRR->state, rr->resrec.name->c, DNSTypeName(rr->resrec.rrtype)); in ActivateUnicastRegistration()
893 rr->state = srvRR->state; in ActivateUnicastRegistration()
898 if (rr->state == regState_NoTarget) in ActivateUnicastRegistration()
900 …tivateUnicastRegistration record %s in regState_NoTarget, not activating", ARDisplayString(m, rr)); in ActivateUnicastRegistration()
908 if (rr->resrec.RecordType == kDNSRecordTypeDeregistering) in ActivateUnicastRegistration()
910 … Resource record %s, current state %d, moving to DeregPending", ARDisplayString(m, rr), rr->state); in ActivateUnicastRegistration()
911 rr->state = regState_DeregPending; in ActivateUnicastRegistration()
915 …tion: Resource record %s, current state %d, moving to Pending", ARDisplayString(m, rr), rr->state); in ActivateUnicastRegistration()
916 rr->state = regState_Pending; in ActivateUnicastRegistration()
918 rr->ProbeCount = 0; in ActivateUnicastRegistration()
919 rr->AnnounceCount = 0; in ActivateUnicastRegistration()
920 rr->ThisAPInterval = INIT_RECORD_REG_INTERVAL; in ActivateUnicastRegistration()
921 rr->LastAPTime = m->timenow - rr->ThisAPInterval; in ActivateUnicastRegistration()
922 rr->expire = 0; // Forget about all the leases, start fresh in ActivateUnicastRegistration()
923 rr->uselease = mDNStrue; in ActivateUnicastRegistration()
924 rr->updateid = zeroID; in ActivateUnicastRegistration()
925 rr->SRVChanged = mDNSfalse; in ActivateUnicastRegistration()
926 rr->updateError = mStatus_NoError; in ActivateUnicastRegistration()
929 if (rr->NATinfo.clientContext) in ActivateUnicastRegistration()
931 mDNS_StopNATOperation_internal(m, &rr->NATinfo); in ActivateUnicastRegistration()
932 rr->NATinfo.clientContext = mDNSNULL; in ActivateUnicastRegistration()
934 if (rr->nta) { CancelGetZoneData(m, rr->nta); rr->nta = mDNSNULL; } in ActivateUnicastRegistration()
935 if (rr->tcp) { DisposeTCPConn(rr->tcp); rr->tcp = mDNSNULL; } in ActivateUnicastRegistration()
936 if (m->NextuDNSEvent - (rr->LastAPTime + rr->ThisAPInterval) >= 0) in ActivateUnicastRegistration()
937 m->NextuDNSEvent = (rr->LastAPTime + rr->ThisAPInterval); in ActivateUnicastRegistration()
951 mDNSlocal AuthRecord *CheckAuthIdenticalRecord(AuthHash *r, AuthRecord *rr) in CheckAuthIdenticalRecord() argument
956 const mDNSu32 slot = AuthHashSlot(rr->resrec.name); in CheckAuthIdenticalRecord()
958 a = AuthGroupForRecord(r, slot, &rr->resrec); in CheckAuthIdenticalRecord()
963 if (!RecordIsLocalDuplicate(*rp, rr)) in CheckAuthIdenticalRecord()
978 mDNSlocal mDNSBool CheckAuthRecordConflict(AuthHash *r, AuthRecord *rr) in CheckAuthRecordConflict() argument
983 const mDNSu32 slot = AuthHashSlot(rr->resrec.name); in CheckAuthRecordConflict()
985 a = AuthGroupForRecord(r, slot, &rr->resrec); in CheckAuthRecordConflict()
990 const AuthRecord *s1 = rr->RRSet ? rr->RRSet : rr; in CheckAuthRecordConflict()
992 …if (s1 != s2 && SameResourceRecordSignature((*rp), rr) && !IdenticalSameNameRecord(&(*rp)->resrec,… in CheckAuthRecordConflict()
1001 mDNSlocal AuthRecord *CheckAuthSameRecord(AuthHash *r, AuthRecord *rr) in CheckAuthSameRecord() argument
1006 const mDNSu32 slot = AuthHashSlot(rr->resrec.name); in CheckAuthSameRecord()
1008 a = AuthGroupForRecord(r, slot, &rr->resrec); in CheckAuthSameRecord()
1013 if (*rp != rr) in CheckAuthSameRecord()
1024 mDNSexport mStatus mDNS_Register_internal(mDNS *const m, AuthRecord *const rr) in mDNS_Register_internal() argument
1026 domainname *target = GetRRDomainNameTarget(&rr->resrec); in mDNS_Register_internal()
1031 if ((mDNSs32)rr->resrec.rroriginalttl <= 0) in mDNS_Register_internal()
1032 …ister_internal: TTL %X should be 1 - 0x7FFFFFFF %s", rr->resrec.rroriginalttl, ARDisplayString(m, … in mDNS_Register_internal()
1034 if (!rr->resrec.RecordType) in mDNS_Register_internal()
1035 …{ LogMsg("mDNS_Register_internal: RecordType must be non-zero %s", ARDisplayString(m, rr)); return… in mDNS_Register_internal()
1038 …{ LogMsg("mDNS_Register_internal: Shutting down, can't register %s", ARDisplayString(m, rr)); retu… in mDNS_Register_internal()
1040 if (m->DivertMulticastAdvertisements && !AuthRecord_uDNS(rr)) in mDNS_Register_internal()
1042 mDNSInterfaceID previousID = rr->resrec.InterfaceID; in mDNS_Register_internal()
1043 if (rr->resrec.InterfaceID == mDNSInterface_Any || rr->resrec.InterfaceID == mDNSInterface_P2P) in mDNS_Register_internal()
1045 rr->resrec.InterfaceID = mDNSInterface_LocalOnly; in mDNS_Register_internal()
1046 rr->ARType = AuthRecordLocalOnly; in mDNS_Register_internal()
1048 if (rr->resrec.InterfaceID != mDNSInterface_LocalOnly) in mDNS_Register_internal()
1050 NetworkInterfaceInfo *intf = FirstInterfaceForID(m, rr->resrec.InterfaceID); in mDNS_Register_internal()
1051 …if (intf && !intf->Advertise){ rr->resrec.InterfaceID = mDNSInterface_LocalOnly; rr->ARType = Auth… in mDNS_Register_internal()
1053 if (rr->resrec.InterfaceID != previousID) in mDNS_Register_internal()
1054 LogInfo("mDNS_Register_internal: Diverting record to local-only %s", ARDisplayString(m, rr)); in mDNS_Register_internal()
1057 if (RRLocalOnly(rr)) in mDNS_Register_internal()
1059 if (CheckAuthSameRecord(&m->rrauth, rr)) in mDNS_Register_internal()
1062 rr, rr->resrec.name->c, DNSTypeName(rr->resrec.rrtype)); in mDNS_Register_internal()
1068 while (*p && *p != rr) p=&(*p)->next; in mDNS_Register_internal()
1072 rr, rr->resrec.name->c, DNSTypeName(rr->resrec.rrtype)); in mDNS_Register_internal()
1077 while (*d && *d != rr) d=&(*d)->next; in mDNS_Register_internal()
1081 rr, rr->resrec.name->c, DNSTypeName(rr->resrec.rrtype)); in mDNS_Register_internal()
1085 if (rr->DependentOn) in mDNS_Register_internal()
1087 if (rr->resrec.RecordType == kDNSRecordTypeUnique) in mDNS_Register_internal()
1088 rr->resrec.RecordType = kDNSRecordTypeVerified; in mDNS_Register_internal()
1092 rr->resrec.name->c, DNSTypeName(rr->resrec.rrtype)); in mDNS_Register_internal()
1095 …if (!(rr->DependentOn->resrec.RecordType & (kDNSRecordTypeUnique | kDNSRecordTypeVerified | kDNSRe… in mDNS_Register_internal()
1098 rr->resrec.name->c, DNSTypeName(rr->resrec.rrtype), rr->DependentOn->resrec.RecordType); in mDNS_Register_internal()
1106 if (rr->resrec.InterfaceID && rr->ARType != AuthRecordLocalOnly && rr->ARType != AuthRecordP2P) in mDNS_Register_internal()
1108 NetworkInterfaceInfo *intf = FirstInterfaceForID(m, rr->resrec.InterfaceID); in mDNS_Register_internal()
1111 … debugf("mDNS_Register_internal: Bogus InterfaceID %p in resource record", rr->resrec.InterfaceID); in mDNS_Register_internal()
1116 rr->next = mDNSNULL; in mDNS_Register_internal()
1132 if (rr->AutoTarget && target) target->c[0] = 0; in mDNS_Register_internal()
1135 rr->Acknowledged = mDNSfalse; in mDNS_Register_internal()
1136 rr->ProbeCount = DefaultProbeCountForRecordType(rr->resrec.RecordType); in mDNS_Register_internal()
1137 rr->AnnounceCount = InitialAnnounceCount; in mDNS_Register_internal()
1138 rr->RequireGoodbye = mDNSfalse; in mDNS_Register_internal()
1139 rr->AnsweredLocalQ = mDNSfalse; in mDNS_Register_internal()
1140 rr->IncludeInProbe = mDNSfalse; in mDNS_Register_internal()
1141 rr->ImmedUnicast = mDNSfalse; in mDNS_Register_internal()
1142 rr->SendNSECNow = mDNSNULL; in mDNS_Register_internal()
1143 rr->ImmedAnswer = mDNSNULL; in mDNS_Register_internal()
1144 rr->ImmedAdditional = mDNSNULL; in mDNS_Register_internal()
1145 rr->SendRNow = mDNSNULL; in mDNS_Register_internal()
1146 rr->v4Requester = zerov4Addr; in mDNS_Register_internal()
1147 rr->v6Requester = zerov6Addr; in mDNS_Register_internal()
1148 rr->NextResponse = mDNSNULL; in mDNS_Register_internal()
1149 rr->NR_AnswerTo = mDNSNULL; in mDNS_Register_internal()
1150 rr->NR_AdditionalTo = mDNSNULL; in mDNS_Register_internal()
1151 if (!rr->AutoTarget) InitializeLastAPTime(m, rr); in mDNS_Register_internal()
1155 rr->NewRData = mDNSNULL; in mDNS_Register_internal()
1156 rr->newrdlength = 0; in mDNS_Register_internal()
1157 rr->UpdateCallback = mDNSNULL; in mDNS_Register_internal()
1158 rr->UpdateCredits = kMaxUpdateCredits; in mDNS_Register_internal()
1159 rr->NextUpdateCredit = 0; in mDNS_Register_internal()
1160 rr->UpdateBlocked = 0; in mDNS_Register_internal()
1163 if (rr->WakeUp.HMAC.l[0] && !rr->AddressProxy.type) rr->AnnounceCount = 2; in mDNS_Register_internal()
1166 rr->state = regState_Zero; in mDNS_Register_internal()
1167 rr->uselease = 0; in mDNS_Register_internal()
1168 rr->expire = 0; in mDNS_Register_internal()
1169 rr->Private = 0; in mDNS_Register_internal()
1170 rr->updateid = zeroID; in mDNS_Register_internal()
1171 rr->zone = rr->resrec.name; in mDNS_Register_internal()
1172 rr->nta = mDNSNULL; in mDNS_Register_internal()
1173 rr->tcp = mDNSNULL; in mDNS_Register_internal()
1174 rr->OrigRData = 0; in mDNS_Register_internal()
1175 rr->OrigRDLen = 0; in mDNS_Register_internal()
1176 rr->InFlightRData = 0; in mDNS_Register_internal()
1177 rr->InFlightRDLen = 0; in mDNS_Register_internal()
1178 rr->QueuedRData = 0; in mDNS_Register_internal()
1179 rr->QueuedRDLen = 0; in mDNS_Register_internal()
1196 …if (rr->resrec.rrtype == kDNSType_TXT && rr->resrec.rdlength == 0) { rr->resrec.rdlength = 1; rr->… in mDNS_Register_internal()
1198 if (rr->AutoTarget) in mDNS_Register_internal()
1200 …SetTargetToHostName(m, rr); // Also sets rdlength and rdestimate for us, and calls InitializeLastA… in mDNS_Register_internal()
1204 if (rr->state == regState_NoTarget) in mDNS_Register_internal()
1207 domainname *tar = GetRRDomainNameTarget(&rr->resrec); in mDNS_Register_internal()
1209 LogInfo("mDNS_Register_internal: record %s in NoTarget state", ARDisplayString(m, rr)); in mDNS_Register_internal()
1215 rr->resrec.rdlength = GetRDLength(&rr->resrec, mDNSfalse); in mDNS_Register_internal()
1216 rr->resrec.rdestimate = GetRDLength(&rr->resrec, mDNStrue); in mDNS_Register_internal()
1219 if (!ValidateDomainName(rr->resrec.name)) in mDNS_Register_internal()
1220 …{ LogMsg("Attempt to register record with invalid name: %s", ARDisplayString(m, rr)); return(mStat… in mDNS_Register_internal()
1223 if (!ValidateRData(rr->resrec.rrtype, rr->resrec.rdlength, rr->resrec.rdata)) in mDNS_Register_internal()
1224 …{ LogMsg("Attempt to register record with invalid rdata: %s", ARDisplayString(m, rr)); return(mSta… in mDNS_Register_internal()
1226 rr->resrec.namehash = DomainNameHashValue(rr->resrec.name); in mDNS_Register_internal()
1227 rr->resrec.rdatahash = target ? DomainNameHashValue(target) : RDataHashValue(&rr->resrec); in mDNS_Register_internal()
1229 if (RRLocalOnly(rr)) in mDNS_Register_internal()
1236 if (rr->resrec.RecordType & kDNSRecordTypeUniqueMask) in mDNS_Register_internal()
1238 if (CheckAuthRecordConflict(&m->rrauth, rr)) in mDNS_Register_internal()
1240 …r_internal: Name conflict %s (%p), InterfaceID %p", ARDisplayString(m, rr), rr, rr->resrec.Interfa… in mDNS_Register_internal()
1248 if (AuthRecord_uDNS(rr)) in mDNS_Register_internal()
1250 if (!m->NewLocalRecords) m->NewLocalRecords = rr; in mDNS_Register_internal()
1255 *p = rr; in mDNS_Register_internal()
1256 if (rr->resrec.RecordType == kDNSRecordTypeUnique) rr->resrec.RecordType = kDNSRecordTypeVerified; in mDNS_Register_internal()
1257 rr->ProbeCount = 0; in mDNS_Register_internal()
1258 rr->AnnounceCount = 0; in mDNS_Register_internal()
1259 if (rr->state != regState_NoTarget) ActivateUnicastRegistration(m, rr); in mDNS_Register_internal()
1265 if (RRLocalOnly(rr)) in mDNS_Register_internal()
1267 rr->ProbeCount = 0; in mDNS_Register_internal()
1268 rr->AnnounceCount = 0; in mDNS_Register_internal()
1269 r = CheckAuthIdenticalRecord(&m->rrauth, rr); in mDNS_Register_internal()
1274 if (RecordIsLocalDuplicate(r, rr)) in mDNS_Register_internal()
1283 debugf("mDNS_Register_internal:Adding to duplicate list %s", ARDisplayString(m,rr)); in mDNS_Register_internal()
1284 *d = rr; in mDNS_Register_internal()
1289 …if (rr->resrec.RecordType == kDNSRecordTypeUnique && r->resrec.RecordType == kDNSRecordTypeVerifie… in mDNS_Register_internal()
1290 rr->ProbeCount = 0; in mDNS_Register_internal()
1294 debugf("mDNS_Register_internal: Adding to active record list %s", ARDisplayString(m,rr)); in mDNS_Register_internal()
1295 if (RRLocalOnly(rr)) in mDNS_Register_internal()
1298 ag = InsertAuthRecord(m, &m->rrauth, rr); in mDNS_Register_internal()
1301 ag->NewLocalOnlyRecords = rr; in mDNS_Register_internal()
1304 … if (rr->resrec.RecordType == kDNSRecordTypeUnique) rr->resrec.RecordType = kDNSRecordTypeVerified; in mDNS_Register_internal()
1305 AcknowledgeRecord(m, rr); in mDNS_Register_internal()
1310 if (!m->NewLocalRecords) m->NewLocalRecords = rr; in mDNS_Register_internal()
1311 *p = rr; in mDNS_Register_internal()
1315 …if (!AuthRecord_uDNS(rr)) // This check is superfluous, given that for unicast records we (current… in mDNS_Register_internal()
1318 …if (rr->resrec.RecordType != kDNSRecordTypeUnique && rr->resrec.RecordType != kDNSRecordTypeDeregi… in mDNS_Register_internal()
1319 AcknowledgeRecord(m, rr); in mDNS_Register_internal()
1328 mDNSlocal void RecordProbeFailure(mDNS *const m, const AuthRecord *const rr) in RecordProbeFailure() argument
1343 m->NumFailedProbes, rr->resrec.name->c, DNSTypeName(rr->resrec.rrtype)); in RecordProbeFailure()
1347 mDNSlocal void CompleteRDataUpdate(mDNS *const m, AuthRecord *const rr) in CompleteRDataUpdate() argument
1349 RData *OldRData = rr->resrec.rdata; in CompleteRDataUpdate()
1350 mDNSu16 OldRDLen = rr->resrec.rdlength; in CompleteRDataUpdate()
1351 SetNewRData(&rr->resrec, rr->NewRData, rr->newrdlength); // Update our rdata in CompleteRDataUpdate()
1352 rr->NewRData = mDNSNULL; // Clear the NewRData pointer ... in CompleteRDataUpdate()
1353 if (rr->UpdateCallback) in CompleteRDataUpdate()
1354 rr->UpdateCallback(m, rr, OldRData, OldRDLen); // ... and let the client know in CompleteRDataUpdate()
1360 mDNSexport mStatus mDNS_Deregister_internal(mDNS *const m, AuthRecord *const rr, mDNS_Dereg_type dr… in mDNS_Deregister_internal() argument
1363 mDNSu8 RecordType = rr->resrec.RecordType; in mDNS_Deregister_internal()
1367 if (RRLocalOnly(rr)) in mDNS_Deregister_internal()
1372 const mDNSu32 slot = AuthHashSlot(rr->resrec.name); in mDNS_Deregister_internal()
1374 a = AuthGroupForRecord(&m->rrauth, slot, &rr->resrec); in mDNS_Deregister_internal()
1377 while (*rp && *rp != rr) rp=&(*rp)->next; in mDNS_Deregister_internal()
1382 while (*p && *p != rr) p=&(*p)->next; in mDNS_Deregister_internal()
1392 …for (r2 = m->DuplicateRecords; r2; r2=r2->next) if (RecordIsLocalDuplicate(r2, rr)) r2->ProbeCount… in mDNS_Deregister_internal()
1399 while (*d && !RecordIsLocalDuplicate(*d, rr)) d=&(*d)->next; in mDNS_Deregister_internal()
1404 dup, rr, rr->resrec.name->c, DNSTypeName(rr->resrec.rrtype)); in mDNS_Deregister_internal()
1406 if (RRLocalOnly(rr)) in mDNS_Deregister_internal()
1413 dup->next = rr->next; // And then... in mDNS_Deregister_internal()
1414 rr->next = dup; // ... splice it in right after the record we're about to delete in mDNS_Deregister_internal()
1416 dup->resrec.RecordType = rr->resrec.RecordType; in mDNS_Deregister_internal()
1417 dup->ProbeCount = rr->ProbeCount; in mDNS_Deregister_internal()
1418 dup->AnnounceCount = rr->AnnounceCount; in mDNS_Deregister_internal()
1419 dup->RequireGoodbye = rr->RequireGoodbye; in mDNS_Deregister_internal()
1420 dup->AnsweredLocalQ = rr->AnsweredLocalQ; in mDNS_Deregister_internal()
1421 dup->ImmedAnswer = rr->ImmedAnswer; in mDNS_Deregister_internal()
1422 dup->ImmedUnicast = rr->ImmedUnicast; in mDNS_Deregister_internal()
1423 dup->ImmedAdditional = rr->ImmedAdditional; in mDNS_Deregister_internal()
1424 dup->v4Requester = rr->v4Requester; in mDNS_Deregister_internal()
1425 dup->v6Requester = rr->v6Requester; in mDNS_Deregister_internal()
1426 dup->ThisAPInterval = rr->ThisAPInterval; in mDNS_Deregister_internal()
1427 dup->LastAPTime = rr->LastAPTime; in mDNS_Deregister_internal()
1428 dup->LastMCTime = rr->LastMCTime; in mDNS_Deregister_internal()
1429 dup->LastMCInterface = rr->LastMCInterface; in mDNS_Deregister_internal()
1430 dup->Private = rr->Private; in mDNS_Deregister_internal()
1431 dup->state = rr->state; in mDNS_Deregister_internal()
1432 rr->RequireGoodbye = mDNSfalse; in mDNS_Deregister_internal()
1433 rr->AnsweredLocalQ = mDNSfalse; in mDNS_Deregister_internal()
1441 while (*p && *p != rr) p=&(*p)->next; in mDNS_Deregister_internal()
1443 if (*p) { rr->RequireGoodbye = mDNSfalse; dupList = mDNStrue; } in mDNS_Deregister_internal()
1445 rr, rr->resrec.name->c, DNSTypeName(rr->resrec.rrtype)); in mDNS_Deregister_internal()
1452 LogMsg("mDNS_Deregister_internal: Record %p not found in list %s", rr, ARDisplayString(m,rr)); in mDNS_Deregister_internal()
1471 if (AuthRecord_uDNS(rr)) in mDNS_Deregister_internal()
1473 if (rr->RequireGoodbye) in mDNS_Deregister_internal()
1475 if (rr->tcp) { DisposeTCPConn(rr->tcp); rr->tcp = mDNSNULL; } in mDNS_Deregister_internal()
1476 rr->resrec.RecordType = kDNSRecordTypeDeregistering; in mDNS_Deregister_internal()
1478 uDNS_DeregisterRecord(m, rr); in mDNS_Deregister_internal()
1488 rr->updateid = zeroID; in mDNS_Deregister_internal()
1497 if (rr->NATinfo.clientContext) in mDNS_Deregister_internal()
1499 mDNS_StopNATOperation_internal(m, &rr->NATinfo); in mDNS_Deregister_internal()
1500 rr->NATinfo.clientContext = mDNSNULL; in mDNS_Deregister_internal()
1502 if (rr->nta) { CancelGetZoneData(m, rr->nta); rr->nta = mDNSNULL; } in mDNS_Deregister_internal()
1503 if (rr->tcp) { DisposeTCPConn(rr->tcp); rr->tcp = mDNSNULL; } in mDNS_Deregister_internal()
1508 …("mDNS_Deregister_internal: %s already marked kDNSRecordTypeUnregistered", ARDisplayString(m, rr)); in mDNS_Deregister_internal()
1511 …"mDNS_Deregister_internal: %s already marked kDNSRecordTypeDeregistering", ARDisplayString(m, rr)); in mDNS_Deregister_internal()
1521 if (rr->WakeUp.HMAC.l[0] || in mDNS_Deregister_internal()
1522 (RecordType == kDNSRecordTypeShared && (rr->RequireGoodbye || rr->AnsweredLocalQ))) in mDNS_Deregister_internal()
1524 verbosedebugf("mDNS_Deregister_internal: Starting deregistration for %s", ARDisplayString(m, rr)); in mDNS_Deregister_internal()
1525 rr->resrec.RecordType = kDNSRecordTypeDeregistering; in mDNS_Deregister_internal()
1526 rr->resrec.rroriginalttl = 0; in mDNS_Deregister_internal()
1527 …rr->AnnounceCount = rr->WakeUp.HMAC.l[0] ? WakeupCount : (drt == mDNS_Dereg_rapid) ? 1 : Go… in mDNS_Deregister_internal()
1528 rr->ThisAPInterval = mDNSPlatformOneSecond * 2; in mDNS_Deregister_internal()
1529 rr->LastAPTime = m->timenow - rr->ThisAPInterval; in mDNS_Deregister_internal()
1536 if (!dupList && RRLocalOnly(rr)) in mDNS_Deregister_internal()
1538 AuthGroup *ag = RemoveAuthRecord(m, &m->rrauth, rr); in mDNS_Deregister_internal()
1539 if (ag->NewLocalOnlyRecords == rr) ag->NewLocalOnlyRecords = rr->next; in mDNS_Deregister_internal()
1543 *p = rr->next; // Cut this record from the list in mDNS_Deregister_internal()
1544 if (m->NewLocalRecords == rr) m->NewLocalRecords = rr->next; in mDNS_Deregister_internal()
1547 if (m->CurrentRecord == rr) m->CurrentRecord = rr->next; in mDNS_Deregister_internal()
1548 rr->next = mDNSNULL; in mDNS_Deregister_internal()
1554 verbosedebugf("mDNS_Deregister_internal: Deleting record for %s", ARDisplayString(m, rr)); in mDNS_Deregister_internal()
1555 rr->resrec.RecordType = kDNSRecordTypeUnregistered; in mDNS_Deregister_internal()
1559 rr->resrec.name->c, DNSTypeName(rr->resrec.rrtype)); in mDNS_Deregister_internal()
1562 …if (rr->NewRData) CompleteRDataUpdate(m, rr); // Update our rdata, clear the NewRData pointer, and… in mDNS_Deregister_internal()
1572 LogInfo("mDNS_Deregister_internal: mStatus_MemFree for %s", ARDisplayString(m, rr)); in mDNS_Deregister_internal()
1573 if (rr->RecordCallback) in mDNS_Deregister_internal()
1574 rr->RecordCallback(m, rr, mStatus_MemFree); // MUST NOT touch rr after this in mDNS_Deregister_internal()
1579 RecordProbeFailure(m, rr); in mDNS_Deregister_internal()
1581 if (rr->RecordCallback) in mDNS_Deregister_internal()
1582 rr->RecordCallback(m, rr, mStatus_NameConflict); // MUST NOT touch rr after this in mDNS_Deregister_internal()
1605 mDNSlocal void AddRecordToResponseList(AuthRecord ***nrpp, AuthRecord *rr, AuthRecord *add) in AddRecordToResponseList() argument
1607 if (rr->NextResponse == mDNSNULL && *nrpp != &rr->NextResponse) in AddRecordToResponseList()
1609 **nrpp = rr; in AddRecordToResponseList()
1614 rr->NR_AdditionalTo = add; in AddRecordToResponseList()
1615 *nrpp = &rr->NextResponse; in AddRecordToResponseList()
1617 …debugf("AddRecordToResponseList: %##s (%s) already in list", rr->resrec.name->c, DNSTypeName(rr->r… in AddRecordToResponseList()
1622 AuthRecord *rr, *rr2; in AddAdditionalsToResponseList() local
1623 for (rr=ResponseRecords; rr; rr=rr->NextResponse) // For each record we plan to put in AddAdditionalsToResponseList()
1627 if (rr->Additional1 && ResourceRecordIsValidInterfaceAnswer(rr->Additional1, InterfaceID)) in AddAdditionalsToResponseList()
1628 AddRecordToResponseList(nrpp, rr->Additional1, rr); in AddAdditionalsToResponseList()
1630 if (rr->Additional2 && ResourceRecordIsValidInterfaceAnswer(rr->Additional2, InterfaceID)) in AddAdditionalsToResponseList()
1631 AddRecordToResponseList(nrpp, rr->Additional2, rr); in AddAdditionalsToResponseList()
1634 if (rr->resrec.rrtype == kDNSType_SRV) in AddAdditionalsToResponseList()
1639 … rr->resrec.rdatahash == rr2->resrec.namehash && // ... whose name is the name of the SRV target in AddAdditionalsToResponseList()
1640 SameDomainName(&rr->resrec.rdata->u.srv.target, rr2->resrec.name)) in AddAdditionalsToResponseList()
1641 AddRecordToResponseList(nrpp, rr2, rr); in AddAdditionalsToResponseList()
1643 else if (RRTypeIsAddressType(rr->resrec.rrtype)) // For A or AAAA, put counterpart as additional in AddAdditionalsToResponseList()
1648 rr->resrec.namehash == rr2->resrec.namehash && // ... and have the same name in AddAdditionalsToResponseList()
1649 SameDomainName(rr->resrec.name, rr2->resrec.name)) in AddAdditionalsToResponseList()
1650 AddRecordToResponseList(nrpp, rr2, rr); in AddAdditionalsToResponseList()
1652 …else if (rr->resrec.rrtype == kDNSType_PTR) // For service PTR, see if we want to add DeviceInfo… in AddAdditionalsToResponseList()
1655 SameDomainLabel(rr->resrec.rdata->u.name.c, m->DeviceInfo.resrec.name->c)) in AddAdditionalsToResponseList()
1656 AddRecordToResponseList(nrpp, &m->DeviceInfo, rr); in AddAdditionalsToResponseList()
1663 AuthRecord *rr; in SendDelayedUnicastResponse() local
1669 for (rr = m->ResourceRecords; rr; rr=rr->next) in SendDelayedUnicastResponse()
1672 if (rr->ImmedAnswer == mDNSInterfaceMark || in SendDelayedUnicastResponse()
1673 mDNSSameIPv4Address(rr->v4Requester, onesIPv4Addr) || in SendDelayedUnicastResponse()
1674 mDNSSameIPv6Address(rr->v6Requester, onesIPv6Addr) ) in SendDelayedUnicastResponse()
1675 rr->ImmedUnicast = mDNSfalse; in SendDelayedUnicastResponse()
1677 if (rr->ImmedUnicast && rr->ImmedAnswer == InterfaceID) in SendDelayedUnicastResponse()
1679 if ((dest->type == mDNSAddrType_IPv4 && mDNSSameIPv4Address(rr->v4Requester, dest->ip.v4)) || in SendDelayedUnicastResponse()
1680 (dest->type == mDNSAddrType_IPv6 && mDNSSameIPv6Address(rr->v6Requester, dest->ip.v6))) in SendDelayedUnicastResponse()
1682 rr->ImmedAnswer = mDNSNULL; // Clear the state fields in SendDelayedUnicastResponse()
1683 rr->ImmedUnicast = mDNSfalse; in SendDelayedUnicastResponse()
1684 rr->v4Requester = zerov4Addr; in SendDelayedUnicastResponse()
1685 rr->v6Requester = zerov6Addr; in SendDelayedUnicastResponse()
1688 if (intf && !mDNSPlatformValidRecordForInterface(rr, intf)) in SendDelayedUnicastResponse()
1690 …LogInfo("SendDelayedUnicastResponse: Not sending %s, on %s", ARDisplayString(m, rr), InterfaceName… in SendDelayedUnicastResponse()
1694 if (rr->NextResponse == mDNSNULL && nrp != &rr->NextResponse) // rr->NR_AnswerTo in SendDelayedUnicastResponse()
1695 { rr->NR_AnswerTo = (mDNSu8*)~0; *nrp = rr; nrp = &rr->NextResponse; } in SendDelayedUnicastResponse()
1711 rr = ResponseRecords; in SendDelayedUnicastResponse()
1712 if (rr->resrec.RecordType & kDNSRecordTypeUniqueMask) in SendDelayedUnicastResponse()
1713 …rr->resrec.rrclass |= kDNSClass_UniqueRRSet; // Temporarily set the cache flush bit so PutResourc… in SendDelayedUnicastResponse()
1714 newptr = PutResourceRecord(&m->omsg, responseptr, &m->omsg.h.numAnswers, &rr->resrec); in SendDelayedUnicastResponse()
1715 …rr->resrec.rrclass &= ~kDNSClass_UniqueRRSet; // Make sure to clear cache flush bit back to norm… in SendDelayedUnicastResponse()
1718 ResponseRecords = rr->NextResponse; in SendDelayedUnicastResponse()
1719 rr->NextResponse = mDNSNULL; in SendDelayedUnicastResponse()
1720 rr->NR_AnswerTo = mDNSNULL; in SendDelayedUnicastResponse()
1721 rr->NR_AdditionalTo = mDNSNULL; in SendDelayedUnicastResponse()
1722 rr->RequireGoodbye = mDNStrue; in SendDelayedUnicastResponse()
1728 rr = ResponseRecords; in SendDelayedUnicastResponse()
1729 if (rr->resrec.RecordType & kDNSRecordTypeUniqueMask) in SendDelayedUnicastResponse()
1730 …rr->resrec.rrclass |= kDNSClass_UniqueRRSet; // Temporarily set the cache flush bit so PutResourc… in SendDelayedUnicastResponse()
1731 newptr = PutResourceRecord(&m->omsg, responseptr, &m->omsg.h.numAdditionals, &rr->resrec); in SendDelayedUnicastResponse()
1732 …rr->resrec.rrclass &= ~kDNSClass_UniqueRRSet; // Make sure to clear cache flush bit back to norm… in SendDelayedUnicastResponse()
1735 if (newptr && m->omsg.h.numAnswers) rr->RequireGoodbye = mDNStrue; in SendDelayedUnicastResponse()
1736 else if (rr->resrec.RecordType & kDNSRecordTypeUniqueMask) rr->ImmedAnswer = mDNSInterfaceMark; in SendDelayedUnicastResponse()
1737 ResponseRecords = rr->NextResponse; in SendDelayedUnicastResponse()
1738 rr->NextResponse = mDNSNULL; in SendDelayedUnicastResponse()
1739 rr->NR_AnswerTo = mDNSNULL; in SendDelayedUnicastResponse()
1740 rr->NR_AdditionalTo = mDNSNULL; in SendDelayedUnicastResponse()
1750 mDNSexport void CompleteDeregistration(mDNS *const m, AuthRecord *rr) in CompleteDeregistration() argument
1752 LogInfo("CompleteDeregistration: called for Resource record %s", ARDisplayString(m, rr)); in CompleteDeregistration()
1755 rr->resrec.RecordType = kDNSRecordTypeShared; in CompleteDeregistration()
1756 rr->RequireGoodbye = mDNSfalse; in CompleteDeregistration()
1757 rr->WakeUp.HMAC = zeroEthAddr; in CompleteDeregistration()
1758 …if (rr->AnsweredLocalQ) { AnswerAllLocalQuestionsWithLocalAuthRecord(m, rr, mDNSfalse); rr->Answer… in CompleteDeregistration()
1759 mDNS_Deregister_internal(m, rr, mDNS_Dereg_normal); // Don't touch rr after this in CompleteDeregistration()
1775 AuthRecord *rr = m->CurrentRecord; in DiscardDeregistrations() local
1776 if (!AuthRecord_uDNS(rr) && rr->resrec.RecordType == kDNSRecordTypeDeregistering) in DiscardDeregistrations()
1777 CompleteDeregistration(m, rr); // Don't touch rr after this in DiscardDeregistrations()
1779 m->CurrentRecord = rr->next; in DiscardDeregistrations()
1852 mDNSlocal void SendARP(mDNS *const m, const mDNSu8 op, const AuthRecord *const rr, in SendARP() argument
1857 NetworkInterfaceInfo *intf = FirstInterfaceForID(m, rr->resrec.InterfaceID); in SendARP()
1858 …"SendARP: No interface with InterfaceID %p found %s", rr->resrec.InterfaceID, ARDisplayString(m,rr… in SendARP()
1889 mDNSPlatformSendRawPacket(m->omsg.data, ptr, rr->resrec.InterfaceID); in SendARP()
1917 …Slocal void SendNDP(mDNS *const m, const mDNSu8 op, const mDNSu8 flags, const AuthRecord *const rr, in SendNDP() argument
1928 NetworkInterfaceInfo *intf = FirstInterfaceForID(m, rr->resrec.InterfaceID); in SendNDP()
1929 …"SendNDP: No interface with InterfaceID %p found %s", rr->resrec.InterfaceID, ARDisplayString(m,rr… in SendNDP()
2002 mDNSPlatformSendRawPacket(m->omsg.data, ptr, rr->resrec.InterfaceID); in SendNDP()
2019 mDNSlocal void GrantUpdateCredit(AuthRecord *rr) in GrantUpdateCredit() argument
2021 if (++rr->UpdateCredits >= kMaxUpdateCredits) rr->NextUpdateCredit = 0; in GrantUpdateCredit()
2022 else rr->NextUpdateCredit = NonZeroTime(rr->NextUpdateCredit + kUpdateCreditRefreshInterval); in GrantUpdateCredit()
2044 AuthRecord *rr, *r2; in SendResponses() local
2052 for (rr = m->ResourceRecords; rr; rr=rr->next) in SendResponses()
2053 if (rr->ImmedUnicast) in SendResponses()
2057 v4.ip.v4 = rr->v4Requester; in SendResponses()
2058 v6.ip.v6 = rr->v6Requester; in SendResponses()
2059 if (!mDNSIPv4AddressIsZero(rr->v4Requester)) SendDelayedUnicastResponse(m, &v4, rr->ImmedAnswer); in SendResponses()
2060 if (!mDNSIPv6AddressIsZero(rr->v6Requester)) SendDelayedUnicastResponse(m, &v6, rr->ImmedAnswer); in SendResponses()
2061 if (rr->ImmedUnicast) in SendResponses()
2063 LogMsg("SendResponses: ERROR: rr->ImmedUnicast still set: %s", ARDisplayString(m, rr)); in SendResponses()
2064 rr->ImmedUnicast = mDNSfalse; in SendResponses()
2073 for (rr = m->ResourceRecords; rr; rr=rr->next) in SendResponses()
2075 while (rr->NextUpdateCredit && m->timenow - rr->NextUpdateCredit >= 0) GrantUpdateCredit(rr); in SendResponses()
2076 if (TimeToAnnounceThisRecord(rr, m->timenow)) in SendResponses()
2078 if (rr->resrec.RecordType == kDNSRecordTypeDeregistering) in SendResponses()
2080 if (!rr->WakeUp.HMAC.l[0]) in SendResponses()
2082 …if (rr->AnnounceCount) rr->ImmedAnswer = mDNSInterfaceMark; // Send goodbye packet on all interfa… in SendResponses()
2086 …ndResponses: Sending wakeup %2d for %.6a %s", rr->AnnounceCount-3, &rr->WakeUp.IMAC, ARDisplayStri… in SendResponses()
2087 SendWakeup(m, rr->resrec.InterfaceID, &rr->WakeUp.IMAC, &rr->WakeUp.password); in SendResponses()
2088 for (r2 = rr; r2; r2=r2->next) in SendResponses()
2089 …AnnounceCount && r2->resrec.InterfaceID == rr->resrec.InterfaceID && mDNSSameEthAddress(&r2->WakeU… in SendResponses()
2105 else if (ResourceRecordIsValidAnswer(rr)) in SendResponses()
2107 if (rr->AddressProxy.type) in SendResponses()
2109 rr->AnnounceCount--; in SendResponses()
2110 rr->ThisAPInterval *= 2; in SendResponses()
2111 rr->LastAPTime = m->timenow; in SendResponses()
2112 if (rr->AddressProxy.type == mDNSAddrType_IPv4) in SendResponses()
2115 rr->AnnounceCount, &rr->WakeUp.HMAC, &rr->WakeUp.IMAC, ARDisplayString(m,rr)); in SendResponses()
2116 … SendARP(m, 1, rr, &rr->AddressProxy.ip.v4, &zeroEthAddr, &rr->AddressProxy.ip.v4, &onesEthAddr); in SendResponses()
2118 else if (rr->AddressProxy.type == mDNSAddrType_IPv6) in SendResponses()
2121 rr->AnnounceCount, &rr->WakeUp.HMAC, &rr->WakeUp.IMAC, ARDisplayString(m,rr)); in SendResponses()
2122 …SendNDP(m, NDP_Adv, NDP_Override, rr, &rr->AddressProxy.ip.v6, mDNSNULL, &AllHosts_v6, &AllHosts_v… in SendResponses()
2127 rr->ImmedAnswer = mDNSInterfaceMark; // Send on all interfaces in SendResponses()
2128 if (maxExistingAnnounceInterval < rr->ThisAPInterval) in SendResponses()
2129 maxExistingAnnounceInterval = rr->ThisAPInterval; in SendResponses()
2130 if (rr->UpdateBlocked) rr->UpdateBlocked = 0; in SendResponses()
2138 for (rr = m->ResourceRecords; rr; rr=rr->next) in SendResponses()
2139 if ((rr->resrec.InterfaceID && rr->ImmedAnswer) || in SendResponses()
2140 (rr->ThisAPInterval <= maxExistingAnnounceInterval && in SendResponses()
2141 TimeToAnnounceThisRecord(rr, m->timenow + rr->ThisAPInterval/2) && in SendResponses()
2142 …!rr->AddressProxy.type && // Don't include ARP Annoucements when considering which records to… in SendResponses()
2143 ResourceRecordIsValidAnswer(rr))) in SendResponses()
2144 rr->ImmedAnswer = mDNSInterfaceMark; // Send on all interfaces in SendResponses()
2150 for (rr = m->ResourceRecords; rr; rr=rr->next) in SendResponses()
2152 if (rr->ImmedAnswer && rr->resrec.rrtype == kDNSType_SRV) in SendResponses()
2156 rr->LastMCTime - r2->LastMCTime >= 0 && // ... which we have not sent recently ... in SendResponses()
2157 rr->resrec.rdatahash == r2->resrec.namehash && // ... whose name is the name of the SRV target in SendResponses()
2158 SameDomainName(&rr->resrec.rdata->u.srv.target, r2->resrec.name) && in SendResponses()
2159 (rr->ImmedAnswer == mDNSInterfaceMark || rr->ImmedAnswer == r2->resrec.InterfaceID)) in SendResponses()
2164 …if (rr->ImmedAnswer && rr->resrec.RecordType == kDNSRecordTypeShared && rr->resrec.rrtype == kDNST… in SendResponses()
2165 …if (ResourceRecordIsValidAnswer(&m->DeviceInfo) && SameDomainLabel(rr->resrec.rdata->u.name.c, m->… in SendResponses()
2167 if (!m->DeviceInfo.ImmedAnswer) m->DeviceInfo.ImmedAnswer = rr->ImmedAnswer; in SendResponses()
2178 for (rr = m->ResourceRecords; rr; rr=rr->next) in SendResponses()
2179 if (rr->resrec.RecordType & kDNSRecordTypeUniqueMask) in SendResponses()
2181 …if (rr->ImmedAnswer) // If we're sending this as answer, see that its whole RRSet is similarly m… in SendResponses()
2186 r2->ImmedAnswer != rr->ImmedAnswer && SameResourceRecordSignature(r2, rr)) in SendResponses()
2187 r2->ImmedAnswer = !r2->ImmedAnswer ? rr->ImmedAnswer : mDNSInterfaceMark; in SendResponses()
2189 …else if (rr->ImmedAdditional) // If we're sending this as additional, see that its whole RRSet is … in SendResponses()
2193 if (r2->ImmedAdditional != rr->ImmedAdditional && SameResourceRecordSignature(r2, rr)) in SendResponses()
2194 r2->ImmedAdditional = rr->ImmedAdditional; in SendResponses()
2199 for (rr = m->ResourceRecords; rr; rr=rr->next) in SendResponses()
2201 if (rr->ImmedAnswer == mDNSInterfaceMark) // Sending this record on all appropriate interfaces in SendResponses()
2203 …rr->SendRNow = !intf ? mDNSNULL : (rr->resrec.InterfaceID) ? rr->resrec.InterfaceID : intf->Interf… in SendResponses()
2204 rr->ImmedAdditional = mDNSNULL; // No need to send as additional if sending as answer in SendResponses()
2205 rr->LastMCTime = m->timenow; in SendResponses()
2206 rr->LastMCInterface = rr->ImmedAnswer; in SendResponses()
2208 if (TimeToAnnounceThisRecord(rr, m->timenow + rr->ThisAPInterval/2)) in SendResponses()
2210 rr->AnnounceCount--; in SendResponses()
2211 if (rr->resrec.RecordType != kDNSRecordTypeDeregistering) in SendResponses()
2212 rr->ThisAPInterval *= 2; in SendResponses()
2213 rr->LastAPTime = m->timenow; in SendResponses()
2214 …debugf("Announcing %##s (%s) %d", rr->resrec.name->c, DNSTypeName(rr->resrec.rrtype), rr->Announce… in SendResponses()
2217 else if (rr->ImmedAnswer) // Else, just respond to a single query on single interface: in SendResponses()
2219 rr->SendRNow = rr->ImmedAnswer; // Just respond on that interface in SendResponses()
2220 rr->ImmedAdditional = mDNSNULL; // No need to send as additional too in SendResponses()
2221 rr->LastMCTime = m->timenow; in SendResponses()
2222 rr->LastMCInterface = rr->ImmedAnswer; in SendResponses()
2224 SetNextAnnounceProbeTime(m, rr); in SendResponses()
2246 for (rr = m->ResourceRecords; rr; rr=rr->next) in SendResponses()
2251 if ((rr->SendRNow == intf->InterfaceID) && in SendResponses()
2252 … ((rr->resrec.InterfaceID == mDNSInterface_Any) && !mDNSPlatformValidRecordForInterface(rr, intf))) in SendResponses()
2254 …fo("SendResponses: Not sending %s, on %s", ARDisplayString(m, rr), InterfaceNameForID(m, rr->SendR… in SendResponses()
2255 rr->SendRNow = GetNextActiveInterfaceID(intf); in SendResponses()
2257 else if (rr->SendRNow == intf->InterfaceID) in SendResponses()
2259 RData *OldRData = rr->resrec.rdata; in SendResponses()
2260 mDNSu16 oldrdlength = rr->resrec.rdlength; in SendResponses()
2262 (rr->resrec.RecordType != kDNSRecordTypeDeregistering && in SendResponses()
2265 if (rr->NewRData && active) in SendResponses()
2268 …if (ResourceRecordIsValidAnswer(rr) && rr->resrec.RecordType == kDNSRecordTypeShared && rr->Requir… in SendResponses()
2270 newptr = PutRR_OS_TTL(responseptr, &m->omsg.h.numAnswers, &rr->resrec, 0); in SendResponses()
2271 if (newptr) { responseptr = newptr; numDereg++; rr->RequireGoodbye = mDNSfalse; } in SendResponses()
2274 SetNewRData(&rr->resrec, rr->NewRData, rr->newrdlength); in SendResponses()
2277 if (rr->resrec.RecordType & kDNSRecordTypeUniqueMask) in SendResponses()
2278 …rr->resrec.rrclass |= kDNSClass_UniqueRRSet; // Temporarily set the cache flush bit so PutResourc… in SendResponses()
2279 …newptr = PutRR_OS_TTL(responseptr, &m->omsg.h.numAnswers, &rr->resrec, active ? rr->resrec.rrorigi… in SendResponses()
2280 …rr->resrec.rrclass &= ~kDNSClass_UniqueRRSet; // Make sure to clear cache flush bit back to norm… in SendResponses()
2284 rr->RequireGoodbye = active; in SendResponses()
2285 if (rr->resrec.RecordType == kDNSRecordTypeDeregistering) numDereg++; in SendResponses()
2286 else if (rr->LastAPTime == m->timenow) numAnnounce++; else numAnswer++; in SendResponses()
2289 if (rr->NewRData && active) in SendResponses()
2290 SetNewRData(&rr->resrec, OldRData, oldrdlength); in SendResponses()
2294 …if (!pktcount && active && (rr->resrec.RecordType & kDNSRecordTypeActiveUniqueMask) && !rr->SendNS… in SendResponses()
2295 rr->SendNSECNow = mDNSInterfaceMark; in SendResponses()
2300 if (rr->ImmedAnswer == mDNSInterfaceMark && rr->resrec.InterfaceID == mDNSInterface_Any) in SendResponses()
2301 rr->SendRNow = GetNextActiveInterfaceID(intf); in SendResponses()
2303 rr->SendRNow = mDNSNULL; in SendResponses()
2310 for (rr = m->ResourceRecords; rr; rr=rr->next) in SendResponses()
2311 if (rr->ImmedAdditional == intf->InterfaceID) in SendResponses()
2312 if (ResourceRecordIsValidAnswer(rr)) in SendResponses()
2320 if (!SendAdditional && (rr->resrec.RecordType & kDNSRecordTypeUniqueMask)) in SendResponses()
2326 SameResourceRecordSignature(a, rr)) { SendAdditional = mDNStrue; break; } in SendResponses()
2329 rr->ImmedAdditional = mDNSNULL; // then cancel its ImmedAdditional field in SendResponses()
2334 if (!pktcount && (rr->resrec.RecordType & kDNSRecordTypeActiveUniqueMask) && !rr->SendNSECNow) in SendResponses()
2335 rr->SendNSECNow = mDNSInterfaceMark; in SendResponses()
2337 if (rr->resrec.RecordType & kDNSRecordTypeUniqueMask) in SendResponses()
2338 …rr->resrec.rrclass |= kDNSClass_UniqueRRSet; // Temporarily set the cache flush bit so PutResource… in SendResponses()
2339 newptr = PutRR_OS(newptr, &m->omsg.h.numAdditionals, &rr->resrec); in SendResponses()
2340 …rr->resrec.rrclass &= ~kDNSClass_UniqueRRSet; // Make sure to clear cache flush bit back to norma… in SendResponses()
2344 rr->ImmedAdditional = mDNSNULL; in SendResponses()
2345 rr->RequireGoodbye = mDNStrue; in SendResponses()
2350 rr->LastMCTime = m->timenow; in SendResponses()
2351 rr->LastMCInterface = intf->InterfaceID; in SendResponses()
2360 for (rr = m->ResourceRecords; rr; rr=rr->next) in SendResponses()
2361 if (rr->SendNSECNow == mDNSInterfaceMark || rr->SendNSECNow == intf->InterfaceID) in SendResponses()
2364 …mDNS_SetupResourceRecord(&nsec, mDNSNULL, mDNSInterface_Any, kDNSType_NSEC, rr->resrec.rroriginalt… in SendResponses()
2366 AssignDomainName(&nsec.namestorage, rr->resrec.name); in SendResponses()
2369 if (ResourceRecordIsValidAnswer(r2) && SameResourceRecordNameClassInterface(r2, rr)) in SendResponses()
2383 if (newptr || rr->SendNSECNow == mDNSInterfaceMark) in SendResponses()
2385 rr->SendNSECNow = mDNSNULL; in SendResponses()
2387 for (r2 = rr->next; r2; r2=r2->next) in SendResponses()
2388 if (SameResourceRecordNameClassInterface(r2, rr)) in SendResponses()
2449 rr = m->CurrentRecord; in SendResponses()
2450 m->CurrentRecord = rr->next; in SendResponses()
2452 if (rr->SendRNow) in SendResponses()
2454 if (rr->ARType != AuthRecordLocalOnly && rr->ARType != AuthRecordP2P) in SendResponses()
2455 …interface %p to send: %p %02X %s", rr->SendRNow, rr->resrec.InterfaceID, rr->resrec.RecordType, AR… in SendResponses()
2456 rr->SendRNow = mDNSNULL; in SendResponses()
2459 if (rr->ImmedAnswer || rr->resrec.RecordType == kDNSRecordTypeDeregistering) in SendResponses()
2461 …if (rr->NewRData) CompleteRDataUpdate(m, rr); // Update our rdata, clear the NewRData pointer, and… in SendResponses()
2463 if (rr->resrec.RecordType == kDNSRecordTypeDeregistering && rr->AnnounceCount == 0) in SendResponses()
2466 if (!AuthRecord_uDNS(rr)) CompleteDeregistration(m, rr); // Don't touch rr after this in SendResponses()
2470 rr->ImmedAnswer = mDNSNULL; in SendResponses()
2471 rr->ImmedUnicast = mDNSfalse; in SendResponses()
2472 rr->v4Requester = zerov4Addr; in SendResponses()
2473 rr->v6Requester = zerov6Addr; in SendResponses()
2494 ((RR)->UnansweredQueries < MaxUnansweredQueries) ? (TicksTTL(rr)/50) : \
2513 mDNSlocal void SetNextCacheCheckTimeForRecord(mDNS *const m, CacheRecord *const rr) in SetNextCacheCheckTimeForRecord() argument
2515 rr->NextRequiredQuery = RRExpireTime(rr); in SetNextCacheCheckTimeForRecord()
2519 if (rr->CRActiveQuestion && rr->UnansweredQueries < MaxUnansweredQueries) in SetNextCacheCheckTimeForRecord()
2521 rr->NextRequiredQuery -= TicksTTL(rr)/20 * (MaxUnansweredQueries - rr->UnansweredQueries); in SetNextCacheCheckTimeForRecord()
2522 rr->NextRequiredQuery += mDNSRandom((mDNSu32)TicksTTL(rr)/50); in SetNextCacheCheckTimeForRecord()
2524 …(rr->NextRequiredQuery - m->timenow) / mDNSPlatformOneSecond, CacheCheckGracePeriod(rr), CRDisplay… in SetNextCacheCheckTimeForRecord()
2527 ScheduleNextCacheCheckTime(m, HashSlot(rr->resrec.name), NextCacheCheckEvent(rr)); in SetNextCacheCheckTimeForRecord()
2535 mDNSlocal mStatus mDNS_Reconfirm_internal(mDNS *const m, CacheRecord *const rr, mDNSu32 interval) in mDNS_Reconfirm_internal() argument
2543 if (RRExpireTime(rr) - m->timenow > (mDNSs32)((interval * 4) / 3)) in mDNS_Reconfirm_internal()
2550 rr->TimeRcvd = m->timenow - (mDNSs32)interval * 3; in mDNS_Reconfirm_internal()
2551 rr->resrec.rroriginalttl = (interval * 4 + mDNSPlatformOneSecond - 1) / mDNSPlatformOneSecond; in mDNS_Reconfirm_internal()
2552 SetNextCacheCheckTimeForRecord(m, rr); in mDNS_Reconfirm_internal()
2555 RRExpireTime(rr) - m->timenow, CRDisplayString(m, rr), rr->CRActiveQuestion); in mDNS_Reconfirm_internal()
2581 CacheRecord *rr; in BuildQuestion() local
2584 …for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next) // If we have a resource record in our … in BuildQuestion()
2585 if (rr->resrec.InterfaceID == q->SendQNow && // received on this interface in BuildQuestion()
2586 …!(rr->resrec.RecordType & kDNSRecordTypeUniqueMask) && // which is a shared (i.e. not unique) rec… in BuildQuestion()
2587 …rr->NextInKAList == mDNSNULL && ka != &rr->NextInKAList && // which is not already in the known an… in BuildQuestion()
2588 …rr->resrec.rdlength <= SmallRecordLimit && // which is small enough to sensibly fit in the pac… in BuildQuestion()
2589 SameNameRecordAnswersQuestion(&rr->resrec, q) && // which answers our question in BuildQuestion()
2590 …rr->TimeRcvd + TicksTTL(rr)/2 - m->timenow > // and its half-way-to-expiry time is at least 1 s… in BuildQuestion()
2599 *ka = rr; // Link this record into our known answer chain in BuildQuestion()
2600 ka = &rr->NextInKAList; in BuildQuestion()
2602 forecast += 12 + rr->resrec.rdestimate; in BuildQuestion()
2622 …for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next) // For every resource record in our cac… in BuildQuestion()
2623 if (rr->resrec.InterfaceID == q->SendQNow && // received on this interface in BuildQuestion()
2624 …rr->NextInKAList == mDNSNULL && ka != &rr->NextInKAList && // which is not in the known answer list in BuildQuestion()
2625 SameNameRecordAnswersQuestion(&rr->resrec, q)) // which answers our question in BuildQuestion()
2627 rr->UnansweredQueries++; // indicate that we're expecting a response in BuildQuestion()
2628 rr->LastUnansweredTime = m->timenow; in BuildQuestion()
2629 SetNextCacheCheckTimeForRecord(m, rr); in BuildQuestion()
2820 const CacheRecord *rr; in AccelerateThisQuery() local
2821 …for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next) // If we have a resource record in our … in AccelerateThisQuery()
2822 …if (rr->resrec.rdlength <= SmallRecordLimit && // which is small enough to sensibly fit in the… in AccelerateThisQuery()
2823 SameNameRecordAnswersQuestion(&rr->resrec, q) && // which answers our question in AccelerateThisQuery()
2824 rr->TimeRcvd + TicksTTL(rr)/2 - m->timenow >= 0 && // and it is less than half-way to expiry in AccelerateThisQuery()
2825 …rr->NextRequiredQuery - (m->timenow + q->ThisQInterval) > 0)// and we'll ask at least once again b… in AccelerateThisQuery()
2828 forecast += 12 + rr->resrec.rdestimate; in AccelerateThisQuery()
3303 mDNSexport void AnswerCurrentQuestionWithResourceRecord(mDNS *const m, CacheRecord *const rr, const… in AnswerCurrentQuestionWithResourceRecord() argument
3306 mDNSBool followcname = FollowCNAME(q, &rr->resrec, AddRecord); in AnswerCurrentQuestionWithResourceRecord()
3309 q->CurrentAnswers, AddRecord ? "Add" : "Rmv", rr->resrec.rroriginalttl, CRDisplayString(m, rr)); in AnswerCurrentQuestionWithResourceRecord()
3318 "LOAddressAnswers %d", q, q->qname.c, DNSTypeName(q->qtype), ARDisplayString(m, rr), in AnswerCurrentQuestionWithResourceRecord()
3328 …if (!q->TimeoutQuestion || rr->resrec.RecordType != kDNSRecordTypePacketNegative || (m->timenow - … in AnswerCurrentQuestionWithResourceRecord()
3336 rr->LastUsed = m->timenow; in AnswerCurrentQuestionWithResourceRecord()
3337 if (AddRecord == QC_add && !q->DuplicateOf && rr->CRActiveQuestion != q) in AnswerCurrentQuestionWithResourceRecord()
3339 …if (!rr->CRActiveQuestion) m->rrcache_active++; // If not previously active, increment rrcache_act… in AnswerCurrentQuestionWithResourceRecord()
3341 rr->CRActiveQuestion, q, CRDisplayString(m,rr), q->CurrentAnswers); in AnswerCurrentQuestionWithResourceRecord()
3342 rr->CRActiveQuestion = q; // We know q is non-null in AnswerCurrentQuestionWithResourceRecord()
3343 SetNextCacheCheckTimeForRecord(m, rr); in AnswerCurrentQuestionWithResourceRecord()
3354 …(AddRecord == QC_add && (q->ExpectUnique || (rr->resrec.RecordType & kDNSRecordTypePacketUniqueMas… in AnswerCurrentQuestionWithResourceRecord()
3365 if (rr->DelayDelivery) return; // We'll come back later when CacheRecordDeferredAdd() calls us in AnswerCurrentQuestionWithResourceRecord()
3368 …if (rr->resrec.RecordType == kDNSRecordTypePacketNegative || (q->qtype != kDNSType_NSEC && RRAsser… in AnswerCurrentQuestionWithResourceRecord()
3375 if (q->qtype != kDNSType_NSEC && RRAssertsNonexistence(&rr->resrec, q->qtype)) in AnswerCurrentQuestionWithResourceRecord()
3378 …MakeNegativeCacheRecord(m, &neg, &q->qname, q->qnamehash, q->qtype, q->qclass, 1, rr->resrec.Inter… in AnswerCurrentQuestionWithResourceRecord()
3382 q->QuestionCallback(m, q, &rr->resrec, AddRecord); in AnswerCurrentQuestionWithResourceRecord()
3389 AnswerQuestionByFollowingCNAME(m, q, &rr->resrec); in AnswerCurrentQuestionWithResourceRecord()
3413 CacheRecord *rr; in AnswerQuestionsForDNSServerChanges() local
3437 for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next) in AnswerQuestionsForDNSServerChanges()
3439 if (SameNameRecordAnswersQuestion(&rr->resrec, q)) in AnswerQuestionsForDNSServerChanges()
3442 q, q->qname.c, CRDisplayString(m, rr)); in AnswerQuestionsForDNSServerChanges()
3449 if (!q->qDNSServer && !q->DuplicateOf && rr->resrec.RecordType == kDNSRecordTypePacketNegative) in AnswerQuestionsForDNSServerChanges()
3458 if (rr->resrec.rdlength > SmallRecordLimit) q->LargeAnswers++; in AnswerQuestionsForDNSServerChanges()
3459 if (rr->resrec.RecordType & kDNSRecordTypePacketUniqueMask) q->UniqueAnswers++; in AnswerQuestionsForDNSServerChanges()
3460 AnswerCurrentQuestionWithResourceRecord(m, rr, QC_add); in AnswerQuestionsForDNSServerChanges()
3468 mDNSlocal void CacheRecordDeferredAdd(mDNS *const m, CacheRecord *rr) in CacheRecordDeferredAdd() argument
3470 rr->DelayDelivery = 0; in CacheRecordDeferredAdd()
3478 if (ResourceRecordAnswersQuestion(&rr->resrec, q)) in CacheRecordDeferredAdd()
3479 AnswerCurrentQuestionWithResourceRecord(m, rr, QC_add); in CacheRecordDeferredAdd()
3492 const CacheRecord *rr; in CheckForSoonToExpireRecords() local
3493 for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next) in CheckForSoonToExpireRecords()
3494 if (threshhold - RRExpireTime(rr) >= 0) // If we have records about to expire within a second in CheckForSoonToExpireRecords()
3495 if (delay - RRExpireTime(rr) < 0) // then delay until after they've been deleted in CheckForSoonToExpireRecords()
3496 delay = RRExpireTime(rr); in CheckForSoonToExpireRecords()
3509 mDNSlocal void CacheRecordAdd(mDNS *const m, CacheRecord *rr) in CacheRecordAdd() argument
3517 if (ResourceRecordAnswersQuestion(&rr->resrec, q)) in CacheRecordAdd()
3538 verbosedebugf("CacheRecordAdd %p %##s (%s) %lu %#a:%d question %p", rr, rr->resrec.name->c, in CacheRecordAdd()
3539 DNSTypeName(rr->resrec.rrtype), rr->resrec.rroriginalttl, rr->resrec.rDNSServer ? in CacheRecordAdd()
3540 &rr->resrec.rDNSServer->addr : mDNSNULL, mDNSVal16(rr->resrec.rDNSServer ? in CacheRecordAdd()
3541 rr->resrec.rDNSServer->port : zeroIPPort), q); in CacheRecordAdd()
3544 if (rr->resrec.rdlength > SmallRecordLimit) q->LargeAnswers++; in CacheRecordAdd()
3545 if (rr->resrec.RecordType & kDNSRecordTypePacketUniqueMask) q->UniqueAnswers++; in CacheRecordAdd()
3552 rr->resrec.rroriginalttl = 0; in CacheRecordAdd()
3553 rr->UnansweredQueries = MaxUnansweredQueries; in CacheRecordAdd()
3558 if (!rr->DelayDelivery) in CacheRecordAdd()
3566 if (ResourceRecordAnswersQuestion(&rr->resrec, q)) in CacheRecordAdd()
3567 AnswerCurrentQuestionWithResourceRecord(m, rr, QC_add); in CacheRecordAdd()
3574 SetNextCacheCheckTimeForRecord(m, rr); in CacheRecordAdd()
3587 mDNSlocal void NoCacheAnswer(mDNS *const m, CacheRecord *rr) in NoCacheAnswer() argument
3598 if (ResourceRecordAnswersQuestion(&rr->resrec, q)) in NoCacheAnswer()
3599 …AnswerCurrentQuestionWithResourceRecord(m, rr, QC_addnocache); // QC_addnocache means "don't expec… in NoCacheAnswer()
3615 mDNSlocal void CacheRecordRmv(mDNS *const m, CacheRecord *rr) in CacheRecordRmv() argument
3631 if (!QuerySuppressed(q) && ResourceRecordAnswersQuestion(&rr->resrec, q)) in CacheRecordRmv()
3633 verbosedebugf("CacheRecordRmv %p %s", rr, CRDisplayString(m, rr)); in CacheRecordRmv()
3655 if (rr->resrec.rdlength > SmallRecordLimit) q->LargeAnswers--; in CacheRecordRmv()
3656 if (rr->resrec.RecordType & kDNSRecordTypePacketUniqueMask) q->UniqueAnswers--; in CacheRecordRmv()
3658 if (rr->resrec.rdata->MaxRDLength) // Never generate "remove" events for negative results in CacheRecordRmv()
3666 AnswerCurrentQuestionWithResourceRecord(m, rr, QC_rmv); in CacheRecordRmv()
3720 CacheRecord *const rr = *rp; in CheckCacheExpiration() local
3721 mDNSs32 event = RRExpireTime(rr); in CheckCacheExpiration()
3724 *rp = rr->next; // Cut it from the list in CheckCacheExpiration()
3726 …m->timenow - rr->TimeRcvd, rr->resrec.rroriginalttl, rr->CRActiveQuestion, CRDisplayString(m, rr)); in CheckCacheExpiration()
3727 …if (rr->CRActiveQuestion) // If this record has one or more active questions, tell them it's going… in CheckCacheExpiration()
3729 DNSQuestion *q = rr->CRActiveQuestion; in CheckCacheExpiration()
3743 CacheRecordRmv(m, rr); in CheckCacheExpiration()
3746 ReleaseCacheRecord(m, rr); in CheckCacheExpiration()
3751 if (rr->DelayDelivery && rr->DelayDelivery - m->timenow > 0) in CheckCacheExpiration()
3752 event = rr->DelayDelivery; in CheckCacheExpiration()
3755 if (rr->DelayDelivery) CacheRecordDeferredAdd(m, rr); in CheckCacheExpiration()
3756 if (rr->CRActiveQuestion && rr->UnansweredQueries < MaxUnansweredQueries) in CheckCacheExpiration()
3758 if (m->timenow - rr->NextRequiredQuery < 0) // If not yet time for next query in CheckCacheExpiration()
3759 event = NextCacheCheckEvent(rr); // then just record when we want the next query in CheckCacheExpiration()
3772 … (event - m->timenow) / mDNSPlatformOneSecond, CacheCheckGracePeriod(rr), CRDisplayString(m, rr)); in CheckCacheExpiration()
3775 rp = &rr->next; in CheckCacheExpiration()
3848 AuthRecord *rr = m->CurrentRecord; in AnswerNewQuestion() local
3849 m->CurrentRecord = rr->next; in AnswerNewQuestion()
3858 …if (rr->ARType == AuthRecordLocalOnly || (rr->ARType == AuthRecordP2P && q->InterfaceID == mDNSInt… in AnswerNewQuestion()
3859 if (LocalOnlyRecordAnswersQuestion(rr, q)) in AnswerNewQuestion()
3861 AnswerLocalQuestionWithLocalAuthRecord(m, rr, mDNStrue); in AnswerNewQuestion()
3903 CacheRecord *rr; in AnswerNewQuestion() local
3904 for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next) in AnswerNewQuestion()
3905 if (SameNameRecordAnswersQuestion(&rr->resrec, q)) in AnswerNewQuestion()
3908 mDNSu32 SecsSinceRcvd = ((mDNSu32)(m->timenow - rr->TimeRcvd)) / mDNSPlatformOneSecond; in AnswerNewQuestion()
3909 if (rr->resrec.rroriginalttl <= SecsSinceRcvd) in AnswerNewQuestion()
3912 rr->resrec.rroriginalttl, SecsSinceRcvd, CRDisplayString(m, rr), m->timenow, rr->TimeRcvd); in AnswerNewQuestion()
3918 if ((rr->resrec.RecordType & kDNSRecordTypePacketUniqueMask) || (q->ExpectUnique)) in AnswerNewQuestion()
3921 if (rr->resrec.rdlength > SmallRecordLimit) q->LargeAnswers++; in AnswerNewQuestion()
3922 if (rr->resrec.RecordType & kDNSRecordTypePacketUniqueMask) q->UniqueAnswers++; in AnswerNewQuestion()
3924 AnswerCurrentQuestionWithResourceRecord(m, rr, QC_add); in AnswerNewQuestion()
3927 else if (RRTypeIsAddressType(rr->resrec.rrtype) && RRTypeIsAddressType(q->qtype)) in AnswerNewQuestion()
4003 AuthRecord *rr = m->CurrentRecord; in AnswerNewLocalOnlyQuestion() local
4004 m->CurrentRecord = rr->next; in AnswerNewLocalOnlyQuestion()
4005 if (LocalOnlyRecordAnswersQuestion(rr, q)) in AnswerNewLocalOnlyQuestion()
4007 AnswerLocalQuestionWithLocalAuthRecord(m, rr, mDNStrue); in AnswerNewLocalOnlyQuestion()
4019 AuthRecord *rr = m->CurrentRecord; in AnswerNewLocalOnlyQuestion() local
4020 m->CurrentRecord = rr->next; in AnswerNewLocalOnlyQuestion()
4021 if (ResourceRecordAnswersQuestion(&rr->resrec, q)) in AnswerNewLocalOnlyQuestion()
4023 AnswerLocalQuestionWithLocalAuthRecord(m, rr, mDNStrue); in AnswerNewLocalOnlyQuestion()
4083 CacheRecord *rr = *rp; in GetCacheEntity() local
4085 ReleaseCacheRecord(m, rr); in GetCacheEntity()
4134 …Slocal CacheGroup *GetCacheGroup(mDNS *const m, const mDNSu32 slot, const ResourceRecord *const rr) in GetCacheGroup() argument
4136 mDNSu16 namelen = DomainNameLength(rr->name); in GetCacheGroup()
4138 …if (!cg) { LogMsg("GetCacheGroup: Failed to allocate memory for %##s", rr->name->c); return(mDNSNU… in GetCacheGroup()
4140 cg->namehash = rr->namehash; in GetCacheGroup()
4149 LogMsg("GetCacheGroup: Failed to allocate name storage for %##s", rr->name->c); in GetCacheGroup()
4153 AssignDomainName(cg->name, rr->name); in GetCacheGroup()
4155 …if (CacheGroupForRecord(m, slot, rr)) LogMsg("GetCacheGroup: Already have CacheGroup for %##s", rr… in GetCacheGroup()
4157 …if (CacheGroupForRecord(m, slot, rr) != cg) LogMsg("GetCacheGroup: Not finding CacheGroup for %##s… in GetCacheGroup()
4162 mDNSexport void mDNS_PurgeCacheResourceRecord(mDNS *const m, CacheRecord *rr) in mDNS_PurgeCacheResourceRecord() argument
4171 rr->TimeRcvd = m->timenow - mDNSPlatformOneSecond * 60; in mDNS_PurgeCacheResourceRecord()
4172 rr->UnansweredQueries = MaxUnansweredQueries; in mDNS_PurgeCacheResourceRecord()
4173 rr->resrec.rroriginalttl = 0; in mDNS_PurgeCacheResourceRecord()
4174 SetNextCacheCheckTimeForRecord(m, rr); in mDNS_PurgeCacheResourceRecord()
4206 AuthRecord *rr = m->CurrentRecord; in CheckProxyRecords() local
4207 if (rr->resrec.RecordType != kDNSRecordTypeDeregistering && rr->WakeUp.HMAC.l[0]) in CheckProxyRecords()
4211 …if (m->SPSSocket && m->timenow - rr->TimeExpire < 0) // If proxy record not expired yet, update m-… in CheckProxyRecords()
4213 if (m->NextScheduledSPS - rr->TimeExpire > 0) in CheckProxyRecords()
4214 m->NextScheduledSPS = rr->TimeExpire; in CheckProxyRecords()
4219 m->ProxyRecords, &rr->WakeUp.HMAC, &rr->WakeUp.IMAC, rr->WakeUp.seq, ARDisplayString(m, rr)); in CheckProxyRecords()
4220 SetSPSProxyListChanged(rr->resrec.InterfaceID); in CheckProxyRecords()
4221 mDNS_Deregister_internal(m, rr, mDNS_Dereg_normal); in CheckProxyRecords()
4227 if (m->CurrentRecord == rr) // If m->CurrentRecord was not advanced for us, do it now in CheckProxyRecords()
4228 m->CurrentRecord = rr->next; in CheckProxyRecords()
4236 AuthRecord *rr = m->CurrentRecord; in CheckRmvEventsForLocalRecords() local
4237 if (rr->AnsweredLocalQ && rr->resrec.RecordType == kDNSRecordTypeDeregistering) in CheckRmvEventsForLocalRecords()
4239 …ebugf("CheckRmvEventsForLocalRecords: Generating local RMV events for %s", ARDisplayString(m, rr)); in CheckRmvEventsForLocalRecords()
4240 rr->resrec.RecordType = kDNSRecordTypeShared; in CheckRmvEventsForLocalRecords()
4241 AnswerAllLocalQuestionsWithLocalAuthRecord(m, rr, mDNSfalse); in CheckRmvEventsForLocalRecords()
4242 if (m->CurrentRecord == rr) // If rr still exists in list, restore its state now in CheckRmvEventsForLocalRecords()
4244 rr->resrec.RecordType = kDNSRecordTypeDeregistering; in CheckRmvEventsForLocalRecords()
4245 rr->AnsweredLocalQ = mDNSfalse; in CheckRmvEventsForLocalRecords()
4248 if (RRLocalOnly(rr)) CompleteDeregistration(m, rr); in CheckRmvEventsForLocalRecords()
4251 if (m->CurrentRecord == rr) // If m->CurrentRecord was not auto-advanced, do it ourselves now in CheckRmvEventsForLocalRecords()
4252 m->CurrentRecord = rr->next; in CheckRmvEventsForLocalRecords()
4397 AuthRecord *rr = m->NewLocalRecords; in mDNS_Execute() local
4399 if (LocalRecordReady(rr)) in mDNS_Execute()
4401 debugf("mDNS_Execute: Delivering Add event with LocalAuthRecord %s", ARDisplayString(m, rr)); in mDNS_Execute()
4402 AnswerAllLocalQuestionsWithLocalAuthRecord(m, rr, mDNStrue); in mDNS_Execute()
4404 else if (!rr->next) in mDNS_Execute()
4409 …DNS_Execute: Just one LocalAuthRecord %s, breaking out of the loop early", ARDisplayString(m, rr)); in mDNS_Execute()
4413 head = rr; in mDNS_Execute()
4418 debugf("mDNS_Execute: Skipping LocalAuthRecord %s", ARDisplayString(m, rr)); in mDNS_Execute()
4421 while (*p && *p != rr) p=&(*p)->next; in mDNS_Execute()
4422 if (*p) *p = rr->next; // Cut this record from the list in mDNS_Execute()
4423 …_Execute: ERROR!! Cannot find record %s in ResourceRecords list", ARDisplayString(m, rr)); break; } in mDNS_Execute()
4427 *p = rr; in mDNS_Execute()
4428 head = tail = rr; in mDNS_Execute()
4432 tail->next = rr; in mDNS_Execute()
4433 tail = rr; in mDNS_Execute()
4435 rr->next = mDNSNULL; in mDNS_Execute()
4453 AuthRecord *rr = ag->NewLocalOnlyRecords; in mDNS_Execute() local
4456 if (LocalRecordReady(rr)) in mDNS_Execute()
4458 debugf("mDNS_Execute: Delivering Add event with LocalAuthRecord %s", ARDisplayString(m, rr)); in mDNS_Execute()
4459 AnswerAllLocalQuestionsWithLocalAuthRecord(m, rr, mDNStrue); in mDNS_Execute()
4461 else LogMsg("mDNS_Execute: LocalOnlyRecord %s not ready", ARDisplayString(m, rr)); in mDNS_Execute()
4558 AuthRecord *rr; in QuestionHasLocalAnswers() local
4566 for (rr = ag->members; rr; rr=rr->next) in QuestionHasLocalAnswers()
4568 if (LORecordAnswersAddressType(rr) && LocalOnlyRecordAnswersQuestion(rr, q)) in QuestionHasLocalAnswers()
4570 …n %p %##s (%s) has local answer %s", q, q->qname.c, DNSTypeName(q->qtype), ARDisplayString(m, rr)); in QuestionHasLocalAnswers()
4830 AuthRecord *rr; in SendSPSRegistrationForOwner() local
4843 for (rr = m->ResourceRecords; rr; rr=rr->next) in SendSPSRegistrationForOwner()
4844 if (rr->resrec.RecordType > kDNSRecordTypeDeregistering) in SendSPSRegistrationForOwner()
4845 …if (rr->resrec.InterfaceID == intf->InterfaceID || (!rr->resrec.InterfaceID && (rr->ForceMCast || … in SendSPSRegistrationForOwner()
4846 if (mDNSPlatformMemSame(owner, &rr->WakeUp, sizeof(*owner))) in SendSPSRegistrationForOwner()
4847 rr->SendRNow = mDNSInterfaceMark; // mark it now in SendSPSRegistrationForOwner()
4858 for (rr = m->ResourceRecords; rr; rr=rr->next) in SendSPSRegistrationForOwner()
4859 …if (rr->SendRNow || (!mDNSOpaque16IsZero(id) && !AuthRecord_uDNS(rr) && mDNSSameOpaque16(rr->updat… in SendSPSRegistrationForOwner()
4860 if (mDNSPlatformMemSame(owner, &rr->WakeUp, sizeof(*owner))) in SendSPSRegistrationForOwner()
4864 if (rr->resrec.RecordType & kDNSRecordTypeUniqueMask) in SendSPSRegistrationForOwner()
4865 …rr->resrec.rrclass |= kDNSClass_UniqueRRSet; // Temporarily set the 'unique' bit so PutResourceRec… in SendSPSRegistrationForOwner()
4866 …ResourceRecordTTLWithLimit(&m->omsg, p, &m->omsg.h.mDNS_numUpdates, &rr->resrec, rr->resrec.rrorig… in SendSPSRegistrationForOwner()
4867 …rr->resrec.rrclass &= ~kDNSClass_UniqueRRSet; // Make sure to clear 'unique' bit back to normal s… in SendSPSRegistrationForOwner()
4869 …%s FAILED %d/%d %s", intf->ifname, p - m->omsg.data, limit - m->omsg.data, ARDisplayString(m, rr)); in SendSPSRegistrationForOwner()
4872 LogSPS("SendSPSRegistration put %s %s", intf->ifname, ARDisplayString(m, rr)); in SendSPSRegistrationForOwner()
4873 rr->SendRNow = mDNSNULL; in SendSPSRegistrationForOwner()
4874 rr->ThisAPInterval = mDNSPlatformOneSecond; in SendSPSRegistrationForOwner()
4875 rr->LastAPTime = m->timenow; in SendSPSRegistrationForOwner()
4876 rr->updateid = m->omsg.h.id; in SendSPSRegistrationForOwner()
4877 if (m->NextScheduledResponse - (rr->LastAPTime + rr->ThisAPInterval) >= 0) in SendSPSRegistrationForOwner()
4878 m->NextScheduledResponse = (rr->LastAPTime + rr->ThisAPInterval); in SendSPSRegistrationForOwner()
4932 mDNSlocal mDNSBool RecordIsFirstOccurrenceOfOwner(mDNS *const m, const AuthRecord *const rr) in RecordIsFirstOccurrenceOfOwner() argument
4935 for (ar = m->ResourceRecords; ar && ar != rr; ar=ar->next) in RecordIsFirstOccurrenceOfOwner()
4936 if (mDNSPlatformMemSame(&rr->WakeUp, &ar->WakeUp, sizeof(rr->WakeUp))) return mDNSfalse; in RecordIsFirstOccurrenceOfOwner()
4960 AuthRecord *rr; in RetrySPSRegistrations() local
4969 for (rr = m->ResourceRecords; rr; rr=rr->next) in RetrySPSRegistrations()
4970 …if (!AuthRecord_uDNS(rr) && !mDNSOpaque16IsZero(rr->updateid) && m->timenow - (rr->LastAPTime + rr… in RetrySPSRegistrations()
4972 if (!rr->resrec.InterfaceID || rr->resrec.InterfaceID == intf->InterfaceID) in RetrySPSRegistrations()
4974 LogSPS("RetrySPSRegistrations: %s", ARDisplayString(m, rr)); in RetrySPSRegistrations()
4975 SendSPSRegistration(m, intf, rr->updateid); in RetrySPSRegistrations()
5039 AuthRecord *rr; in mDNSCoreHaveAdvertisedMulticastServices() local
5040 for (rr = m->ResourceRecords; rr; rr=rr->next) in mDNSCoreHaveAdvertisedMulticastServices()
5041 …if (rr->resrec.rrtype == kDNSType_SRV && !AuthRecord_uDNS(rr) && !mDNSSameIPPort(rr->resrec.rdata-… in mDNSCoreHaveAdvertisedMulticastServices()
5048 AuthRecord *rr; in SendSleepGoodbyes() local
5056 for (rr = m->ResourceRecords; rr; rr=rr->next) in SendSleepGoodbyes()
5057 if (rr->resrec.RecordType == kDNSRecordTypeShared && rr->RequireGoodbye) in SendSleepGoodbyes()
5058 rr->ImmedAnswer = mDNSInterfaceMark; in SendSleepGoodbyes()
5136 AuthRecord *rr; in mDNSCoreMachineSleep() local
5210 for (rr = m->ResourceRecords; rr; rr=rr->next) rr->updateid = zeroID; in mDNSCoreMachineSleep()
5227 for (rr = m->ResourceRecords; rr; rr=rr->next) in mDNSCoreMachineSleep()
5228 if (AuthRecord_uDNS(rr)) in mDNSCoreMachineSleep()
5230 ActivateUnicastRegistration(m, rr); in mDNSCoreMachineSleep()
5234 …if (rr->resrec.RecordType == kDNSRecordTypeVerified && !rr->DependentOn) rr->resrec.RecordType = k… in mDNSCoreMachineSleep()
5235 rr->ProbeCount = DefaultProbeCountForRecordType(rr->resrec.RecordType); in mDNSCoreMachineSleep()
5236 rr->AnnounceCount = InitialAnnounceCount; in mDNSCoreMachineSleep()
5237 rr->SendNSECNow = mDNSNULL; in mDNSCoreMachineSleep()
5238 InitializeLastAPTime(m, rr); in mDNSCoreMachineSleep()
5258 AuthRecord *rr; in mDNSCoreReadyForSleep() local
5300 for (rr = m->ResourceRecords; rr; rr = rr->next) in mDNSCoreReadyForSleep()
5301 if (!AuthRecord_uDNS(rr)) in mDNSCoreReadyForSleep()
5302 if (!mDNSOpaque16IsZero(rr->updateid)) in mDNSCoreReadyForSleep()
5303 …ReadyForSleep: waiting for SPS Update ID %d %s", mDNSVal16(rr->updateid), ARDisplayString(m,rr)); … in mDNSCoreReadyForSleep()
5314 for (rr = m->ResourceRecords; rr; rr = rr->next) in mDNSCoreReadyForSleep()
5315 if (AuthRecord_uDNS(rr)) in mDNSCoreReadyForSleep()
5317 if (rr->state == regState_Refresh && rr->tcp) in mDNSCoreReadyForSleep()
5318 …dyForSleep: waiting for Record Update ID %d %s", mDNSVal16(rr->updateid), ARDisplayString(m,rr)); … in mDNSCoreReadyForSleep()
5320 …if (!RecordReadyForSleep(m, rr)) { LogSPS("mDNSCoreReadyForSleep: waiting for %s", ARDisplayString… in mDNSCoreReadyForSleep()
5343 for (rr = m->ResourceRecords; rr; rr = rr->next) in mDNSCoreReadyForSleep()
5344 if (!AuthRecord_uDNS(rr)) in mDNSCoreReadyForSleep()
5345 if (!mDNSOpaque16IsZero(rr->updateid)) in mDNSCoreReadyForSleep()
5347 LogSPS("ReadyForSleep clearing updateid for %s", ARDisplayString(m, rr)); in mDNSCoreReadyForSleep()
5348 rr->updateid = zeroID; in mDNSCoreReadyForSleep()
5423 AuthRecord *rr; in GenerateUnicastResponse() local
5442 for (rr=ResponseRecords; rr; rr=rr->NextResponse) // and search our list of proposed answers in GenerateUnicastResponse()
5444 if (rr->NR_AnswerTo == ptr) // If we're going to generate a record answering this question in GenerateUnicastResponse()
5459 for (rr=ResponseRecords; rr; rr=rr->NextResponse) in GenerateUnicastResponse()
5460 if (rr->NR_AnswerTo) in GenerateUnicastResponse()
5462 mDNSu8 *p = PutResourceRecordTTL(response, responseptr, &response->h.numAnswers, &rr->resrec, in GenerateUnicastResponse()
5463 maxttl < rr->resrec.rroriginalttl ? maxttl : rr->resrec.rroriginalttl); in GenerateUnicastResponse()
5471 for (rr=ResponseRecords; rr; rr=rr->NextResponse) in GenerateUnicastResponse()
5472 if (rr->NR_AdditionalTo && !rr->NR_AnswerTo) in GenerateUnicastResponse()
5474 mDNSu8 *p = PutResourceRecordTTL(response, responseptr, &response->h.numAdditionals, &rr->resrec, in GenerateUnicastResponse()
5475 maxttl < rr->resrec.rroriginalttl ? maxttl : rr->resrec.rroriginalttl); in GenerateUnicastResponse()
5548 const AuthRecord *rr; in FindRRSet() local
5549 for (rr = m->ResourceRecords; rr; rr=rr->next) in FindRRSet()
5551 if (IdenticalResourceRecord(&rr->resrec, &pktrr->resrec)) in FindRRSet()
5553 while (rr->RRSet && rr != rr->RRSet) rr = rr->RRSet; in FindRRSet()
5554 return(rr); in FindRRSet()
5653 CacheRecord *rr; in FindIdenticalRecordInCache() local
5655 for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next) in FindIdenticalRecordInCache()
5657 …match = !pktrr->InterfaceID ? pktrr->rDNSServer == rr->resrec.rDNSServer : pktrr->InterfaceID == r… in FindIdenticalRecordInCache()
5658 if (match && IdenticalSameNameRecord(pktrr, &rr->resrec)) break; in FindIdenticalRecordInCache()
5660 return(rr); in FindIdenticalRecordInCache()
5672 AuthRecord *const rr = m->CurrentRecord; in ClearIdenticalProxyRecords() local
5673 …if (m->rec.r.resrec.InterfaceID == rr->resrec.InterfaceID && mDNSSameEthAddress(&owner->HMAC, &rr-… in ClearIdenticalProxyRecords()
5674 if (IdenticalResourceRecord(&rr->resrec, &m->rec.r.resrec)) in ClearIdenticalProxyRecords()
5677 …m->ProxyRecords, &rr->WakeUp.HMAC, &rr->WakeUp.IMAC, rr->WakeUp.seq, owner->seq, ARDisplayString(m… in ClearIdenticalProxyRecords()
5678 …rr->WakeUp.HMAC = zeroEthAddr; // Clear HMAC so that mDNS_Deregister_internal doesn't waste packet… in ClearIdenticalProxyRecords()
5679 rr->RequireGoodbye = mDNSfalse; // and we don't want to send goodbye for it in ClearIdenticalProxyRecords()
5680 mDNS_Deregister_internal(m, rr, mDNS_Dereg_normal); in ClearIdenticalProxyRecords()
5685 if (m->CurrentRecord == rr) // If m->CurrentRecord was not advanced for us, do it now in ClearIdenticalProxyRecords()
5686 m->CurrentRecord = rr->next; in ClearIdenticalProxyRecords()
5698 AuthRecord *const rr = m->CurrentRecord; in ClearProxyRecords() local
5699 …if (m->rec.r.resrec.InterfaceID == rr->resrec.InterfaceID && mDNSSameEthAddress(&owner->HMAC, &rr-… in ClearProxyRecords()
5700 if (owner->seq != rr->WakeUp.seq || m->timenow - rr->TimeRcvd > mDNSPlatformOneSecond * 60) in ClearProxyRecords()
5702 if (rr->AddressProxy.type == mDNSAddrType_IPv6) in ClearProxyRecords()
5709 &rr->WakeUp.HMAC, &rr->WakeUp.IMAC, ARDisplayString(m,rr)); in ClearProxyRecords()
5710 …SendNDP(m, NDP_Adv, NDP_Override, rr, &rr->AddressProxy.ip.v6, &rr->WakeUp.IMAC, &AllHosts_v6, &Al… in ClearProxyRecords()
5714 m->ProxyRecords, rr->AnnounceCount, rr->resrec.RecordType, in ClearProxyRecords()
5715 &rr->WakeUp.HMAC, &rr->WakeUp.IMAC, rr->WakeUp.seq, owner->seq, ARDisplayString(m, rr)); in ClearProxyRecords()
5716 …if (rr->resrec.RecordType == kDNSRecordTypeDeregistering) rr->resrec.RecordType = kDNSRecordTypeSh… in ClearProxyRecords()
5717 …rr->WakeUp.HMAC = zeroEthAddr; // Clear HMAC so that mDNS_Deregister_internal doesn't waste packet… in ClearProxyRecords()
5718 …rr->RequireGoodbye = mDNSfalse; // and we don't want to send goodbye for it, since real host is no… in ClearProxyRecords()
5719 mDNS_Deregister_internal(m, rr, mDNS_Dereg_normal); in ClearProxyRecords()
5724 if (m->CurrentRecord == rr) // If m->CurrentRecord was not advanced for us, do it now in ClearProxyRecords()
5725 m->CurrentRecord = rr->next; in ClearProxyRecords()
5745 AuthRecord *rr; in ProcessQuery() local
5807 rr = m->CurrentRecord; in ProcessQuery()
5808 m->CurrentRecord = rr->next; in ProcessQuery()
5809 …if (AnyTypeRecordAnswersQuestion(&rr->resrec, &pktq) && (QueryWasMulticast || QueryWasLocalUnicast… in ProcessQuery()
5811 if (RRTypeAnswersQuestionType(&rr->resrec, pktq.qtype)) in ProcessQuery()
5813 if (rr->resrec.RecordType == kDNSRecordTypeUnique) in ProcessQuery()
5814 ResolveSimultaneousProbe(m, query, end, &pktq, rr); in ProcessQuery()
5815 else if (ResourceRecordIsValidAnswer(rr)) in ProcessQuery()
5833 if (m->timenow - (rr->LastMCTime + mDNSPlatformOneSecond) >= 0 || in ProcessQuery()
5834 (rr->LastMCInterface != mDNSInterfaceMark && rr->LastMCInterface != InterfaceID)) in ProcessQuery()
5835 rr->NR_AnswerTo = (mDNSu8*)~0; in ProcessQuery()
5837 else if (!rr->NR_AnswerTo) rr->NR_AnswerTo = LegacyQuery ? ptr : (mDNSu8*)~1; in ProcessQuery()
5840 …else if ((rr->resrec.RecordType & kDNSRecordTypeActiveUniqueMask) && ResourceRecordIsValidAnswer(r… in ProcessQuery()
5844 if (!NSECAnswer) NSECAnswer = rr; in ProcessQuery()
5920 for (rr = m->ResourceRecords; rr; rr=rr->next) // Now build our list of potential answers in ProcessQuery()
5921 if (rr->NR_AnswerTo) // If we marked the record... in ProcessQuery()
5922 AddRecordToResponseList(&nrp, rr, mDNSNULL); // ... add it to the list in ProcessQuery()
5941 for (rr=ResponseRecords; rr; rr=rr->NextResponse) in ProcessQuery()
5942 if (MustSendRecord(rr) && ShouldSuppressKnownAnswer(&m->rec.r, rr)) in ProcessQuery()
5943 { rr->NR_AnswerTo = mDNSNULL; rr->NR_AdditionalTo = mDNSNULL; } in ProcessQuery()
5946 for (rr=m->ResourceRecords; rr; rr=rr->next) in ProcessQuery()
5949 if (rr->ImmedAnswer == InterfaceID && ShouldSuppressKnownAnswer(&m->rec.r, rr)) in ProcessQuery()
5953 if (mDNSSameIPv4Address(rr->v4Requester, srcaddr->ip.v4)) rr->v4Requester = zerov4Addr; in ProcessQuery()
5957 if (mDNSSameIPv6Address(rr->v6Requester, srcaddr->ip.v6)) rr->v6Requester = zerov6Addr; in ProcessQuery()
5959 if (mDNSIPv4AddressIsZero(rr->v4Requester) && mDNSIPv6AddressIsZero(rr->v6Requester)) in ProcessQuery()
5961 rr->ImmedAnswer = mDNSNULL; in ProcessQuery()
5962 rr->ImmedUnicast = mDNSfalse; in ProcessQuery()
5964 … LogMsg("Suppressed after%4d: %s", m->timenow - rr->ImmedAnswerMarkTime, ARDisplayString(m, rr)); in ProcessQuery()
6012 for (rr=ResponseRecords; rr; rr=rr->NextResponse) in ProcessQuery()
6013 if (rr->NR_AdditionalTo && !MustSendRecord(rr->NR_AdditionalTo)) in ProcessQuery()
6014 { rr->NR_AnswerTo = mDNSNULL; rr->NR_AdditionalTo = mDNSNULL; } in ProcessQuery()
6019 for (rr=ResponseRecords; rr; rr=rr->NextResponse) in ProcessQuery()
6021 if (rr->NR_AnswerTo) in ProcessQuery()
6027 if (m->timenow - (rr->LastMCTime + TicksTTL(rr)/4) >= 0) in ProcessQuery()
6033 if (rr->NR_AnswerTo == (mDNSu8*)~1) rr->NR_AnswerTo = (mDNSu8*)~0; in ProcessQuery()
6037 if (rr->NR_AnswerTo == (mDNSu8*)~0) SendMulticastResponse = mDNStrue; in ProcessQuery()
6038 else if (rr->NR_AnswerTo == (mDNSu8*)~1) SendUnicastResponse = mDNStrue; in ProcessQuery()
6039 else if (rr->NR_AnswerTo) SendLegacyResponse = mDNStrue; in ProcessQuery()
6044 rr->ImmedAnswerMarkTime = m->timenow; in ProcessQuery()
6048 if (rr->ImmedAnswer && rr->ImmedAnswer != InterfaceID) in ProcessQuery()
6049 rr->ImmedAnswer = mDNSInterfaceMark; in ProcessQuery()
6052 rr->ImmedAnswer = InterfaceID; // Record interface to send it on in ProcessQuery()
6053 if (SendUnicastResponse) rr->ImmedUnicast = mDNStrue; in ProcessQuery()
6056 … if (mDNSIPv4AddressIsZero(rr->v4Requester)) rr->v4Requester = srcaddr->ip.v4; in ProcessQuery()
6057 … else if (!mDNSSameIPv4Address(rr->v4Requester, srcaddr->ip.v4)) rr->v4Requester = onesIPv4Addr; in ProcessQuery()
6061 … if (mDNSIPv6AddressIsZero(rr->v6Requester)) rr->v6Requester = srcaddr->ip.v6; in ProcessQuery()
6062 … else if (!mDNSSameIPv6Address(rr->v6Requester, srcaddr->ip.v6)) rr->v6Requester = onesIPv6Addr; in ProcessQuery()
6071 …else if (rr->resrec.RecordType == kDNSRecordTypeShared) delayresponse = mDNSPlatformOneSecond; //… in ProcessQuery()
6073 else if (rr->NR_AdditionalTo && rr->NR_AdditionalTo->NR_AnswerTo == (mDNSu8*)~0) in ProcessQuery()
6078 rr->ImmedAdditional = InterfaceID; in ProcessQuery()
6129 rr = ResponseRecords; in ProcessQuery()
6130 ResponseRecords = rr->NextResponse; in ProcessQuery()
6131 rr->NextResponse = mDNSNULL; in ProcessQuery()
6132 rr->NR_AnswerTo = mDNSNULL; in ProcessQuery()
6133 rr->NR_AdditionalTo = mDNSNULL; in ProcessQuery()
6295 … SrcLocal, const mDNSIPPort port, const mDNSOpaque16 id, const CacheRecord *const rr, mDNSBool tcp) in ExpectingUnicastResponseForRecord() argument
6303 if (!q->DuplicateOf && ResourceRecordAnswersUnicastResponse(&rr->resrec, q)) in ExpectingUnicastResponseForRecord()
6307 …->h.id %d q->TargetQID %d for %s", mDNSVal16(id), mDNSVal16(q->TargetQID), CRDisplayString(m, rr)); in ExpectingUnicastResponseForRecord()
6326 …TypeName(q->qtype), &q->Target, mDNSVal16(srcp), srcaddr, mDNSVal16(port), CRDisplayString(m, rr)); in ExpectingUnicastResponseForRecord()
6344 mDNSlocal mDNSu16 GetRDLengthMem(const ResourceRecord *const rr) in GetRDLengthMem() argument
6346 switch (rr->rrtype) in GetRDLengthMem()
6352 default: return rr->rdlength; in GetRDLengthMem()
6358 CacheRecord *rr = mDNSNULL; in CreateNewCacheEntry() local
6367 …if (cg) rr = GetCacheRecord(m, cg, RDLength); // Make a cache record, being careful not to recycl… in CreateNewCacheEntry()
6368 if (!rr) NoCacheAnswer(m, &m->rec.r); in CreateNewCacheEntry()
6371 RData *saveptr = rr->resrec.rdata; // Save the rr->resrec.rdata pointer in CreateNewCacheEntry()
6372 *rr = m->rec.r; // Block copy the CacheRecord object in CreateNewCacheEntry()
6373 rr->resrec.rdata = saveptr; // Restore rr->resrec.rdata after the structure assignment in CreateNewCacheEntry()
6374 rr->resrec.name = cg->name; // And set rr->resrec.name to point into our CacheGroup header in CreateNewCacheEntry()
6375 rr->DelayDelivery = delay; in CreateNewCacheEntry()
6378 if (rr->resrec.rdata == (RData*)&rr->smallrdatastorage && RDLength > InlineCacheRDSize) in CreateNewCacheEntry()
6380 else if (rr->resrec.rdata != (RData*)&rr->smallrdatastorage && RDLength <= InlineCacheRDSize) in CreateNewCacheEntry()
6383 mDNSPlatformMemCopy(rr->resrec.rdata, m->rec.r.resrec.rdata, sizeofRDataHeader + RDLength); in CreateNewCacheEntry()
6385 rr->next = mDNSNULL; // Clear 'next' pointer in CreateNewCacheEntry()
6386 *(cg->rrcache_tail) = rr; // Append this record to tail of cache slot list in CreateNewCacheEntry()
6387 cg->rrcache_tail = &(rr->next); // Advance tail pointer in CreateNewCacheEntry()
6389 CacheRecordAdd(m, rr); // CacheRecordAdd calls SetNextCacheCheckTimeForRecord(m, rr); for us in CreateNewCacheEntry()
6391 return(rr); in CreateNewCacheEntry()
6394 mDNSlocal void RefreshCacheRecord(mDNS *const m, CacheRecord *rr, mDNSu32 ttl) in RefreshCacheRecord() argument
6396 rr->TimeRcvd = m->timenow; in RefreshCacheRecord()
6397 rr->resrec.rroriginalttl = ttl; in RefreshCacheRecord()
6398 rr->UnansweredQueries = 0; in RefreshCacheRecord()
6400 rr->MPUnansweredQ = 0; in RefreshCacheRecord()
6401 rr->MPUnansweredKA = 0; in RefreshCacheRecord()
6402 rr->MPExpectingKA = mDNSfalse; in RefreshCacheRecord()
6404 SetNextCacheCheckTimeForRecord(m, rr); in RefreshCacheRecord()
6409 CacheRecord *rr; in GrantCacheExtensions() local
6412 for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next) in GrantCacheExtensions()
6413 if (rr->CRActiveQuestion == q) in GrantCacheExtensions()
6416 RefreshCacheRecord(m, rr, lease); in GrantCacheExtensions()
6549 CacheRecord *rr; in mDNSCoreReceiveResponse() local
6552 for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next) in mDNSCoreReceiveResponse()
6553 if (SameNameRecordAnswersQuestion(&rr->resrec, qptr)) in mDNSCoreReceiveResponse()
6556 rr->resrec.InterfaceID, CRDisplayString(m, rr)); in mDNSCoreReceiveResponse()
6558 rr->TimeRcvd = m->timenow - TicksTTL(rr) - 1; in mDNSCoreReceiveResponse()
6559 rr->UnansweredQueries = MaxUnansweredQueries; in mDNSCoreReceiveResponse()
6694 AuthRecord *rr = m->CurrentRecord; in mDNSCoreReceiveResponse() local
6695 m->CurrentRecord = rr->next; in mDNSCoreReceiveResponse()
6699 …if (!AcceptableResponse && !(ResponseSrcLocal && rr->resrec.RecordType == kDNSRecordTypeUnique)) c… in mDNSCoreReceiveResponse()
6701 …if (PacketRRMatchesSignature(&m->rec.r, rr)) // If interface, name, type (if shared record) and c… in mDNSCoreReceiveResponse()
6704 if (IdenticalSameNameRecord(&m->rec.r.resrec, &rr->resrec)) in mDNSCoreReceiveResponse()
6707 if (m->rec.r.resrec.rroriginalttl >= rr->resrec.rroriginalttl/2 || m->SleepState) in mDNSCoreReceiveResponse()
6710 …if (rr->ImmedAnswer == InterfaceID) { rr->ImmedAnswer = mDNSNULL; rr->ImmedUnicast = mDNSfals… in mDNSCoreReceiveResponse()
6714 …if (rr->ImmedAnswer == mDNSNULL) { rr->ImmedAnswer = InterfaceID; m->NextScheduledRe… in mDNSCoreReceiveResponse()
6715 …else if (rr->ImmedAnswer != InterfaceID) { rr->ImmedAnswer = mDNSInterfaceMark; m->NextScheduledRe… in mDNSCoreReceiveResponse()
6719 else if (m->rec.r.resrec.rroriginalttl > 0 && PacketRRConflict(m, rr, &m->rec.r)) in mDNSCoreReceiveResponse()
6722 …fo("mDNSCoreReceiveResponse: Our Record: %08lX %s", rr-> resrec.rdatahash, ARDisplayString(m, … in mDNSCoreReceiveResponse()
6726 if (rr->DependentOn) in mDNSCoreReceiveResponse()
6728 while (rr->DependentOn) rr = rr->DependentOn; in mDNSCoreReceiveResponse()
6729 …fo("mDNSCoreReceiveResponse: Dep Record: %08lX %s", rr-> resrec.rdatahash, ARDisplayString(m, … in mDNSCoreReceiveResponse()
6733 if (rr->ProbeCount > DefaultProbeCountForTypeUnique) in mDNSCoreReceiveResponse()
6734 LogInfo("mDNSCoreReceiveResponse: Already reset to Probing: %s", ARDisplayString(m, rr)); in mDNSCoreReceiveResponse()
6735 else if (rr->ProbeCount == DefaultProbeCountForTypeUnique) in mDNSCoreReceiveResponse()
6736 …iveResponse: Ignoring response received before we even began probing: %s", ARDisplayString(m, rr)); in mDNSCoreReceiveResponse()
6741 if (rr->resrec.RecordType == kDNSRecordTypeVerified) in mDNSCoreReceiveResponse()
6743 LogMsg("mDNSCoreReceiveResponse: Resetting to Probing: %s", ARDisplayString(m, rr)); in mDNSCoreReceiveResponse()
6744 rr->resrec.RecordType = kDNSRecordTypeUnique; in mDNSCoreReceiveResponse()
6749 rr->ProbeCount = DefaultProbeCountForTypeUnique + 1; in mDNSCoreReceiveResponse()
6750 rr->AnnounceCount = InitialAnnounceCount; in mDNSCoreReceiveResponse()
6751 InitializeLastAPTime(m, rr); in mDNSCoreReceiveResponse()
6752 …RecordProbeFailure(m, rr); // Repeated late conflicts also cause us to back off to the slower prob… in mDNSCoreReceiveResponse()
6755 else if (rr->resrec.RecordType == kDNSRecordTypeUnique) in mDNSCoreReceiveResponse()
6757 …NSCoreReceiveResponse: ProbeCount %d; will deregister %s", rr->ProbeCount, ARDisplayString(m, rr)); in mDNSCoreReceiveResponse()
6758 mDNS_Deregister_internal(m, rr, mDNS_Dereg_conflict); in mDNSCoreReceiveResponse()
6765 else if (rr->resrec.RecordType == kDNSRecordTypeKnownUnique) in mDNSCoreReceiveResponse()
6767 … LogMsg("mDNSCoreReceiveResponse: Unexpected conflict discarding %s", ARDisplayString(m, rr)); in mDNSCoreReceiveResponse()
6768 mDNS_Deregister_internal(m, rr, mDNS_Dereg_conflict); in mDNSCoreReceiveResponse()
6771 …NSCoreReceiveResponse: Unexpected record type %X %s", rr->resrec.RecordType, ARDisplayString(m, rr… in mDNSCoreReceiveResponse()
6778 else if (m->rec.r.resrec.rrtype == rr->resrec.rrtype) in mDNSCoreReceiveResponse()
6779 …if ((m->rec.r.resrec.RecordType & kDNSRecordTypePacketUniqueMask) && m->timenow - rr->LastMCTime >… in mDNSCoreReceiveResponse()
6780 { rr->ImmedAnswer = mDNSInterfaceMark; m->NextScheduledResponse = m->timenow; } in mDNSCoreReceiveResponse()
6815 CacheRecord *rr; in mDNSCoreReceiveResponse() local
6818 for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next) in mDNSCoreReceiveResponse()
6820 …mDNSBool match = !InterfaceID ? m->rec.r.resrec.rDNSServer == rr->resrec.rDNSServer : rr->resrec.I… in mDNSCoreReceiveResponse()
6822 if (match && IdenticalSameNameRecord(&m->rec.r.resrec, &rr->resrec)) in mDNSCoreReceiveResponse()
6831 if (rr->NextInCFList == mDNSNULL && cfp != &rr->NextInCFList && LLQType != uDNS_LLQ_Events) in mDNSCoreReceiveResponse()
6832 { *cfp = rr; cfp = &rr->NextInCFList; *cfp = (CacheRecord*)1; } in mDNSCoreReceiveResponse()
6835 if (!(rr->resrec.RecordType & kDNSRecordTypePacketUniqueMask)) in mDNSCoreReceiveResponse()
6838 …for (q = m->Questions; q; q=q->next) if (ResourceRecordAnswersQuestion(&rr->resrec, q)) q->UniqueA… in mDNSCoreReceiveResponse()
6839 rr->resrec.RecordType = m->rec.r.resrec.RecordType; in mDNSCoreReceiveResponse()
6843 if (!SameRDataBody(&m->rec.r.resrec, &rr->resrec.rdata->u, SameDomainNameCS)) in mDNSCoreReceiveResponse()
6849 rr->resrec.rroriginalttl = 0; in mDNSCoreReceiveResponse()
6850 rr->TimeRcvd = m->timenow; in mDNSCoreReceiveResponse()
6851 rr->UnansweredQueries = MaxUnansweredQueries; in mDNSCoreReceiveResponse()
6852 SetNextCacheCheckTimeForRecord(m, rr); in mDNSCoreReceiveResponse()
6853 LogInfo("Discarding due to domainname case change old: %s", CRDisplayString(m,rr)); in mDNSCoreReceiveResponse()
6856 …NextCacheCheckEvent(rr) - m->timenow, slot, m->rrcache_nextcheck[slot] - m->timenow, m->NextCacheC… in mDNSCoreReceiveResponse()
6863 RefreshCacheRecord(m, rr, m->rec.r.resrec.rroriginalttl); in mDNSCoreReceiveResponse()
6873 if (rr->resrec.RecordType & kDNSRecordTypePacketUniqueMask) in mDNSCoreReceiveResponse()
6878 ActiveQuestion(q) && ResourceRecordAnswersQuestion(&rr->resrec, q)) in mDNSCoreReceiveResponse()
6903 debugf("DE for %s", CRDisplayString(m, rr)); in mDNSCoreReceiveResponse()
6904 if (RRExpireTime(rr) - m->timenow > mDNSPlatformOneSecond) in mDNSCoreReceiveResponse()
6906 rr->resrec.rroriginalttl = 1; in mDNSCoreReceiveResponse()
6907 rr->TimeRcvd = m->timenow; in mDNSCoreReceiveResponse()
6908 rr->UnansweredQueries = MaxUnansweredQueries; in mDNSCoreReceiveResponse()
6909 SetNextCacheCheckTimeForRecord(m, rr); in mDNSCoreReceiveResponse()
6918 if (!rr && m->rec.r.resrec.rroriginalttl > 0) in mDNSCoreReceiveResponse()
6927 rr = CreateNewCacheEntry(m, slot, cg, delay); in mDNSCoreReceiveResponse()
6928 if (rr) in mDNSCoreReceiveResponse()
6930 if (AddToCFList) { *cfp = rr; cfp = &rr->NextInCFList; *cfp = (CacheRecord*)1; } in mDNSCoreReceiveResponse()
6931 else if (rr->DelayDelivery) ScheduleNextCacheCheckTime(m, slot, rr->DelayDelivery); in mDNSCoreReceiveResponse()
7056 CacheRecord *rr, *neg = mDNSNULL; in mDNSCoreReceiveResponse() local
7059 for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next) in mDNSCoreReceiveResponse()
7060 if (SameNameRecordAnswersQuestion(&rr->resrec, qptr)) in mDNSCoreReceiveResponse()
7063 if (RRExpireTime(rr) - m->timenow > 0) break; in mDNSCoreReceiveResponse()
7065 if (rr->resrec.RecordType == kDNSRecordTypePacketNegative) neg = rr; in mDNSCoreReceiveResponse()
7081 if (qptr->AppendSearchDomains && !rr) in mDNSCoreReceiveResponse()
7092 if (!rr) in mDNSCoreReceiveResponse()
7191 AuthRecord *rr; in ScheduleWakeupForList() local
7193 for (rr = thelist; rr; rr = rr->next) in ScheduleWakeupForList()
7194 …if (rr->resrec.InterfaceID == InterfaceID && rr->resrec.RecordType != kDNSRecordTypeDeregistering … in ScheduleWakeupForList()
7196 LogInfo("ScheduleWakeupForList: Scheduling wakeup packets for %s", ARDisplayString(m, rr)); in ScheduleWakeupForList()
7197 mDNS_Deregister_internal(m, rr, mDNS_Dereg_normal); in ScheduleWakeupForList()
7408 AuthRecord *const rr = m->CurrentRecord; in mDNSCoreReceiveUpdateR() local
7409 …if (rr->resrec.InterfaceID == InterfaceID || (!rr->resrec.InterfaceID && (rr->ForceMCast || IsLoca… in mDNSCoreReceiveUpdateR()
7410 if (mDNSSameOpaque16(rr->updateid, msg->h.id)) in mDNSCoreReceiveUpdateR()
7412 rr->updateid = zeroID; in mDNSCoreReceiveUpdateR()
7413 rr->expire = NonZeroTime(m->timenow + updatelease * mDNSPlatformOneSecond); in mDNSCoreReceiveUpdateR()
7414 …("Sleep Proxy %s record %5d %s", rr->WakeUp.HMAC.l[0] ? "transferred" : "registered", updatelease,… in mDNSCoreReceiveUpdateR()
7415 if (rr->WakeUp.HMAC.l[0]) in mDNSCoreReceiveUpdateR()
7417 …rr->WakeUp.HMAC = zeroEthAddr; // Clear HMAC so that mDNS_Deregister_internal doesn't waste packet… in mDNSCoreReceiveUpdateR()
7418 rr->RequireGoodbye = mDNSfalse; // and we don't want to send goodbye for it in mDNSCoreReceiveUpdateR()
7419 mDNS_Deregister_internal(m, rr, mDNS_Dereg_normal); in mDNSCoreReceiveUpdateR()
7424 if (m->CurrentRecord == rr) // If m->CurrentRecord was not advanced for us, do it now in mDNSCoreReceiveUpdateR()
7425 m->CurrentRecord = rr->next; in mDNSCoreReceiveUpdateR()
8097 CacheRecord *rr; in CacheRecordRmvEventsForCurrentQuestion() local
8103 for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next) in CacheRecordRmvEventsForCurrentQuestion()
8106 if (rr->resrec.RecordType == kDNSRecordTypePacketNegative) in CacheRecordRmvEventsForCurrentQuestion()
8109 …CRDisplayString(m, rr), q, q->qname.c, DNSTypeName(q->qtype), rr->CRActiveQuestion, q->CurrentAnsw… in CacheRecordRmvEventsForCurrentQuestion()
8113 if (SameNameRecordAnswersQuestion(&rr->resrec, q)) in CacheRecordRmvEventsForCurrentQuestion()
8116 q->qname.c, CRDisplayString(m, rr), q->LOAddressAnswers); in CacheRecordRmvEventsForCurrentQuestion()
8119 if (rr->resrec.rdlength > SmallRecordLimit) q->LargeAnswers--; in CacheRecordRmvEventsForCurrentQuestion()
8120 if (rr->resrec.RecordType & kDNSRecordTypePacketUniqueMask) q->UniqueAnswers--; in CacheRecordRmvEventsForCurrentQuestion()
8122 if (rr->CRActiveQuestion == q) in CacheRecordRmvEventsForCurrentQuestion()
8131 if (qptr != q && ActiveQuestion(qptr) && ResourceRecordAnswersQuestion(&rr->resrec, qptr)) in CacheRecordRmvEventsForCurrentQuestion()
8137 …qptr, CRDisplayString(m,rr), q->CurrentAnswers, qptr->CurrentAnswers, qptr->SuppressUnusable, qptr… in CacheRecordRmvEventsForCurrentQuestion()
8139 rr->CRActiveQuestion = qptr; // Question used to be active; new value may or may not be null in CacheRecordRmvEventsForCurrentQuestion()
8142 AnswerCurrentQuestionWithResourceRecord(m, rr, QC_rmv); in CacheRecordRmvEventsForCurrentQuestion()
8158 AuthRecord *rr; in LocalRecordRmvEventsForQuestion() local
8176 for (rr = ag->members; rr; rr=rr->next) in LocalRecordRmvEventsForQuestion()
8178 if (LORecordAnswersAddressType(rr) && LocalOnlyRecordAnswersQuestion(rr, q)) in LocalRecordRmvEventsForQuestion()
8181 ARDisplayString(m, rr)); in LocalRecordRmvEventsForQuestion()
8189 AnswerLocalQuestionWithLocalAuthRecord(m, rr, QC_rmv); // MUST NOT dereference q again in LocalRecordRmvEventsForQuestion()
8543 CacheRecord *rr; in mDNS_StopQuery_internal() local
8571 for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next) in mDNS_StopQuery_internal()
8573 if (rr->CRActiveQuestion == question) in mDNS_StopQuery_internal()
8579 if (ActiveQuestion(q) && ResourceRecordAnswersQuestion(&rr->resrec, q)) in mDNS_StopQuery_internal()
8583 …"CurrentAnswers %d, SuppressQuery %d", q, CRDisplayString(m,rr), question->CurrentAnswers, q->Curr… in mDNS_StopQuery_internal()
8584 rr->CRActiveQuestion = q; // Question used to be active; new value may or may not be null in mDNS_StopQuery_internal()
8703 const CacheRecord *rr; in mDNS_StopQueryWithRemoves() local
8707 for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next) in mDNS_StopQueryWithRemoves()
8708 …if (rr->resrec.RecordType != kDNSRecordTypePacketNegative && SameNameRecordAnswersQuestion(&rr->re… in mDNS_StopQueryWithRemoves()
8712 question->QuestionCallback(m, question, &rr->resrec, mDNSfalse); in mDNS_StopQueryWithRemoves()
8729 mDNSexport mStatus mDNS_ReconfirmByValue(mDNS *const m, ResourceRecord *const rr) in mDNS_ReconfirmByValue() argument
8734 cr = FindIdenticalRecordInCache(m, rr); in mDNS_ReconfirmByValue()
8735 debugf("mDNS_ReconfirmByValue: %p %s", cr, RRDisplayString(m, rr)); in mDNS_ReconfirmByValue()
9071 mDNSexport mStatus mDNS_Register(mDNS *const m, AuthRecord *const rr) in mDNS_Register() argument
9075 status = mDNS_Register_internal(m, rr); in mDNS_Register()
9080 mDNSexport mStatus mDNS_Update(mDNS *const m, AuthRecord *const rr, mDNSu32 newttl, in mDNS_Update() argument
9083 if (!ValidateRData(rr->resrec.rrtype, newrdlength, newrdata)) in mDNS_Update()
9085 …LogMsg("Attempt to update record with invalid rdata: %s", GetRRDisplayString_rdb(&rr->resrec, &new… in mDNS_Update()
9092 if (newttl == 0) newttl = rr->resrec.rroriginalttl; in mDNS_Update()
9095 if (rr->NewRData) in mDNS_Update()
9097 RData *n = rr->NewRData; in mDNS_Update()
9098 rr->NewRData = mDNSNULL; // Clear the NewRData pointer ... in mDNS_Update()
9099 if (rr->UpdateCallback) in mDNS_Update()
9100 …rr->UpdateCallback(m, rr, n, rr->newrdlength); // ...and let the client free this memory, if neces… in mDNS_Update()
9103 rr->NewRData = newrdata; in mDNS_Update()
9104 rr->newrdlength = newrdlength; in mDNS_Update()
9105 rr->UpdateCallback = Callback; in mDNS_Update()
9108 …if (rr->ARType != AuthRecordLocalOnly && rr->ARType != AuthRecordP2P && !IsLocalDomain(rr->resrec.… in mDNS_Update()
9110 mStatus status = uDNS_UpdateRecord(m, rr); in mDNS_Update()
9112 if (status != mStatus_NoError) { rr->NewRData = mDNSNULL; rr->newrdlength = 0; } in mDNS_Update()
9118 if (RRLocalOnly(rr) || (rr->resrec.rroriginalttl == newttl && in mDNS_Update()
9119 …rr->resrec.rdlength == newrdlength && mDNSPlatformMemSame(rr->resrec.rdata->u.data, newrdata->u.da… in mDNS_Update()
9120 CompleteRDataUpdate(m, rr); in mDNS_Update()
9123 rr->AnnounceCount = InitialAnnounceCount; in mDNS_Update()
9124 InitializeLastAPTime(m, rr); in mDNS_Update()
9125 while (rr->NextUpdateCredit && m->timenow - rr->NextUpdateCredit >= 0) GrantUpdateCredit(rr); in mDNS_Update()
9126 if (!rr->UpdateBlocked && rr->UpdateCredits) rr->UpdateCredits--; in mDNS_Update()
9127 …if (!rr->NextUpdateCredit) rr->NextUpdateCredit = NonZeroTime(m->timenow + kUpdateCreditRefreshInt… in mDNS_Update()
9128 …if (rr->AnnounceCount > rr->UpdateCredits + 1) rr->AnnounceCount = (mDNSu8)(rr->UpdateCredits + 1); in mDNS_Update()
9129 if (rr->UpdateCredits <= 5) in mDNS_Update()
9131 …mDNSu32 delay = 6 - rr->UpdateCredits; // Delay 1 second, then 2, then 3, etc. up to 6 seconds ma… in mDNS_Update()
9132 …if (!rr->UpdateBlocked) rr->UpdateBlocked = NonZeroTime(m->timenow + (mDNSs32)delay * mDNSPlatform… in mDNS_Update()
9133 rr->ThisAPInterval *= 4; in mDNS_Update()
9134 rr->LastAPTime = rr->UpdateBlocked - rr->ThisAPInterval; in mDNS_Update()
9136 rr->resrec.name->c, delay, delay > 1 ? "s" : ""); in mDNS_Update()
9138 rr->resrec.rroriginalttl = newttl; in mDNS_Update()
9148 mDNSexport mStatus mDNS_Deregister(mDNS *const m, AuthRecord *const rr) in mDNS_Deregister() argument
9152 status = mDNS_Deregister_internal(m, rr, mDNS_Dereg_normal); in mDNS_Deregister()
9158 mDNSlocal void mDNS_HostNameCallback(mDNS *const m, AuthRecord *const rr, mStatus result);
9262 AuthRecord *rr; in mDNS_SetFQDN() local
9285 for (rr = m->ResourceRecords; rr; rr=rr->next) if (rr->AutoTarget) SetTargetToHostName(m, rr); in mDNS_SetFQDN()
9286 for (rr = m->DuplicateRecords; rr; rr=rr->next) if (rr->AutoTarget) SetTargetToHostName(m, rr); in mDNS_SetFQDN()
9291 mDNSlocal void mDNS_HostNameCallback(mDNS *const m, AuthRecord *const rr, mStatus result) in mDNS_HostNameCallback() argument
9293 (void)rr; // Unused parameter in mDNS_HostNameCallback()
9300 …debugf("mDNS_HostNameCallback: %##s (%s) %s (%ld)", rr->resrec.name->c, DNSTypeName(rr->resrec.rrt… in mDNS_HostNameCallback()
9336 …LogMsg("mDNS_HostNameCallback: Unknown error %d for registration of record %s", result, rr->resre… in mDNS_HostNameCallback()
9354 AuthRecord *rr; in RestartRecordGetZoneData() local
9356 for (rr = m->ResourceRecords; rr; rr=rr->next) in RestartRecordGetZoneData()
9357 if (AuthRecord_uDNS(rr) && rr->state != regState_NoTarget) in RestartRecordGetZoneData()
9359 debugf("RestartRecordGetZoneData: StartGetZoneData for %##s", rr->resrec.name->c); in RestartRecordGetZoneData()
9362 if (rr->nta) { rr->updateid = zeroID; CancelGetZoneData(m, rr->nta); } in RestartRecordGetZoneData()
9363 …rr->nta = StartGetZoneData(m, rr->resrec.name, ZoneServiceUpdate, RecordRegistrationGotZoneData, r… in RestartRecordGetZoneData()
9424 AuthRecord *rr; in mDNS_RegisterInterface() local
9543 for (rr = m->ResourceRecords; rr; rr=rr->next) in mDNS_RegisterInterface()
9544 if (!AuthRecord_uDNS(rr)) in mDNS_RegisterInterface()
9545 if (!rr->resrec.InterfaceID || rr->resrec.InterfaceID == set->InterfaceID) in mDNS_RegisterInterface()
9547 …if (rr->resrec.RecordType == kDNSRecordTypeVerified && !rr->DependentOn) rr->resrec.RecordType = k… in mDNS_RegisterInterface()
9548 rr->ProbeCount = DefaultProbeCountForRecordType(rr->resrec.RecordType); in mDNS_RegisterInterface()
9549 if (rr->AnnounceCount < numannounce) rr->AnnounceCount = numannounce; in mDNS_RegisterInterface()
9550 rr->SendNSECNow = mDNSNULL; in mDNS_RegisterInterface()
9551 InitializeLastAPTime(m, rr); in mDNS_RegisterInterface()
9618 CacheRecord *rr; in mDNS_DeregisterInterface() local
9642 FORALL_CACHERECORDS(slot, cg, rr) in mDNS_DeregisterInterface()
9643 if (rr->resrec.InterfaceID == set->InterfaceID) in mDNS_DeregisterInterface()
9650 mDNS_Reconfirm_internal(m, rr, kDefaultReconfirmTimeForFlappingInterface); in mDNS_DeregisterInterface()
9653 rr->UnansweredQueries = MaxUnansweredQueries; in mDNS_DeregisterInterface()
9656 mDNS_PurgeCacheResourceRecord(m, rr); in mDNS_DeregisterInterface()
9680 CacheRecord *rr; in mDNS_DeregisterInterface() local
9681 FORALL_CACHERECORDS(slot, cg, rr) in mDNS_DeregisterInterface()
9682 if (rr->resrec.InterfaceID == set->InterfaceID) in mDNS_DeregisterInterface()
9683 mDNS_Reconfirm_internal(m, rr, kDefaultReconfirmTimeForFlappingInterface); in mDNS_DeregisterInterface()
9693 mDNSlocal void ServiceCallback(mDNS *const m, AuthRecord *const rr, mStatus result) in ServiceCallback() argument
9695 ServiceRecordSet *sr = (ServiceRecordSet *)rr->RecordContext; in ServiceCallback()
9704 …debugf("ServiceCallback: %##s (%s) %s (%d)", rr->resrec.name->c, DNSTypeName(rr->resrec.rrtype), m… in ServiceCallback()
9709 if (result == mStatus_NoError && rr != &sr->RR_SRV) return; in ServiceCallback()
9752 mDNSlocal void NSSCallback(mDNS *const m, AuthRecord *const rr, mStatus result) in NSSCallback() argument
9754 ServiceRecordSet *sr = (ServiceRecordSet *)rr->RecordContext; in NSSCallback()
10078 mDNSexport mStatus mDNS_RegisterNoSuchService(mDNS *const m, AuthRecord *const rr, in mDNS_RegisterNoSuchService() argument
10094 …mDNS_SetupResourceRecord(rr, mDNSNULL, InterfaceID, kDNSType_SRV, kHostNameTTL, kDNSRecordTypeUniq… in mDNS_RegisterNoSuchService()
10095 …if (ConstructServiceName(&rr->namestorage, name, type, domain) == mDNSNULL) return(mStatus_BadPara… in mDNS_RegisterNoSuchService()
10096 rr->resrec.rdata->u.srv.priority = 0; in mDNS_RegisterNoSuchService()
10097 rr->resrec.rdata->u.srv.weight = 0; in mDNS_RegisterNoSuchService()
10098 rr->resrec.rdata->u.srv.port = zeroIPPort; in mDNS_RegisterNoSuchService()
10099 if (host && host->c[0]) AssignDomainName(&rr->resrec.rdata->u.srv.target, host); in mDNS_RegisterNoSuchService()
10100 else rr->AutoTarget = Target_AutoHost; in mDNS_RegisterNoSuchService()
10101 return(mDNS_Register(m, rr)); in mDNS_RegisterNoSuchService()
10104 mDNSexport mStatus mDNS_AdvertiseDomains(mDNS *const m, AuthRecord *rr, in mDNS_AdvertiseDomains() argument
10115 …mDNS_SetupResourceRecord(rr, mDNSNULL, InterfaceID, kDNSType_PTR, kStandardTTL, kDNSRecordTypeShar… in mDNS_AdvertiseDomains()
10116 …if (!MakeDomainNameFromDNSNameString(&rr->namestorage, mDNS_DomainTypeNames[DomainType])) return(m… in mDNS_AdvertiseDomains()
10117 …if (!MakeDomainNameFromDNSNameString(&rr->resrec.rdata->u.name, domname)) return(m… in mDNS_AdvertiseDomains()
10118 return(mDNS_Register(m, rr)); in mDNS_AdvertiseDomains()
10157 mDNSlocal void RestartARPProbing(mDNS *const m, AuthRecord *const rr) in RestartARPProbing() argument
10169 rr->resrec.RecordType = kDNSRecordTypeUnique; in RestartARPProbing()
10170 rr->ProbeCount = DefaultProbeCountForTypeUnique; in RestartARPProbing()
10178 if (rr->AnnounceCount == InitialAnnounceCount && m->timenow - rr->LastAPTime >= 0) in RestartARPProbing()
10179 InitializeLastAPTime(m, rr); in RestartARPProbing()
10182 rr->AnnounceCount = InitialAnnounceCount; in RestartARPProbing()
10183 rr->ThisAPInterval = mDNSPlatformOneSecond; in RestartARPProbing()
10184 …rr->LastAPTime = m->timenow + mDNSPlatformOneSecond * 9; // Send first packet at rr->LastAPTim… in RestartARPProbing()
10185 SetNextAnnounceProbeTime(m, rr); in RestartARPProbing()
10192 AuthRecord *rr; in mDNSCoreReceiveRawARP() local
10208 for (rr = m->ResourceRecords; rr; rr=rr->next) in mDNSCoreReceiveRawARP()
10209 …if (rr->resrec.InterfaceID == InterfaceID && rr->resrec.RecordType != kDNSRecordTypeDeregistering … in mDNSCoreReceiveRawARP()
10210 …rr->AddressProxy.type == mDNSAddrType_IPv4 && mDNSSameIPv4Address(rr->AddressProxy.ip.v4, arp->tpa… in mDNSCoreReceiveRawARP()
10216 const char *const msg = mDNSSameEthAddress(&arp->sha, &rr->WakeUp.IMAC) ? msg1 : in mDNSCoreReceiveRawARP()
10217 (rr->AnnounceCount == InitialAnnounceCount) ? msg2 : in mDNSCoreReceiveRawARP()
10220 …>ifname, msg, &arp->sha, &arp->spa, &arp->tpa, &rr->WakeUp.HMAC, &rr->WakeUp.IMAC, ARDisplayString… in mDNSCoreReceiveRawARP()
10221 if (msg == msg1) RestartARPProbing(m, rr); in mDNSCoreReceiveRawARP()
10222 …else if (msg == msg3) mDNSPlatformSetLocalAddressCacheEntry(m, &rr->AddressProxy, &rr->WakeUp.IMAC… in mDNSCoreReceiveRawARP()
10223 else if (msg == msg4) SendARP(m, 2, rr, &arp->tpa, &arp->sha, &arp->spa, &arp->sha); in mDNSCoreReceiveRawARP()
10240 for (rr = m->ResourceRecords; rr; rr=rr->next) in mDNSCoreReceiveRawARP()
10241 …if (rr->resrec.InterfaceID == InterfaceID && rr->resrec.RecordType != kDNSRecordTypeDeregistering … in mDNSCoreReceiveRawARP()
10242 …rr->AddressProxy.type == mDNSAddrType_IPv4 && mDNSSameIPv4Address(rr->AddressProxy.ip.v4, arp->spa… in mDNSCoreReceiveRawARP()
10244 RestartARPProbing(m, rr); in mDNSCoreReceiveRawARP()
10245 if (mDNSSameEthAddress(&arp->sha, &rr->WakeUp.IMAC)) in mDNSCoreReceiveRawARP()
10248 &arp->sha, &arp->spa, &arp->tpa, ARDisplayString(m, rr)); in mDNSCoreReceiveRawARP()
10252 &arp->sha, &arp->spa, &arp->tpa, &rr->WakeUp.HMAC, &rr->WakeUp.IMAC, ARDisplayString(m, rr)); in mDNSCoreReceiveRawARP()
10253 ScheduleWakeup(m, rr->resrec.InterfaceID, &rr->WakeUp.HMAC); in mDNSCoreReceiveRawARP()
10280 AuthRecord *rr; in mDNSCoreReceiveRawND() local
10291 for (rr = m->ResourceRecords; rr; rr=rr->next) in mDNSCoreReceiveRawND()
10292 …if (rr->resrec.InterfaceID == InterfaceID && rr->resrec.RecordType != kDNSRecordTypeDeregistering … in mDNSCoreReceiveRawND()
10293 …rr->AddressProxy.type == mDNSAddrType_IPv6 && mDNSSameIPv6Address(rr->AddressProxy.ip.v6, ndp->tar… in mDNSCoreReceiveRawND()
10300 const char *const msg = sha && mDNSSameEthAddress(sha, &rr->WakeUp.IMAC) ? msg1 : in mDNSCoreReceiveRawND()
10301 (rr->AnnounceCount == InitialAnnounceCount) ? msg2 : in mDNSCoreReceiveRawND()
10305 …intf->ifname, msg, sha, spa, &ndp->target, &rr->WakeUp.HMAC, &rr->WakeUp.IMAC, ARDisplayString(m, … in mDNSCoreReceiveRawND()
10306 if (msg == msg1) RestartARPProbing(m, rr); in mDNSCoreReceiveRawND()
10310 mDNSPlatformSetLocalAddressCacheEntry(m, &rr->AddressProxy, &rr->WakeUp.IMAC, InterfaceID); in mDNSCoreReceiveRawND()
10312 …else if (msg == msg4) SendNDP(m, NDP_Adv, NDP_Solicited, rr, &ndp->target, mDNSNULL, spa, … in mDNSCoreReceiveRawND()
10313 …else if (msg == msg5) SendNDP(m, NDP_Adv, 0, rr, &ndp->target, mDNSNULL, &AllHosts_v6,… in mDNSCoreReceiveRawND()
10328 for (rr = m->ResourceRecords; rr; rr=rr->next) in mDNSCoreReceiveRawND()
10329 …if (rr->resrec.InterfaceID == InterfaceID && rr->resrec.RecordType != kDNSRecordTypeDeregistering … in mDNSCoreReceiveRawND()
10330 … rr->AddressProxy.type == mDNSAddrType_IPv6 && mDNSSameIPv6Address(rr->AddressProxy.ip.v6, *spa)) in mDNSCoreReceiveRawND()
10332 RestartARPProbing(m, rr); in mDNSCoreReceiveRawND()
10333 if (mDNSSameEthAddress(sha, &rr->WakeUp.IMAC)) in mDNSCoreReceiveRawND()
10335 …pe == NDP_Sol ? "Solicitation " : "Advertisement", sha, spa, &ndp->target, ARDisplayString(m, rr)); in mDNSCoreReceiveRawND()
10339 sha, spa, &ndp->target, &rr->WakeUp.HMAC, &rr->WakeUp.IMAC, ARDisplayString(m, rr)); in mDNSCoreReceiveRawND()
10340 ScheduleWakeup(m, rr->resrec.InterfaceID, &rr->WakeUp.HMAC); in mDNSCoreReceiveRawND()
10438 AuthRecord *rr, *r2; in mDNSCoreReceiveRawTransportPacket() local
10441 for (rr = m->ResourceRecords; rr; rr=rr->next) in mDNSCoreReceiveRawTransportPacket()
10442 if (rr->resrec.InterfaceID == InterfaceID && in mDNSCoreReceiveRawTransportPacket()
10443 rr->resrec.RecordType != kDNSRecordTypeDeregistering && in mDNSCoreReceiveRawTransportPacket()
10444 rr->AddressProxy.type && mDNSSameAddress(&rr->AddressProxy, dst)) in mDNSCoreReceiveRawTransportPacket()
10448 …if (r2->resrec.InterfaceID == InterfaceID && mDNSSameEthAddress(&r2->WakeUp.HMAC, &rr->WakeUp.HMAC… in mDNSCoreReceiveRawTransportPacket()
10453 …if (!r2 && mDNSSameIPPort(port, IPSECPort)) r2 = rr; // So that we wake for BTMM IPSEC packets, ev… in mDNSCoreReceiveRawTransportPacket()
10457 …InterfaceNameForID(m, rr->resrec.InterfaceID), dst, &rr->WakeUp.HMAC, &rr->WakeUp.IMAC, ARDisplayS… in mDNSCoreReceiveRawTransportPacket()
10458 ScheduleWakeup(m, rr->resrec.InterfaceID, &rr->WakeUp.HMAC); in mDNSCoreReceiveRawTransportPacket()
10462 InterfaceNameForID(m, rr->resrec.InterfaceID), dst, &rr->WakeUp.HMAC, tp, mDNSVal16(port)); in mDNSCoreReceiveRawTransportPacket()
10813 mDNSlocal void DynDNSHostNameCallback(mDNS *const m, AuthRecord *const rr, mStatus result) in DynDNSHostNameCallback() argument
10816 debugf("NameStatusCallback: result %d for registration of name %##s", result, rr->resrec.name->c); in DynDNSHostNameCallback()
10817 mDNSPlatformDynDNSHostNameStatusChanged(rr->resrec.name, result); in DynDNSHostNameCallback()
11313 AuthRecord *rr = m->CurrentRecord; in DeregLoop() local
11315 (rr->resrec.RecordType != kDNSRecordTypeDeregistering) ? "Initiating " : "Accelerating", in DeregLoop()
11316 rr, rr->resrec.RecordType, ARDisplayString(m, rr)); in DeregLoop()
11317 if (rr->resrec.RecordType != kDNSRecordTypeDeregistering) in DeregLoop()
11318 mDNS_Deregister_internal(m, rr, mDNS_Dereg_rapid); in DeregLoop()
11319 else if (rr->AnnounceCount > 1) in DeregLoop()
11321 rr->AnnounceCount = 1; in DeregLoop()
11322 rr->LastAPTime = m->timenow - rr->ThisAPInterval; in DeregLoop()
11326 if (m->CurrentRecord == rr) // If m->CurrentRecord was not advanced for us, do it now in DeregLoop()
11327 m->CurrentRecord = rr->next; in DeregLoop()
11334 AuthRecord *rr; in mDNS_StartExit() local
11420 for (rr = m->DuplicateRecords; rr; rr = rr->next) in mDNS_StartExit()
11421 …not still have Duplicate Records remaining: %02X %s", rr->resrec.RecordType, ARDisplayString(m, rr… in mDNS_StartExit()
11439 AuthRecord *rr; in mDNS_FinalExit() local
11465 for (rr = m->ResourceRecords; rr; rr = rr->next) in mDNS_FinalExit()
11466 …_FinalExit failed to send goodbye for: %p %02X %s", rr, rr->resrec.RecordType, ARDisplayString(m, … in mDNS_FinalExit()