mirror of
				https://github.com/coredns/coredns.git
				synced 2025-11-04 03:03:14 -05:00 
			
		
		
		
	
		
			
	
	
		
			21 lines
		
	
	
		
			519 B
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			21 lines
		
	
	
		
			519 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| 
								 | 
							
								package dnsutil
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import (
							 | 
						||
| 
								 | 
							
									"errors"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									"github.com/miekg/dns"
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// TrimZone removes the zone component from q. It returns the trimmed
							 | 
						||
| 
								 | 
							
								// name or an error is zone is longer then qname. The trimmed name will be returned
							 | 
						||
| 
								 | 
							
								// without a trailing dot.
							 | 
						||
| 
								 | 
							
								func TrimZone(q string, z string) (string, error) {
							 | 
						||
| 
								 | 
							
									zl := dns.CountLabel(z)
							 | 
						||
| 
								 | 
							
									i, ok := dns.PrevLabel(q, zl)
							 | 
						||
| 
								 | 
							
									if ok || i-1 < 0 {
							 | 
						||
| 
								 | 
							
										return "", errors.New("trimzone: overshot qname: " + q + "for zone " + z)
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									// This includes the '.', remove on return
							 | 
						||
| 
								 | 
							
									return q[:i-1], nil
							 | 
						||
| 
								 | 
							
								}
							 |