Lines Matching refs:sr
9695 ServiceRecordSet *sr = (ServiceRecordSet *)rr->RecordContext;
9709 if (result == mStatus_NoError && rr != &sr->RR_SRV) return;
9714 sr->Conflict = mDNStrue; // Record that this service set had a conflict
9715 mDNS_DeregisterService(m, sr); // Unlink the records from our list
9725 ExtraResourceRecord *e = sr->Extras;
9727 if (sr->RR_SRV.resrec.RecordType != kDNSRecordTypeUnregistered) return;
9728 if (sr->RR_TXT.resrec.RecordType != kDNSRecordTypeUnregistered) return;
9729 if (sr->RR_PTR.resrec.RecordType != kDNSRecordTypeUnregistered) return;
9730 if (sr->RR_ADV.resrec.RecordType != kDNSRecordTypeUnregistered) return;
9731 for (i=0; i<sr->NumSubTypes; i++) if (sr->SubTypes[i].resrec.RecordType != kDNSRecordTypeUnregistered) return;
9741 if (sr->Conflict) result = mStatus_NameConflict;
9745 LogInfo("ServiceCallback: All records %s for %##s", (result == mStatus_MemFree ? "Unregistered": "Registered"), sr->RR_PTR.resrec.name->c);
9746 // CAUTION: MUST NOT do anything more with sr after calling sr->Callback(), because the client's callback
9748 if (sr->ServiceCallback)
9749 sr->ServiceCallback(m, sr, result);
9754 ServiceRecordSet *sr = (ServiceRecordSet *)rr->RecordContext;
9755 if (sr->ServiceCallback)
9756 sr->ServiceCallback(m, sr, result);
9768 mDNSexport mStatus mDNS_RegisterService(mDNS *const m, ServiceRecordSet *sr,
9780 sr->ServiceCallback = Callback;
9781 sr->ServiceContext = Context;
9782 sr->Conflict = mDNSfalse;
9784 sr->Extras = mDNSNULL;
9785 sr->NumSubTypes = NumSubTypes;
9786 sr->SubTypes = SubTypes;
9799 mDNS_SetupResourceRecord(&sr->RR_ADV, mDNSNULL, InterfaceID, kDNSType_PTR, kStandardTTL, kDNSRecordTypeAdvisory, artype, ServiceCallback, sr);
9800 mDNS_SetupResourceRecord(&sr->RR_PTR, mDNSNULL, InterfaceID, kDNSType_PTR, kStandardTTL, kDNSRecordTypeShared, artype, ServiceCallback, sr);
9807 mDNS_SetupResourceRecord(&sr->RR_SRV, mDNSNULL, InterfaceID, kDNSType_SRV, hostTTL, recordType, artype, ServiceCallback, sr);
9808 mDNS_SetupResourceRecord(&sr->RR_TXT, mDNSNULL, InterfaceID, kDNSType_TXT, kStandardTTL, kDNSRecordTypeUnique, artype, ServiceCallback, sr);
9812 return(mDNS_RegisterNoSuchService(m, &sr->RR_SRV, name, type, domain, mDNSNULL, InterfaceID, NSSCallback, sr, (flags & regFlagIncludeP2P)));
9816 if (sr->RR_TXT.resrec.rdata->MaxRDLength < txtlen)
9817 sr->RR_TXT.resrec.rdata->MaxRDLength = txtlen;
9822 if (ConstructServiceName(&sr->RR_ADV.namestorage, (const domainlabel*)"\x09_services", (const domainname*)"\x07_dns-sd\x04_udp", domain) == mDNSNULL)
9824 if (ConstructServiceName(&sr->RR_PTR.namestorage, mDNSNULL, type, domain) == mDNSNULL) return(mStatus_BadParamErr);
9825 if (ConstructServiceName(&sr->RR_SRV.namestorage, name, type, domain) == mDNSNULL) return(mStatus_BadParamErr);
9826 AssignDomainName(&sr->RR_TXT.namestorage, sr->RR_SRV.resrec.name);
9829 AssignDomainName(&sr->RR_ADV.resrec.rdata->u.name, sr->RR_PTR.resrec.name);
9834 AssignDomainName(&sr->RR_PTR.resrec.rdata->u.name, sr->RR_SRV.resrec.name);
9835 sr->RR_PTR.Additional1 = &sr->RR_SRV;
9836 sr->RR_PTR.Additional2 = &sr->RR_TXT;
9844 AssignDomainName(&st, sr->SubTypes[i].resrec.name);
9847 mDNS_SetupResourceRecord(&sr->SubTypes[i], mDNSNULL, InterfaceID, kDNSType_PTR, kStandardTTL, kDNSRecordTypeShared, artype, ServiceCallback, sr);
9848 if (ConstructServiceName(&sr->SubTypes[i].namestorage, mDNSNULL, &st, domain) == mDNSNULL) return(mStatus_BadParamErr);
9849 AssignDomainName(&sr->SubTypes[i].resrec.rdata->u.name, &sr->RR_SRV.namestorage);
9850 sr->SubTypes[i].Additional1 = &sr->RR_SRV;
9851 sr->SubTypes[i].Additional2 = &sr->RR_TXT;
9855 sr->RR_SRV.resrec.rdata->u.srv.priority = 0;
9856 sr->RR_SRV.resrec.rdata->u.srv.weight = 0;
9857 sr->RR_SRV.resrec.rdata->u.srv.port = port;
9860 if (host && host->c[0]) AssignDomainName(&sr->RR_SRV.resrec.rdata->u.srv.target, host);
9861 else { sr->RR_SRV.AutoTarget = Target_AutoHost; sr->RR_SRV.resrec.rdata->u.srv.target.c[0] = '\0'; }
9866 if (txtinfo == mDNSNULL) sr->RR_TXT.resrec.rdlength = 0;
9867 else if (txtinfo != sr->RR_TXT.resrec.rdata->u.txt.c)
9869 sr->RR_TXT.resrec.rdlength = txtlen;
9870 if (sr->RR_TXT.resrec.rdlength > sr->RR_TXT.resrec.rdata->MaxRDLength) return(mStatus_BadParamErr);
9871 mDNSPlatformMemCopy(sr->RR_TXT.resrec.rdata->u.txt.c, txtinfo, txtlen);
9873 sr->RR_TXT.DependentOn = &sr->RR_SRV;
9879 err = mDNS_Register_internal(m, &sr->RR_SRV);
9888 if (!err) err = mDNS_Register_internal(m, &sr->RR_TXT);
9894 if (!err) err = mDNS_Register_internal(m, &sr->RR_ADV);
9895 for (i=0; i<NumSubTypes; i++) if (!err) err = mDNS_Register_internal(m, &sr->SubTypes[i]);
9896 if (!err) err = mDNS_Register_internal(m, &sr->RR_PTR);
9900 if (err) mDNS_DeregisterService(m, sr);
9904 mDNSexport mStatus mDNS_AddRecordToService(mDNS *const m, ServiceRecordSet *sr,
9910 mDNSInterfaceID InterfaceID = sr->RR_PTR.resrec.InterfaceID;
9922 mDNS_SetupResourceRecord(&extra->r, rdata, sr->RR_PTR.resrec.InterfaceID,
9923 extra->r.resrec.rrtype, ttl, kDNSRecordTypeUnique, artype, ServiceCallback, sr);
9924 AssignDomainName(&extra->r.namestorage, sr->RR_SRV.resrec.name);
9927 e = &sr->Extras;
9932 extra->r.DependentOn = &sr->RR_SRV;
9944 mDNSexport mStatus mDNS_RemoveRecordFromService(mDNS *const m, ServiceRecordSet *sr, ExtraResourceRecord *extra,
9951 e = &sr->Extras;
9970 mDNSexport mStatus mDNS_RenameAndReregisterService(mDNS *const m, ServiceRecordSet *const sr, const domainlabel *newname)
9976 const domainname *host = sr->RR_SRV.AutoTarget ? mDNSNULL : &sr->RR_SRV.resrec.rdata->u.srv.target;
9977 ExtraResourceRecord *extras = sr->Extras;
9980 DeconstructServiceName(sr->RR_SRV.resrec.name, &name1, &type, &domain);
9992 err = mDNS_RegisterService(m, sr, newname, &type, &domain,
9993 host, sr->RR_SRV.resrec.rdata->u.srv.port, sr->RR_TXT.resrec.rdata->u.txt.c, sr->RR_TXT.resrec.rdlength,
9994 sr->SubTypes, sr->NumSubTypes,
9995 sr->RR_PTR.resrec.InterfaceID, sr->ServiceCallback, sr->ServiceContext, 0);
9997 // mDNS_RegisterService() just reset sr->Extras to NULL.
10004 err = mDNS_AddRecordToService(m, sr, e, e->r.resrec.rdata, e->r.resrec.rroriginalttl, 0);
10013 mDNSexport mStatus mDNS_DeregisterService_drt(mDNS *const m, ServiceRecordSet *sr, mDNS_Dereg_type drt)
10016 if (mDNSIPPortIsZero(sr->RR_SRV.resrec.rdata->u.srv.port)) return(mDNS_DeregisterNoSuchService(m, &sr->RR_SRV));
10018 if (sr->RR_PTR.resrec.RecordType == kDNSRecordTypeUnregistered)
10020 debugf("Service set for %##s already deregistered", sr->RR_SRV.resrec.name->c);
10023 else if (sr->RR_PTR.resrec.RecordType == kDNSRecordTypeDeregistering)
10025 LogInfo("Service set for %##s already in the process of deregistering", sr->RR_SRV.resrec.name->c);
10037 sr->Conflict = mDNSfalse;
10046 e = sr->Extras;
10050 mDNS_Deregister_internal(m, &sr->RR_SRV, mDNS_Dereg_repeat);
10051 mDNS_Deregister_internal(m, &sr->RR_TXT, mDNS_Dereg_repeat);
10053 mDNS_Deregister_internal(m, &sr->RR_ADV, drt);
10055 // We deregister all of the extra records, but we leave the sr->Extras list intact
10063 for (i=0; i<sr->NumSubTypes; i++)
10064 mDNS_Deregister_internal(m, &sr->SubTypes[i], drt);
10066 status = mDNS_Deregister_internal(m, &sr->RR_PTR, drt);