| 
									
										
										
										
											2017-02-17 15:14:14 -07:00
										 |  |  | (function (exports) { | 
					
						
							|  |  |  | 'use strict'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // A 'CNAME' record is a 32-bit value representing the IP address
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | exports.DNS_PACKER_TYPE_CNAME = function (ab, dv, total, record) { | 
					
						
							|  |  |  |   if (!record.data) { | 
					
						
							|  |  |  |     throw new Error("no data for CNAME record"); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   var cnameLen = 0; | 
					
						
							|  |  |  |   var rdLenIndex = total; | 
					
						
							|  |  |  |   total += 2; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   // RDATA
 | 
					
						
							| 
									
										
										
										
											2017-02-17 15:37:07 -07:00
										 |  |  |   // a sequence of labels
 | 
					
						
							| 
									
										
										
										
											2017-02-17 15:14:14 -07:00
										 |  |  |   record.data.split('.').forEach(function (label) { | 
					
						
							| 
									
										
										
										
											2017-10-19 12:53:56 -06:00
										 |  |  |     cnameLen += 1 + label.length; | 
					
						
							| 
									
										
										
										
											2017-02-17 15:14:14 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-19 12:53:56 -06:00
										 |  |  |     dv.setUint8(total, label.length, false); | 
					
						
							| 
									
										
										
										
											2017-03-09 19:34:27 -07:00
										 |  |  |     total += 1; | 
					
						
							| 
									
										
										
										
											2017-10-19 12:53:56 -06:00
										 |  |  | 
 | 
					
						
							|  |  |  |     label.split('').forEach(function (ch) { | 
					
						
							|  |  |  |       dv.setUint8(total, ch.charCodeAt(0), false); | 
					
						
							|  |  |  |       total += 1; | 
					
						
							| 
									
										
										
										
											2017-02-17 15:14:14 -07:00
										 |  |  |     }); | 
					
						
							|  |  |  |   }); | 
					
						
							| 
									
										
										
										
											2017-10-19 12:53:56 -06:00
										 |  |  |   dv.setUint8(total, 0x00, false); | 
					
						
							|  |  |  |   total += 1; | 
					
						
							| 
									
										
										
										
											2017-02-17 15:14:14 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |   // RDLENGTH
 | 
					
						
							| 
									
										
										
										
											2017-10-19 12:53:56 -06:00
										 |  |  |   dv.setUint16(rdLenIndex, record.data.length + 2, false); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-17 15:14:14 -07:00
										 |  |  |   return total; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | }('undefined' !== typeof window ? window : exports)); |