Lines Matching refs:entry
203 HostEntry *entry = list->hosts + i;
204 if (mDNSSameAddress(addr, &entry->addr))
205 return entry;
214 HostEntry *entry;
225 entry = list->hosts + list->num++;
227 entry->addr = *addr;
228 for (i=0; i<HostPkt_NumTypes; i++) entry->pkts[i] = 0;
229 entry->totalops = 0;
230 for (i=0; i<OP_NumTypes; i++) entry->stat[i] = 0;
231 entry->hostname.c[0] = 0;
232 entry->revname.c[0] = 0;
233 entry->HIHardware.c[0] = 0;
234 entry->HISoftware.c[0] = 0;
235 entry->NumQueries = 0;
237 if (entry->addr.type == mDNSAddrType_IPv4)
239 mDNSv4Addr ip = entry->addr.ip.v4;
243 MakeDomainNameFromDNSNameString(&entry->revname, buffer);
246 return(entry);
255 HostEntry *entry = FindHost(addr, list);
256 if (!entry) entry = AddHost(addr, list);
257 if (!entry) return(NULL);
259 if (id.NotAnInteger != 0xFFFF) entry->pkts[t]++;
260 return(entry);
264 mDNSlocal void RecordHostInfo(HostEntry *entry, const ResourceRecord *const pktrr)
266 if (!entry->hostname.c[0])
271 entry->NumQueries = 0;
272 AssignDomainName(&entry->hostname, pktrr->name);
276 if (SameDomainName(&entry->revname, pktrr->name))
278 entry->NumQueries = 0;
279 AssignDomainName(&entry->hostname, &pktrr->rdata->u.name);
290 AssignDomainName(&entry->hostname, pktrr->name);
291 mDNSPlatformMemCopy(entry->HIHardware.c, hw, 1 + (mDNSu32)hw[0]);
292 mDNSPlatformMemCopy(entry->HISoftware.c, sw, 1 + (mDNSu32)sw[0]);
297 mDNSlocal void SendUnicastQuery(mDNS *const m, HostEntry *entry, domainname *name, mDNSu16 rrtype, mDNSInterfaceID InterfaceID)
303 const mDNSAddr *target = &entry->addr;
306 entry->LastQuery = m->timenow;
307 entry->NumQueries++;
313 if (entry->NumQueries > 2)
326 mDNSlocal void AnalyseHost(mDNS *const m, HostEntry *entry, const mDNSInterfaceID InterfaceID)
329 if (entry->NumQueries >= 4) return;
332 if (entry->NumQueries && m->timenow - entry->LastQuery < mDNSPlatformOneSecond) return;
335 if (!entry->hostname.c[0])
337 if (entry->revname.c[0])
339 SendUnicastQuery(m, entry, &entry->revname, kDNSType_PTR, InterfaceID);
340 //mprintf("%##s PTR %d\n", entry->revname.c, entry->NumQueries);
344 else if (!entry->HIHardware.c[0])
346 SendUnicastQuery(m, entry, &entry->hostname, kDNSType_HINFO, InterfaceID);
347 //mprintf("%##s HINFO %d\n", entry->hostname.c, entry->NumQueries);
406 mDNSlocal void recordstat(HostEntry *entry, const domainname *fqdn, int op, mDNSu16 rrtype)
434 if (entry)
436 entry->totalops++;
437 entry->stat[op]++;
616 HostEntry *entry = GotPacketFromHost(srcaddr, MQ ? HostPkt_Q : HostPkt_L, msg->h.id);
638 recordstat(entry, &q.qname, OP_probe, q.qtype);
649 if (msg->h.id.NotAnInteger != 0xFFFF) recordstat(entry, &q.qname, OP_query, q.qtype);
664 recordstat(entry, pkt.r.resrec.name, OP_query, pkt.r.resrec.rrtype);
685 if (entry) AnalyseHost(m, entry, InterfaceID);
693 HostEntry *entry = GotPacketFromHost(srcaddr, HostPkt_R, msg->h.id);
720 if (msg->h.id.NotAnInteger != 0xFFFF) recordstat(entry, pkt.r.resrec.name, OP_answer, pkt.r.resrec.rrtype);
721 if (entry) RecordHostInfo(entry, &pkt.r.resrec);
727 recordstat(entry, pkt.r.resrec.name, OP_goodbye, pkt.r.resrec.rrtype);
749 if (entry) RecordHostInfo(entry, &pkt.r.resrec);
752 if (entry) AnalyseHost(m, entry, InterfaceID);
759 HostEntry *entry = GotPacketFromHost(srcaddr, HostPkt_R, msg->h.id);
766 if (ptr && pkt.r.resrec.rroriginalttl && entry) RecordHostInfo(entry, &pkt.r.resrec);