| 
									
										
										
										
											2016-03-30 16:45:02 +00:00
										 |  |  | package file
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-11-05 14:39:49 +00:00
										 |  |  | import (
 | 
					
						
							| 
									
										
										
										
											2017-09-14 09:36:06 +01:00
										 |  |  | 	"github.com/coredns/coredns/plugin/file/tree"
 | 
					
						
							| 
									
										
										
										
											2016-11-05 14:39:49 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	"github.com/miekg/dns"
 | 
					
						
							|  |  |  | )
 | 
					
						
							| 
									
										
										
										
											2016-03-30 16:45:02 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-11-06 08:32:07 +00:00
										 |  |  | // ClosestEncloser returns the closest encloser for qname.
 | 
					
						
							| 
									
										
										
										
											2016-11-05 14:39:49 +00:00
										 |  |  | func (z *Zone) ClosestEncloser(qname string) (*tree.Elem, bool) {
 | 
					
						
							| 
									
										
										
										
											2016-04-02 17:49:13 +01:00
										 |  |  | 	offset, end := dns.NextLabel(qname, 0)
 | 
					
						
							| 
									
										
										
										
											2016-03-30 20:13:48 +01:00
										 |  |  | 	for !end {
 | 
					
						
							| 
									
										
										
										
											2025-04-04 20:27:39 +02:00
										 |  |  | 		elem, _ := z.Search(qname)
 | 
					
						
							| 
									
										
										
										
											2016-03-30 20:13:48 +01:00
										 |  |  | 		if elem != nil {
 | 
					
						
							| 
									
										
										
										
											2016-11-05 14:39:49 +00:00
										 |  |  | 			return elem, true
 | 
					
						
							| 
									
										
										
										
											2016-03-30 20:13:48 +01:00
										 |  |  | 		}
 | 
					
						
							| 
									
										
										
										
											2016-04-02 17:49:13 +01:00
										 |  |  | 		qname = qname[offset:]
 | 
					
						
							| 
									
										
										
										
											2016-03-30 20:13:48 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-21 07:02:41 +08:00
										 |  |  | 		offset, end = dns.NextLabel(qname, 0)
 | 
					
						
							| 
									
										
										
										
											2016-03-30 16:45:02 +00:00
										 |  |  | 	}
 | 
					
						
							| 
									
										
										
										
											2016-03-30 20:13:48 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-04 20:27:39 +02:00
										 |  |  | 	return z.Search(z.origin)
 | 
					
						
							| 
									
										
										
										
											2016-03-30 20:47:38 +01:00
										 |  |  | }
 |