Lines Matching refs:instance

806 mDNSlocal void external_start_advertising_helper(service_instance *const instance)
808 AuthRecord *st = instance->subtypes;
812 if (mDNSIPPortIsZero(instance->request->u.servicereg.port))
818 if (instance->external_advertise) LogMsg("external_start_advertising_helper: external_advertise already set!");
820 for ( i = 0; i < instance->request->u.servicereg.num_subtypes; i++)
821 external_start_advertising_service(&st[i].resrec, instance->request->flags);
823 external_start_advertising_service(&instance->srs.RR_PTR.resrec, instance->request->flags);
824 external_start_advertising_service(&instance->srs.RR_SRV.resrec, instance->request->flags);
825 external_start_advertising_service(&instance->srs.RR_TXT.resrec, instance->request->flags);
827 for (e = instance->srs.Extras; e; e = e->next)
828 external_start_advertising_service(&e->r.resrec, instance->request->flags);
830 instance->external_advertise = mDNStrue;
833 mDNSlocal void external_stop_advertising_helper(service_instance *const instance)
835 AuthRecord *st = instance->subtypes;
839 if (!instance->external_advertise) return;
843 for ( i = 0; i < instance->request->u.servicereg.num_subtypes; i++)
844 external_stop_advertising_service(&st[i].resrec, instance->request->flags);
846 external_stop_advertising_service(&instance->srs.RR_PTR.resrec, instance->request->flags);
847 external_stop_advertising_service(&instance->srs.RR_SRV.resrec, instance->request->flags);
848 external_stop_advertising_service(&instance->srs.RR_TXT.resrec, instance->request->flags);
850 for (e = instance->srs.Extras; e; e = e->next)
851 external_stop_advertising_service(&e->r.resrec, instance->request->flags);
853 instance->external_advertise = mDNSfalse;
949 service_instance *instance = srs->ServiceContext;
950 if (GenerateNTDResponse(srs->RR_SRV.resrec.name, srs->RR_SRV.resrec.InterfaceID, instance->request, &rep, reg_service_reply_op, 0, mStatus_NoError) != mStatus_NoError)
951 LogMsg("%3d: SendServiceRemovalNotification: %##s is not valid DNS-SD SRV name", instance->request->sd, srs->RR_SRV.resrec.name->c);
952 else { append_reply(instance->request, rep); instance->clientnotified = mDNSfalse; }
961 service_instance *instance;
967 instance = srs->ServiceContext;
968 if (!instance) { LogMsg("regservice_callback: srs->ServiceContext is NULL %d", result); return; }
971 if (instance->request &&
972 instance->request->u.servicereg.default_domain &&
973 !instance->default_local)
984 if (instance->request) mDNS_snprintf(prefix, sizeof(prefix), "%3d:", instance->request->sd);
989 if (!instance->request && result != mStatus_MemFree) { LogMsg("regservice_callback: instance->request is NULL %d", result); return; }
993 if (instance->request->u.servicereg.allowremotequery)
1000 for (e = instance->srs.Extras; e; e = e->next) e->r.AllowRemoteQuery = mDNStrue;
1003 if (GenerateNTDResponse(srs->RR_SRV.resrec.name, srs->RR_SRV.resrec.InterfaceID, instance->request, &rep, reg_service_reply_op, kDNSServiceFlagsAdd, result) != mStatus_NoError)
1004 LogMsg("%3d: regservice_callback: %##s is not valid DNS-SD SRV name", instance->request->sd, srs->RR_SRV.resrec.name->c);
1005 else { append_reply(instance->request, rep); instance->clientnotified = mDNStrue; }
1007 if (callExternalHelpers(instance->request->u.servicereg.InterfaceID, &instance->domain, instance->request->flags))
1010 external_start_advertising_helper(instance);
1012 if (instance->request->u.servicereg.autoname && CountPeerRegistrations(m, srs) == 0)
1017 if (instance->request && instance->renameonmemfree)
1019 external_stop_advertising_helper(instance);
1020 instance->renameonmemfree = 0;
1021 err = mDNS_RenameAndReregisterService(m, srs, &instance->request->u.servicereg.name);
1026 unlink_and_free_service_instance(instance);
1030 if (instance->request->u.servicereg.autorename)
1032 external_stop_advertising_helper(instance);
1033 if (instance->request->u.servicereg.autoname && CountPeerRegistrations(m, srs) == 0)
1041 if (instance->clientnotified) SendServiceRemovalNotification(srs);
1049 if (GenerateNTDResponse(srs->RR_SRV.resrec.name, srs->RR_SRV.resrec.InterfaceID, instance->request, &rep, reg_service_reply_op, kDNSServiceFlagsAdd, result) != mStatus_NoError)
1050 LogMsg("%3d: regservice_callback: %##s is not valid DNS-SD SRV name", instance->request->sd, srs->RR_SRV.resrec.name->c);
1051 else { append_reply(instance->request, rep); instance->clientnotified = mDNStrue; }
1053 unlink_and_free_service_instance(instance);
1060 if (GenerateNTDResponse(srs->RR_SRV.resrec.name, srs->RR_SRV.resrec.InterfaceID, instance->request, &rep, reg_service_reply_op, kDNSServiceFlagsAdd, result) != mStatus_NoError)
1061 LogMsg("%3d: regservice_callback: %##s is not valid DNS-SD SRV name", instance->request->sd, srs->RR_SRV.resrec.name->c);
1062 else { append_reply(instance->request, rep); instance->clientnotified = mDNStrue; }
1349 mDNSlocal mStatus add_record_to_service(request_state *request, service_instance *instance, mDNSu16 rrtype, mDNSu16 rdlen, const char *rdata, mDNSu32 ttl)
1351 ServiceRecordSet *srs = &instance->srs;
1380 if ( instance->external_advertise
1381 && callExternalHelpers(request->u.servicereg.InterfaceID, &instance->domain, request->flags))
1777 service_instance **ptr, *instance;
1814 instance = mallocL("service_instance", sizeof(*instance) + extra_size);
1815 if (!instance) { my_perror("ERROR: malloc"); return mStatus_NoMemoryErr; }
1817 instance->next = mDNSNULL;
1818 instance->request = request;
1819 instance->renameonmemfree = 0;
1820 instance->clientnotified = mDNSfalse;
1821 instance->default_local = (request->u.servicereg.default_domain && DomainIsLocal);
1822 instance->external_advertise = mDNSfalse;
1823 AssignDomainName(&instance->domain, domain);
1825 instance->srs.AnonData = mDNSNULL;
1828 instance->subtypes = AllocateSubTypes(request->u.servicereg.num_subtypes, request->u.servicereg.type_as_string, mDNSNULL);
1833 instance->subtypes = AllocateSubTypes(request->u.servicereg.num_subtypes, request->u.servicereg.type_as_string, &AnonData);
1835 instance->srs.AnonData = (const mDNSu8 *)AnonData;
1838 if (request->u.servicereg.num_subtypes && !instance->subtypes)
1840 unlink_and_free_service_instance(instance);
1841 instance = NULL;
1845 result = mDNS_RegisterService(&mDNSStorage, &instance->srs,
1850 instance->subtypes, request->u.servicereg.num_subtypes,
1851 interfaceID, regservice_callback, instance, coreFlags);
1855 *ptr = instance; // Append this to the end of our request->u.servicereg.instances list
1856 LogOperation("%3d: DNSServiceRegister(%##s, %u) ADDED", instance->request->sd,
1857 instance->srs.RR_SRV.resrec.name->c, mDNSVal16(request->u.servicereg.port));
1858 LogMcastS(&mDNSStorage, &instance->srs.RR_SRV, request, reg_start);
1864 unlink_and_free_service_instance(instance);
1895 // Normally we should not fail to find the specified instance
1897 // and regservice_callback then calls unlink_and_free_service_instance and disposes of that instance.
1918 // instance, clearing the backpointers, and then disposing the parent request_state object.
4025 domainname instance;
4044 if (build_domainname_from_strings(&instance, name, regtype, domain) < 0)
4051 request->sd, flags, instance.c, request->process_id, request->pid_name);
4053 external_connection_release(&instance);