mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-11-04 06:52:39 +09:00 
			
		
		
		
	feat: add forcedTags field and update proto
This commit is contained in:
		@@ -36,7 +36,7 @@ var file_headscale_v1_headscale_proto_rawDesc = []byte{
 | 
				
			|||||||
	0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2f, 0x76,
 | 
						0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2f, 0x76,
 | 
				
			||||||
	0x31, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19,
 | 
						0x31, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19,
 | 
				
			||||||
	0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x70, 0x69,
 | 
						0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x70, 0x69,
 | 
				
			||||||
	0x6b, 0x65, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0xa3, 0x13, 0x0a, 0x10, 0x48, 0x65,
 | 
						0x6b, 0x65, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0xa7, 0x14, 0x0a, 0x10, 0x48, 0x65,
 | 
				
			||||||
	0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x77,
 | 
						0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x77,
 | 
				
			||||||
	0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21,
 | 
						0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21,
 | 
				
			||||||
	0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65,
 | 
						0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65,
 | 
				
			||||||
@@ -119,82 +119,90 @@ var file_headscale_v1_headscale_proto_rawDesc = []byte{
 | 
				
			|||||||
	0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
 | 
						0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
 | 
				
			||||||
	0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31,
 | 
						0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31,
 | 
				
			||||||
	0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2f, 0x7b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e,
 | 
						0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2f, 0x7b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e,
 | 
				
			||||||
	0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x80, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
 | 
						0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x81, 0x01, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
 | 
				
			||||||
	0x65, 0x72, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x12, 0x24, 0x2e, 0x68, 0x65, 0x61, 0x64,
 | 
						0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x12, 0x22, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63,
 | 
				
			||||||
	0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65,
 | 
						0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63,
 | 
				
			||||||
	0x72, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
 | 
						0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x68, 0x65,
 | 
				
			||||||
	0x25, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52,
 | 
						0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74,
 | 
				
			||||||
	0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65,
 | 
						0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
 | 
				
			||||||
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x22, 0x18,
 | 
						0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x22, 0x1c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76,
 | 
				
			||||||
	0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2f,
 | 
						0x31, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2f, 0x7b, 0x6d, 0x61, 0x63, 0x68, 0x69,
 | 
				
			||||||
	0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x7e, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65,
 | 
						0x6e, 0x65, 0x2e, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x80, 0x01, 0x0a, 0x0f, 0x52, 0x65,
 | 
				
			||||||
	0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x12, 0x22, 0x2e, 0x68, 0x65, 0x61, 0x64,
 | 
						0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x12, 0x24, 0x2e,
 | 
				
			||||||
	0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d,
 | 
						0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67,
 | 
				
			||||||
	0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e,
 | 
						0x69, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75,
 | 
				
			||||||
 | 
						0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e,
 | 
				
			||||||
 | 
						0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x63, 0x68, 0x69,
 | 
				
			||||||
 | 
						0x6e, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93,
 | 
				
			||||||
 | 
						0x02, 0x1a, 0x22, 0x18, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x63, 0x68,
 | 
				
			||||||
 | 
						0x69, 0x6e, 0x65, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x7e, 0x0a, 0x0d,
 | 
				
			||||||
 | 
						0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x12, 0x22, 0x2e,
 | 
				
			||||||
	0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c,
 | 
						0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c,
 | 
				
			||||||
	0x65, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
 | 
						0x65, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
 | 
				
			||||||
	0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x2a, 0x1c, 0x2f, 0x61, 0x70, 0x69,
 | 
						0x74, 0x1a, 0x23, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31,
 | 
				
			||||||
	0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2f, 0x7b, 0x6d, 0x61, 0x63,
 | 
						0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65,
 | 
				
			||||||
	0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x85, 0x01, 0x0a, 0x0d, 0x45, 0x78, 0x70,
 | 
						0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x2a, 0x1c,
 | 
				
			||||||
	0x69, 0x72, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x12, 0x22, 0x2e, 0x68, 0x65, 0x61,
 | 
						0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2f,
 | 
				
			||||||
	0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65,
 | 
						0x7b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x85, 0x01, 0x0a,
 | 
				
			||||||
	0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23,
 | 
						0x0d, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x12, 0x22,
 | 
				
			||||||
	0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78,
 | 
						0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78,
 | 
				
			||||||
	0x70, 0x69, 0x72, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
 | 
						0x70, 0x69, 0x72, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
 | 
				
			||||||
	0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x22, 0x23, 0x2f, 0x61, 0x70,
 | 
						0x73, 0x74, 0x1a, 0x23, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76,
 | 
				
			||||||
	0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2f, 0x7b, 0x6d, 0x61,
 | 
						0x31, 0x2e, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52,
 | 
				
			||||||
	0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65,
 | 
						0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x22,
 | 
				
			||||||
	0x12, 0x6e, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73,
 | 
						0x23, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65,
 | 
				
			||||||
	0x12, 0x21, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e,
 | 
						0x2f, 0x7b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x65, 0x78,
 | 
				
			||||||
	0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,
 | 
						0x70, 0x69, 0x72, 0x65, 0x12, 0x6e, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x68,
 | 
				
			||||||
	0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e,
 | 
						0x69, 0x6e, 0x65, 0x73, 0x12, 0x21, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65,
 | 
				
			||||||
	0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x52,
 | 
						0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73,
 | 
				
			||||||
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12,
 | 
						0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63,
 | 
				
			||||||
	0x0f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65,
 | 
						0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69,
 | 
				
			||||||
	0x12, 0x8b, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52,
 | 
						0x6e, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x17, 0x82, 0xd3, 0xe4,
 | 
				
			||||||
	0x6f, 0x75, 0x74, 0x65, 0x12, 0x24, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65,
 | 
						0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x63,
 | 
				
			||||||
	0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x6f,
 | 
						0x68, 0x69, 0x6e, 0x65, 0x12, 0x8b, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x68,
 | 
				
			||||||
	0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x68, 0x65, 0x61,
 | 
						0x69, 0x6e, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x24, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73,
 | 
				
			||||||
	0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63,
 | 
						0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69,
 | 
				
			||||||
	0x68, 0x69, 0x6e, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
 | 
						0x6e, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25,
 | 
				
			||||||
	0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x61, 0x70, 0x69, 0x2f,
 | 
						0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65,
 | 
				
			||||||
	0x76, 0x31, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2f, 0x7b, 0x6d, 0x61, 0x63, 0x68,
 | 
						0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73,
 | 
				
			||||||
	0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x12, 0x97,
 | 
						0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f,
 | 
				
			||||||
	0x01, 0x0a, 0x13, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65,
 | 
						0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2f, 0x7b,
 | 
				
			||||||
	0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61,
 | 
						0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x6f, 0x75, 0x74,
 | 
				
			||||||
	0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x63, 0x68,
 | 
						0x65, 0x73, 0x12, 0x97, 0x01, 0x0a, 0x13, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x63,
 | 
				
			||||||
	0x69, 0x6e, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
 | 
						0x68, 0x69, 0x6e, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x68, 0x65, 0x61,
 | 
				
			||||||
	0x1a, 0x29, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e,
 | 
						0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65,
 | 
				
			||||||
	0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x6f, 0x75,
 | 
						0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71,
 | 
				
			||||||
	0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4,
 | 
						0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65,
 | 
				
			||||||
	0x93, 0x02, 0x25, 0x22, 0x23, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x63,
 | 
						0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e,
 | 
				
			||||||
	0x68, 0x69, 0x6e, 0x65, 0x2f, 0x7b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64,
 | 
						0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
 | 
				
			||||||
	0x7d, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x12, 0x70, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61,
 | 
						0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x22, 0x23, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31,
 | 
				
			||||||
	0x74, 0x65, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x21, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73,
 | 
						0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2f, 0x7b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e,
 | 
				
			||||||
	0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70,
 | 
						0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x12, 0x70, 0x0a, 0x0c,
 | 
				
			||||||
	0x69, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x68, 0x65,
 | 
						0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x21, 0x2e, 0x68,
 | 
				
			||||||
	0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74,
 | 
						0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61,
 | 
				
			||||||
	0x65, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
 | 
						0x74, 0x65, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
 | 
				
			||||||
	0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x22, 0x0e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31,
 | 
						0x22, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43,
 | 
				
			||||||
	0x2f, 0x61, 0x70, 0x69, 0x6b, 0x65, 0x79, 0x3a, 0x01, 0x2a, 0x12, 0x77, 0x0a, 0x0c, 0x45, 0x78,
 | 
						0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f,
 | 
				
			||||||
	0x70, 0x69, 0x72, 0x65, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x21, 0x2e, 0x68, 0x65, 0x61,
 | 
						0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x22, 0x0e, 0x2f, 0x61, 0x70,
 | 
				
			||||||
	0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65,
 | 
						0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x6b, 0x65, 0x79, 0x3a, 0x01, 0x2a, 0x12, 0x77,
 | 
				
			||||||
	0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e,
 | 
						0x0a, 0x0c, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x21,
 | 
				
			||||||
	0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70,
 | 
						0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78,
 | 
				
			||||||
	0x69, 0x72, 0x65, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
 | 
						0x70, 0x69, 0x72, 0x65, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
 | 
				
			||||||
	0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x22, 0x15, 0x2f, 0x61, 0x70, 0x69, 0x2f,
 | 
						0x74, 0x1a, 0x22, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31,
 | 
				
			||||||
	0x76, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x6b, 0x65, 0x79, 0x2f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65,
 | 
						0x2e, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73,
 | 
				
			||||||
	0x3a, 0x01, 0x2a, 0x12, 0x6a, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x69, 0x4b, 0x65,
 | 
						0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x22, 0x15, 0x2f,
 | 
				
			||||||
	0x79, 0x73, 0x12, 0x20, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76,
 | 
						0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x6b, 0x65, 0x79, 0x2f, 0x65, 0x78,
 | 
				
			||||||
	0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71,
 | 
						0x70, 0x69, 0x72, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x6a, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x41,
 | 
				
			||||||
	0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65,
 | 
						0x70, 0x69, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x20, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61,
 | 
				
			||||||
	0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x73, 0x52,
 | 
						0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79,
 | 
				
			||||||
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12,
 | 
						0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73,
 | 
				
			||||||
	0x0e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x6b, 0x65, 0x79, 0x42,
 | 
						0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x69, 0x4b,
 | 
				
			||||||
	0x29, 0x5a, 0x27, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6a, 0x75,
 | 
						0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x16, 0x82, 0xd3, 0xe4,
 | 
				
			||||||
	0x61, 0x6e, 0x66, 0x6f, 0x6e, 0x74, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65,
 | 
						0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x70, 0x69,
 | 
				
			||||||
	0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
 | 
						0x6b, 0x65, 0x79, 0x42, 0x29, 0x5a, 0x27, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f,
 | 
				
			||||||
	0x6f, 0x33,
 | 
						0x6d, 0x2f, 0x6a, 0x75, 0x61, 0x6e, 0x66, 0x6f, 0x6e, 0x74, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x73,
 | 
				
			||||||
 | 
						0x63, 0x61, 0x6c, 0x65, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06,
 | 
				
			||||||
 | 
						0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var file_headscale_v1_headscale_proto_goTypes = []interface{}{
 | 
					var file_headscale_v1_headscale_proto_goTypes = []interface{}{
 | 
				
			||||||
@@ -208,34 +216,36 @@ var file_headscale_v1_headscale_proto_goTypes = []interface{}{
 | 
				
			|||||||
	(*ListPreAuthKeysRequest)(nil),      // 7: headscale.v1.ListPreAuthKeysRequest
 | 
						(*ListPreAuthKeysRequest)(nil),      // 7: headscale.v1.ListPreAuthKeysRequest
 | 
				
			||||||
	(*DebugCreateMachineRequest)(nil),   // 8: headscale.v1.DebugCreateMachineRequest
 | 
						(*DebugCreateMachineRequest)(nil),   // 8: headscale.v1.DebugCreateMachineRequest
 | 
				
			||||||
	(*GetMachineRequest)(nil),           // 9: headscale.v1.GetMachineRequest
 | 
						(*GetMachineRequest)(nil),           // 9: headscale.v1.GetMachineRequest
 | 
				
			||||||
	(*RegisterMachineRequest)(nil),      // 10: headscale.v1.RegisterMachineRequest
 | 
						(*UpdateMachineRequest)(nil),        // 10: headscale.v1.UpdateMachineRequest
 | 
				
			||||||
	(*DeleteMachineRequest)(nil),        // 11: headscale.v1.DeleteMachineRequest
 | 
						(*RegisterMachineRequest)(nil),      // 11: headscale.v1.RegisterMachineRequest
 | 
				
			||||||
	(*ExpireMachineRequest)(nil),        // 12: headscale.v1.ExpireMachineRequest
 | 
						(*DeleteMachineRequest)(nil),        // 12: headscale.v1.DeleteMachineRequest
 | 
				
			||||||
	(*ListMachinesRequest)(nil),         // 13: headscale.v1.ListMachinesRequest
 | 
						(*ExpireMachineRequest)(nil),        // 13: headscale.v1.ExpireMachineRequest
 | 
				
			||||||
	(*GetMachineRouteRequest)(nil),      // 14: headscale.v1.GetMachineRouteRequest
 | 
						(*ListMachinesRequest)(nil),         // 14: headscale.v1.ListMachinesRequest
 | 
				
			||||||
	(*EnableMachineRoutesRequest)(nil),  // 15: headscale.v1.EnableMachineRoutesRequest
 | 
						(*GetMachineRouteRequest)(nil),      // 15: headscale.v1.GetMachineRouteRequest
 | 
				
			||||||
	(*CreateApiKeyRequest)(nil),         // 16: headscale.v1.CreateApiKeyRequest
 | 
						(*EnableMachineRoutesRequest)(nil),  // 16: headscale.v1.EnableMachineRoutesRequest
 | 
				
			||||||
	(*ExpireApiKeyRequest)(nil),         // 17: headscale.v1.ExpireApiKeyRequest
 | 
						(*CreateApiKeyRequest)(nil),         // 17: headscale.v1.CreateApiKeyRequest
 | 
				
			||||||
	(*ListApiKeysRequest)(nil),          // 18: headscale.v1.ListApiKeysRequest
 | 
						(*ExpireApiKeyRequest)(nil),         // 18: headscale.v1.ExpireApiKeyRequest
 | 
				
			||||||
	(*GetNamespaceResponse)(nil),        // 19: headscale.v1.GetNamespaceResponse
 | 
						(*ListApiKeysRequest)(nil),          // 19: headscale.v1.ListApiKeysRequest
 | 
				
			||||||
	(*CreateNamespaceResponse)(nil),     // 20: headscale.v1.CreateNamespaceResponse
 | 
						(*GetNamespaceResponse)(nil),        // 20: headscale.v1.GetNamespaceResponse
 | 
				
			||||||
	(*RenameNamespaceResponse)(nil),     // 21: headscale.v1.RenameNamespaceResponse
 | 
						(*CreateNamespaceResponse)(nil),     // 21: headscale.v1.CreateNamespaceResponse
 | 
				
			||||||
	(*DeleteNamespaceResponse)(nil),     // 22: headscale.v1.DeleteNamespaceResponse
 | 
						(*RenameNamespaceResponse)(nil),     // 22: headscale.v1.RenameNamespaceResponse
 | 
				
			||||||
	(*ListNamespacesResponse)(nil),      // 23: headscale.v1.ListNamespacesResponse
 | 
						(*DeleteNamespaceResponse)(nil),     // 23: headscale.v1.DeleteNamespaceResponse
 | 
				
			||||||
	(*CreatePreAuthKeyResponse)(nil),    // 24: headscale.v1.CreatePreAuthKeyResponse
 | 
						(*ListNamespacesResponse)(nil),      // 24: headscale.v1.ListNamespacesResponse
 | 
				
			||||||
	(*ExpirePreAuthKeyResponse)(nil),    // 25: headscale.v1.ExpirePreAuthKeyResponse
 | 
						(*CreatePreAuthKeyResponse)(nil),    // 25: headscale.v1.CreatePreAuthKeyResponse
 | 
				
			||||||
	(*ListPreAuthKeysResponse)(nil),     // 26: headscale.v1.ListPreAuthKeysResponse
 | 
						(*ExpirePreAuthKeyResponse)(nil),    // 26: headscale.v1.ExpirePreAuthKeyResponse
 | 
				
			||||||
	(*DebugCreateMachineResponse)(nil),  // 27: headscale.v1.DebugCreateMachineResponse
 | 
						(*ListPreAuthKeysResponse)(nil),     // 27: headscale.v1.ListPreAuthKeysResponse
 | 
				
			||||||
	(*GetMachineResponse)(nil),          // 28: headscale.v1.GetMachineResponse
 | 
						(*DebugCreateMachineResponse)(nil),  // 28: headscale.v1.DebugCreateMachineResponse
 | 
				
			||||||
	(*RegisterMachineResponse)(nil),     // 29: headscale.v1.RegisterMachineResponse
 | 
						(*GetMachineResponse)(nil),          // 29: headscale.v1.GetMachineResponse
 | 
				
			||||||
	(*DeleteMachineResponse)(nil),       // 30: headscale.v1.DeleteMachineResponse
 | 
						(*UpdateMachineResponse)(nil),       // 30: headscale.v1.UpdateMachineResponse
 | 
				
			||||||
	(*ExpireMachineResponse)(nil),       // 31: headscale.v1.ExpireMachineResponse
 | 
						(*RegisterMachineResponse)(nil),     // 31: headscale.v1.RegisterMachineResponse
 | 
				
			||||||
	(*ListMachinesResponse)(nil),        // 32: headscale.v1.ListMachinesResponse
 | 
						(*DeleteMachineResponse)(nil),       // 32: headscale.v1.DeleteMachineResponse
 | 
				
			||||||
	(*GetMachineRouteResponse)(nil),     // 33: headscale.v1.GetMachineRouteResponse
 | 
						(*ExpireMachineResponse)(nil),       // 33: headscale.v1.ExpireMachineResponse
 | 
				
			||||||
	(*EnableMachineRoutesResponse)(nil), // 34: headscale.v1.EnableMachineRoutesResponse
 | 
						(*ListMachinesResponse)(nil),        // 34: headscale.v1.ListMachinesResponse
 | 
				
			||||||
	(*CreateApiKeyResponse)(nil),        // 35: headscale.v1.CreateApiKeyResponse
 | 
						(*GetMachineRouteResponse)(nil),     // 35: headscale.v1.GetMachineRouteResponse
 | 
				
			||||||
	(*ExpireApiKeyResponse)(nil),        // 36: headscale.v1.ExpireApiKeyResponse
 | 
						(*EnableMachineRoutesResponse)(nil), // 36: headscale.v1.EnableMachineRoutesResponse
 | 
				
			||||||
	(*ListApiKeysResponse)(nil),         // 37: headscale.v1.ListApiKeysResponse
 | 
						(*CreateApiKeyResponse)(nil),        // 37: headscale.v1.CreateApiKeyResponse
 | 
				
			||||||
 | 
						(*ExpireApiKeyResponse)(nil),        // 38: headscale.v1.ExpireApiKeyResponse
 | 
				
			||||||
 | 
						(*ListApiKeysResponse)(nil),         // 39: headscale.v1.ListApiKeysResponse
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
var file_headscale_v1_headscale_proto_depIdxs = []int32{
 | 
					var file_headscale_v1_headscale_proto_depIdxs = []int32{
 | 
				
			||||||
	0,  // 0: headscale.v1.HeadscaleService.GetNamespace:input_type -> headscale.v1.GetNamespaceRequest
 | 
						0,  // 0: headscale.v1.HeadscaleService.GetNamespace:input_type -> headscale.v1.GetNamespaceRequest
 | 
				
			||||||
@@ -248,36 +258,38 @@ var file_headscale_v1_headscale_proto_depIdxs = []int32{
 | 
				
			|||||||
	7,  // 7: headscale.v1.HeadscaleService.ListPreAuthKeys:input_type -> headscale.v1.ListPreAuthKeysRequest
 | 
						7,  // 7: headscale.v1.HeadscaleService.ListPreAuthKeys:input_type -> headscale.v1.ListPreAuthKeysRequest
 | 
				
			||||||
	8,  // 8: headscale.v1.HeadscaleService.DebugCreateMachine:input_type -> headscale.v1.DebugCreateMachineRequest
 | 
						8,  // 8: headscale.v1.HeadscaleService.DebugCreateMachine:input_type -> headscale.v1.DebugCreateMachineRequest
 | 
				
			||||||
	9,  // 9: headscale.v1.HeadscaleService.GetMachine:input_type -> headscale.v1.GetMachineRequest
 | 
						9,  // 9: headscale.v1.HeadscaleService.GetMachine:input_type -> headscale.v1.GetMachineRequest
 | 
				
			||||||
	10, // 10: headscale.v1.HeadscaleService.RegisterMachine:input_type -> headscale.v1.RegisterMachineRequest
 | 
						10, // 10: headscale.v1.HeadscaleService.UpdateMachine:input_type -> headscale.v1.UpdateMachineRequest
 | 
				
			||||||
	11, // 11: headscale.v1.HeadscaleService.DeleteMachine:input_type -> headscale.v1.DeleteMachineRequest
 | 
						11, // 11: headscale.v1.HeadscaleService.RegisterMachine:input_type -> headscale.v1.RegisterMachineRequest
 | 
				
			||||||
	12, // 12: headscale.v1.HeadscaleService.ExpireMachine:input_type -> headscale.v1.ExpireMachineRequest
 | 
						12, // 12: headscale.v1.HeadscaleService.DeleteMachine:input_type -> headscale.v1.DeleteMachineRequest
 | 
				
			||||||
	13, // 13: headscale.v1.HeadscaleService.ListMachines:input_type -> headscale.v1.ListMachinesRequest
 | 
						13, // 13: headscale.v1.HeadscaleService.ExpireMachine:input_type -> headscale.v1.ExpireMachineRequest
 | 
				
			||||||
	14, // 14: headscale.v1.HeadscaleService.GetMachineRoute:input_type -> headscale.v1.GetMachineRouteRequest
 | 
						14, // 14: headscale.v1.HeadscaleService.ListMachines:input_type -> headscale.v1.ListMachinesRequest
 | 
				
			||||||
	15, // 15: headscale.v1.HeadscaleService.EnableMachineRoutes:input_type -> headscale.v1.EnableMachineRoutesRequest
 | 
						15, // 15: headscale.v1.HeadscaleService.GetMachineRoute:input_type -> headscale.v1.GetMachineRouteRequest
 | 
				
			||||||
	16, // 16: headscale.v1.HeadscaleService.CreateApiKey:input_type -> headscale.v1.CreateApiKeyRequest
 | 
						16, // 16: headscale.v1.HeadscaleService.EnableMachineRoutes:input_type -> headscale.v1.EnableMachineRoutesRequest
 | 
				
			||||||
	17, // 17: headscale.v1.HeadscaleService.ExpireApiKey:input_type -> headscale.v1.ExpireApiKeyRequest
 | 
						17, // 17: headscale.v1.HeadscaleService.CreateApiKey:input_type -> headscale.v1.CreateApiKeyRequest
 | 
				
			||||||
	18, // 18: headscale.v1.HeadscaleService.ListApiKeys:input_type -> headscale.v1.ListApiKeysRequest
 | 
						18, // 18: headscale.v1.HeadscaleService.ExpireApiKey:input_type -> headscale.v1.ExpireApiKeyRequest
 | 
				
			||||||
	19, // 19: headscale.v1.HeadscaleService.GetNamespace:output_type -> headscale.v1.GetNamespaceResponse
 | 
						19, // 19: headscale.v1.HeadscaleService.ListApiKeys:input_type -> headscale.v1.ListApiKeysRequest
 | 
				
			||||||
	20, // 20: headscale.v1.HeadscaleService.CreateNamespace:output_type -> headscale.v1.CreateNamespaceResponse
 | 
						20, // 20: headscale.v1.HeadscaleService.GetNamespace:output_type -> headscale.v1.GetNamespaceResponse
 | 
				
			||||||
	21, // 21: headscale.v1.HeadscaleService.RenameNamespace:output_type -> headscale.v1.RenameNamespaceResponse
 | 
						21, // 21: headscale.v1.HeadscaleService.CreateNamespace:output_type -> headscale.v1.CreateNamespaceResponse
 | 
				
			||||||
	22, // 22: headscale.v1.HeadscaleService.DeleteNamespace:output_type -> headscale.v1.DeleteNamespaceResponse
 | 
						22, // 22: headscale.v1.HeadscaleService.RenameNamespace:output_type -> headscale.v1.RenameNamespaceResponse
 | 
				
			||||||
	23, // 23: headscale.v1.HeadscaleService.ListNamespaces:output_type -> headscale.v1.ListNamespacesResponse
 | 
						23, // 23: headscale.v1.HeadscaleService.DeleteNamespace:output_type -> headscale.v1.DeleteNamespaceResponse
 | 
				
			||||||
	24, // 24: headscale.v1.HeadscaleService.CreatePreAuthKey:output_type -> headscale.v1.CreatePreAuthKeyResponse
 | 
						24, // 24: headscale.v1.HeadscaleService.ListNamespaces:output_type -> headscale.v1.ListNamespacesResponse
 | 
				
			||||||
	25, // 25: headscale.v1.HeadscaleService.ExpirePreAuthKey:output_type -> headscale.v1.ExpirePreAuthKeyResponse
 | 
						25, // 25: headscale.v1.HeadscaleService.CreatePreAuthKey:output_type -> headscale.v1.CreatePreAuthKeyResponse
 | 
				
			||||||
	26, // 26: headscale.v1.HeadscaleService.ListPreAuthKeys:output_type -> headscale.v1.ListPreAuthKeysResponse
 | 
						26, // 26: headscale.v1.HeadscaleService.ExpirePreAuthKey:output_type -> headscale.v1.ExpirePreAuthKeyResponse
 | 
				
			||||||
	27, // 27: headscale.v1.HeadscaleService.DebugCreateMachine:output_type -> headscale.v1.DebugCreateMachineResponse
 | 
						27, // 27: headscale.v1.HeadscaleService.ListPreAuthKeys:output_type -> headscale.v1.ListPreAuthKeysResponse
 | 
				
			||||||
	28, // 28: headscale.v1.HeadscaleService.GetMachine:output_type -> headscale.v1.GetMachineResponse
 | 
						28, // 28: headscale.v1.HeadscaleService.DebugCreateMachine:output_type -> headscale.v1.DebugCreateMachineResponse
 | 
				
			||||||
	29, // 29: headscale.v1.HeadscaleService.RegisterMachine:output_type -> headscale.v1.RegisterMachineResponse
 | 
						29, // 29: headscale.v1.HeadscaleService.GetMachine:output_type -> headscale.v1.GetMachineResponse
 | 
				
			||||||
	30, // 30: headscale.v1.HeadscaleService.DeleteMachine:output_type -> headscale.v1.DeleteMachineResponse
 | 
						30, // 30: headscale.v1.HeadscaleService.UpdateMachine:output_type -> headscale.v1.UpdateMachineResponse
 | 
				
			||||||
	31, // 31: headscale.v1.HeadscaleService.ExpireMachine:output_type -> headscale.v1.ExpireMachineResponse
 | 
						31, // 31: headscale.v1.HeadscaleService.RegisterMachine:output_type -> headscale.v1.RegisterMachineResponse
 | 
				
			||||||
	32, // 32: headscale.v1.HeadscaleService.ListMachines:output_type -> headscale.v1.ListMachinesResponse
 | 
						32, // 32: headscale.v1.HeadscaleService.DeleteMachine:output_type -> headscale.v1.DeleteMachineResponse
 | 
				
			||||||
	33, // 33: headscale.v1.HeadscaleService.GetMachineRoute:output_type -> headscale.v1.GetMachineRouteResponse
 | 
						33, // 33: headscale.v1.HeadscaleService.ExpireMachine:output_type -> headscale.v1.ExpireMachineResponse
 | 
				
			||||||
	34, // 34: headscale.v1.HeadscaleService.EnableMachineRoutes:output_type -> headscale.v1.EnableMachineRoutesResponse
 | 
						34, // 34: headscale.v1.HeadscaleService.ListMachines:output_type -> headscale.v1.ListMachinesResponse
 | 
				
			||||||
	35, // 35: headscale.v1.HeadscaleService.CreateApiKey:output_type -> headscale.v1.CreateApiKeyResponse
 | 
						35, // 35: headscale.v1.HeadscaleService.GetMachineRoute:output_type -> headscale.v1.GetMachineRouteResponse
 | 
				
			||||||
	36, // 36: headscale.v1.HeadscaleService.ExpireApiKey:output_type -> headscale.v1.ExpireApiKeyResponse
 | 
						36, // 36: headscale.v1.HeadscaleService.EnableMachineRoutes:output_type -> headscale.v1.EnableMachineRoutesResponse
 | 
				
			||||||
	37, // 37: headscale.v1.HeadscaleService.ListApiKeys:output_type -> headscale.v1.ListApiKeysResponse
 | 
						37, // 37: headscale.v1.HeadscaleService.CreateApiKey:output_type -> headscale.v1.CreateApiKeyResponse
 | 
				
			||||||
	19, // [19:38] is the sub-list for method output_type
 | 
						38, // 38: headscale.v1.HeadscaleService.ExpireApiKey:output_type -> headscale.v1.ExpireApiKeyResponse
 | 
				
			||||||
	0,  // [0:19] is the sub-list for method input_type
 | 
						39, // 39: headscale.v1.HeadscaleService.ListApiKeys:output_type -> headscale.v1.ListApiKeysResponse
 | 
				
			||||||
 | 
						20, // [20:40] is the sub-list for method output_type
 | 
				
			||||||
 | 
						0,  // [0:20] is the sub-list for method input_type
 | 
				
			||||||
	0,  // [0:0] is the sub-list for extension type_name
 | 
						0,  // [0:0] is the sub-list for extension type_name
 | 
				
			||||||
	0,  // [0:0] is the sub-list for extension extendee
 | 
						0,  // [0:0] is the sub-list for extension extendee
 | 
				
			||||||
	0,  // [0:0] is the sub-list for field type_name
 | 
						0,  // [0:0] is the sub-list for field type_name
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -449,6 +449,74 @@ func local_request_HeadscaleService_GetMachine_0(ctx context.Context, marshaler
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func request_HeadscaleService_UpdateMachine_0(ctx context.Context, marshaler runtime.Marshaler, client HeadscaleServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
 | 
				
			||||||
 | 
						var protoReq UpdateMachineRequest
 | 
				
			||||||
 | 
						var metadata runtime.ServerMetadata
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						newReader, berr := utilities.IOReaderFactory(req.Body)
 | 
				
			||||||
 | 
						if berr != nil {
 | 
				
			||||||
 | 
							return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
 | 
				
			||||||
 | 
							return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var (
 | 
				
			||||||
 | 
							val string
 | 
				
			||||||
 | 
							ok  bool
 | 
				
			||||||
 | 
							err error
 | 
				
			||||||
 | 
							_   = err
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						val, ok = pathParams["machine.id"]
 | 
				
			||||||
 | 
						if !ok {
 | 
				
			||||||
 | 
							return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "machine.id")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err = runtime.PopulateFieldFromPath(&protoReq, "machine.id", val)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "machine.id", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						msg, err := client.UpdateMachine(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
 | 
				
			||||||
 | 
						return msg, metadata, err
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func local_request_HeadscaleService_UpdateMachine_0(ctx context.Context, marshaler runtime.Marshaler, server HeadscaleServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
 | 
				
			||||||
 | 
						var protoReq UpdateMachineRequest
 | 
				
			||||||
 | 
						var metadata runtime.ServerMetadata
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						newReader, berr := utilities.IOReaderFactory(req.Body)
 | 
				
			||||||
 | 
						if berr != nil {
 | 
				
			||||||
 | 
							return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
 | 
				
			||||||
 | 
							return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var (
 | 
				
			||||||
 | 
							val string
 | 
				
			||||||
 | 
							ok  bool
 | 
				
			||||||
 | 
							err error
 | 
				
			||||||
 | 
							_   = err
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						val, ok = pathParams["machine.id"]
 | 
				
			||||||
 | 
						if !ok {
 | 
				
			||||||
 | 
							return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "machine.id")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err = runtime.PopulateFieldFromPath(&protoReq, "machine.id", val)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "machine.id", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						msg, err := server.UpdateMachine(ctx, &protoReq)
 | 
				
			||||||
 | 
						return msg, metadata, err
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var (
 | 
					var (
 | 
				
			||||||
	filter_HeadscaleService_RegisterMachine_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
 | 
						filter_HeadscaleService_RegisterMachine_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -1069,6 +1137,29 @@ func RegisterHeadscaleServiceHandlerServer(ctx context.Context, mux *runtime.Ser
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mux.Handle("POST", pattern_HeadscaleService_UpdateMachine_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
 | 
				
			||||||
 | 
							ctx, cancel := context.WithCancel(req.Context())
 | 
				
			||||||
 | 
							defer cancel()
 | 
				
			||||||
 | 
							var stream runtime.ServerTransportStream
 | 
				
			||||||
 | 
							ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
 | 
				
			||||||
 | 
							inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
 | 
				
			||||||
 | 
							rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/headscale.v1.HeadscaleService/UpdateMachine", runtime.WithHTTPPathPattern("/api/v1/machine/{machine.id}"))
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							resp, md, err := local_request_HeadscaleService_UpdateMachine_0(rctx, inboundMarshaler, server, req, pathParams)
 | 
				
			||||||
 | 
							md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
 | 
				
			||||||
 | 
							ctx = runtime.NewServerMetadataContext(ctx, md)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							forward_HeadscaleService_UpdateMachine_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	mux.Handle("POST", pattern_HeadscaleService_RegisterMachine_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
 | 
						mux.Handle("POST", pattern_HeadscaleService_RegisterMachine_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
 | 
				
			||||||
		ctx, cancel := context.WithCancel(req.Context())
 | 
							ctx, cancel := context.WithCancel(req.Context())
 | 
				
			||||||
		defer cancel()
 | 
							defer cancel()
 | 
				
			||||||
@@ -1517,6 +1608,26 @@ func RegisterHeadscaleServiceHandlerClient(ctx context.Context, mux *runtime.Ser
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mux.Handle("POST", pattern_HeadscaleService_UpdateMachine_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
 | 
				
			||||||
 | 
							ctx, cancel := context.WithCancel(req.Context())
 | 
				
			||||||
 | 
							defer cancel()
 | 
				
			||||||
 | 
							inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
 | 
				
			||||||
 | 
							rctx, err := runtime.AnnotateContext(ctx, mux, req, "/headscale.v1.HeadscaleService/UpdateMachine", runtime.WithHTTPPathPattern("/api/v1/machine/{machine.id}"))
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							resp, md, err := request_HeadscaleService_UpdateMachine_0(rctx, inboundMarshaler, client, req, pathParams)
 | 
				
			||||||
 | 
							ctx = runtime.NewServerMetadataContext(ctx, md)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							forward_HeadscaleService_UpdateMachine_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	mux.Handle("POST", pattern_HeadscaleService_RegisterMachine_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
 | 
						mux.Handle("POST", pattern_HeadscaleService_RegisterMachine_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
 | 
				
			||||||
		ctx, cancel := context.WithCancel(req.Context())
 | 
							ctx, cancel := context.WithCancel(req.Context())
 | 
				
			||||||
		defer cancel()
 | 
							defer cancel()
 | 
				
			||||||
@@ -1721,6 +1832,8 @@ var (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	pattern_HeadscaleService_GetMachine_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"api", "v1", "machine", "machine_id"}, ""))
 | 
						pattern_HeadscaleService_GetMachine_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"api", "v1", "machine", "machine_id"}, ""))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						pattern_HeadscaleService_UpdateMachine_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"api", "v1", "machine", "machine.id"}, ""))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	pattern_HeadscaleService_RegisterMachine_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v1", "machine", "register"}, ""))
 | 
						pattern_HeadscaleService_RegisterMachine_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v1", "machine", "register"}, ""))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	pattern_HeadscaleService_DeleteMachine_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"api", "v1", "machine", "machine_id"}, ""))
 | 
						pattern_HeadscaleService_DeleteMachine_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"api", "v1", "machine", "machine_id"}, ""))
 | 
				
			||||||
@@ -1761,6 +1874,8 @@ var (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	forward_HeadscaleService_GetMachine_0 = runtime.ForwardResponseMessage
 | 
						forward_HeadscaleService_GetMachine_0 = runtime.ForwardResponseMessage
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						forward_HeadscaleService_UpdateMachine_0 = runtime.ForwardResponseMessage
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	forward_HeadscaleService_RegisterMachine_0 = runtime.ForwardResponseMessage
 | 
						forward_HeadscaleService_RegisterMachine_0 = runtime.ForwardResponseMessage
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	forward_HeadscaleService_DeleteMachine_0 = runtime.ForwardResponseMessage
 | 
						forward_HeadscaleService_DeleteMachine_0 = runtime.ForwardResponseMessage
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -35,6 +35,7 @@ type HeadscaleServiceClient interface {
 | 
				
			|||||||
	// --- Machine start ---
 | 
						// --- Machine start ---
 | 
				
			||||||
	DebugCreateMachine(ctx context.Context, in *DebugCreateMachineRequest, opts ...grpc.CallOption) (*DebugCreateMachineResponse, error)
 | 
						DebugCreateMachine(ctx context.Context, in *DebugCreateMachineRequest, opts ...grpc.CallOption) (*DebugCreateMachineResponse, error)
 | 
				
			||||||
	GetMachine(ctx context.Context, in *GetMachineRequest, opts ...grpc.CallOption) (*GetMachineResponse, error)
 | 
						GetMachine(ctx context.Context, in *GetMachineRequest, opts ...grpc.CallOption) (*GetMachineResponse, error)
 | 
				
			||||||
 | 
						UpdateMachine(ctx context.Context, in *UpdateMachineRequest, opts ...grpc.CallOption) (*UpdateMachineResponse, error)
 | 
				
			||||||
	RegisterMachine(ctx context.Context, in *RegisterMachineRequest, opts ...grpc.CallOption) (*RegisterMachineResponse, error)
 | 
						RegisterMachine(ctx context.Context, in *RegisterMachineRequest, opts ...grpc.CallOption) (*RegisterMachineResponse, error)
 | 
				
			||||||
	DeleteMachine(ctx context.Context, in *DeleteMachineRequest, opts ...grpc.CallOption) (*DeleteMachineResponse, error)
 | 
						DeleteMachine(ctx context.Context, in *DeleteMachineRequest, opts ...grpc.CallOption) (*DeleteMachineResponse, error)
 | 
				
			||||||
	ExpireMachine(ctx context.Context, in *ExpireMachineRequest, opts ...grpc.CallOption) (*ExpireMachineResponse, error)
 | 
						ExpireMachine(ctx context.Context, in *ExpireMachineRequest, opts ...grpc.CallOption) (*ExpireMachineResponse, error)
 | 
				
			||||||
@@ -146,6 +147,15 @@ func (c *headscaleServiceClient) GetMachine(ctx context.Context, in *GetMachineR
 | 
				
			|||||||
	return out, nil
 | 
						return out, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (c *headscaleServiceClient) UpdateMachine(ctx context.Context, in *UpdateMachineRequest, opts ...grpc.CallOption) (*UpdateMachineResponse, error) {
 | 
				
			||||||
 | 
						out := new(UpdateMachineResponse)
 | 
				
			||||||
 | 
						err := c.cc.Invoke(ctx, "/headscale.v1.HeadscaleService/UpdateMachine", in, out, opts...)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return out, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (c *headscaleServiceClient) RegisterMachine(ctx context.Context, in *RegisterMachineRequest, opts ...grpc.CallOption) (*RegisterMachineResponse, error) {
 | 
					func (c *headscaleServiceClient) RegisterMachine(ctx context.Context, in *RegisterMachineRequest, opts ...grpc.CallOption) (*RegisterMachineResponse, error) {
 | 
				
			||||||
	out := new(RegisterMachineResponse)
 | 
						out := new(RegisterMachineResponse)
 | 
				
			||||||
	err := c.cc.Invoke(ctx, "/headscale.v1.HeadscaleService/RegisterMachine", in, out, opts...)
 | 
						err := c.cc.Invoke(ctx, "/headscale.v1.HeadscaleService/RegisterMachine", in, out, opts...)
 | 
				
			||||||
@@ -244,6 +254,7 @@ type HeadscaleServiceServer interface {
 | 
				
			|||||||
	// --- Machine start ---
 | 
						// --- Machine start ---
 | 
				
			||||||
	DebugCreateMachine(context.Context, *DebugCreateMachineRequest) (*DebugCreateMachineResponse, error)
 | 
						DebugCreateMachine(context.Context, *DebugCreateMachineRequest) (*DebugCreateMachineResponse, error)
 | 
				
			||||||
	GetMachine(context.Context, *GetMachineRequest) (*GetMachineResponse, error)
 | 
						GetMachine(context.Context, *GetMachineRequest) (*GetMachineResponse, error)
 | 
				
			||||||
 | 
						UpdateMachine(context.Context, *UpdateMachineRequest) (*UpdateMachineResponse, error)
 | 
				
			||||||
	RegisterMachine(context.Context, *RegisterMachineRequest) (*RegisterMachineResponse, error)
 | 
						RegisterMachine(context.Context, *RegisterMachineRequest) (*RegisterMachineResponse, error)
 | 
				
			||||||
	DeleteMachine(context.Context, *DeleteMachineRequest) (*DeleteMachineResponse, error)
 | 
						DeleteMachine(context.Context, *DeleteMachineRequest) (*DeleteMachineResponse, error)
 | 
				
			||||||
	ExpireMachine(context.Context, *ExpireMachineRequest) (*ExpireMachineResponse, error)
 | 
						ExpireMachine(context.Context, *ExpireMachineRequest) (*ExpireMachineResponse, error)
 | 
				
			||||||
@@ -292,6 +303,9 @@ func (UnimplementedHeadscaleServiceServer) DebugCreateMachine(context.Context, *
 | 
				
			|||||||
func (UnimplementedHeadscaleServiceServer) GetMachine(context.Context, *GetMachineRequest) (*GetMachineResponse, error) {
 | 
					func (UnimplementedHeadscaleServiceServer) GetMachine(context.Context, *GetMachineRequest) (*GetMachineResponse, error) {
 | 
				
			||||||
	return nil, status.Errorf(codes.Unimplemented, "method GetMachine not implemented")
 | 
						return nil, status.Errorf(codes.Unimplemented, "method GetMachine not implemented")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					func (UnimplementedHeadscaleServiceServer) UpdateMachine(context.Context, *UpdateMachineRequest) (*UpdateMachineResponse, error) {
 | 
				
			||||||
 | 
						return nil, status.Errorf(codes.Unimplemented, "method UpdateMachine not implemented")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
func (UnimplementedHeadscaleServiceServer) RegisterMachine(context.Context, *RegisterMachineRequest) (*RegisterMachineResponse, error) {
 | 
					func (UnimplementedHeadscaleServiceServer) RegisterMachine(context.Context, *RegisterMachineRequest) (*RegisterMachineResponse, error) {
 | 
				
			||||||
	return nil, status.Errorf(codes.Unimplemented, "method RegisterMachine not implemented")
 | 
						return nil, status.Errorf(codes.Unimplemented, "method RegisterMachine not implemented")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -512,6 +526,24 @@ func _HeadscaleService_GetMachine_Handler(srv interface{}, ctx context.Context,
 | 
				
			|||||||
	return interceptor(ctx, in, info, handler)
 | 
						return interceptor(ctx, in, info, handler)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func _HeadscaleService_UpdateMachine_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 | 
				
			||||||
 | 
						in := new(UpdateMachineRequest)
 | 
				
			||||||
 | 
						if err := dec(in); err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if interceptor == nil {
 | 
				
			||||||
 | 
							return srv.(HeadscaleServiceServer).UpdateMachine(ctx, in)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						info := &grpc.UnaryServerInfo{
 | 
				
			||||||
 | 
							Server:     srv,
 | 
				
			||||||
 | 
							FullMethod: "/headscale.v1.HeadscaleService/UpdateMachine",
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 | 
				
			||||||
 | 
							return srv.(HeadscaleServiceServer).UpdateMachine(ctx, req.(*UpdateMachineRequest))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return interceptor(ctx, in, info, handler)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func _HeadscaleService_RegisterMachine_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 | 
					func _HeadscaleService_RegisterMachine_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 | 
				
			||||||
	in := new(RegisterMachineRequest)
 | 
						in := new(RegisterMachineRequest)
 | 
				
			||||||
	if err := dec(in); err != nil {
 | 
						if err := dec(in); err != nil {
 | 
				
			||||||
@@ -721,6 +753,10 @@ var HeadscaleService_ServiceDesc = grpc.ServiceDesc{
 | 
				
			|||||||
			MethodName: "GetMachine",
 | 
								MethodName: "GetMachine",
 | 
				
			||||||
			Handler:    _HeadscaleService_GetMachine_Handler,
 | 
								Handler:    _HeadscaleService_GetMachine_Handler,
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								MethodName: "UpdateMachine",
 | 
				
			||||||
 | 
								Handler:    _HeadscaleService_UpdateMachine_Handler,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			MethodName: "RegisterMachine",
 | 
								MethodName: "RegisterMachine",
 | 
				
			||||||
			Handler:    _HeadscaleService_RegisterMachine_Handler,
 | 
								Handler:    _HeadscaleService_RegisterMachine_Handler,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -91,6 +91,7 @@ type Machine struct {
 | 
				
			|||||||
	PreAuthKey           *PreAuthKey            `protobuf:"bytes,11,opt,name=pre_auth_key,json=preAuthKey,proto3" json:"pre_auth_key,omitempty"`
 | 
						PreAuthKey           *PreAuthKey            `protobuf:"bytes,11,opt,name=pre_auth_key,json=preAuthKey,proto3" json:"pre_auth_key,omitempty"`
 | 
				
			||||||
	CreatedAt            *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
 | 
						CreatedAt            *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
 | 
				
			||||||
	RegisterMethod       RegisterMethod         `protobuf:"varint,13,opt,name=register_method,json=registerMethod,proto3,enum=headscale.v1.RegisterMethod" json:"register_method,omitempty"`
 | 
						RegisterMethod       RegisterMethod         `protobuf:"varint,13,opt,name=register_method,json=registerMethod,proto3,enum=headscale.v1.RegisterMethod" json:"register_method,omitempty"`
 | 
				
			||||||
 | 
						ForcedTags           []string               `protobuf:"bytes,14,rep,name=forced_tags,json=forcedTags,proto3" json:"forced_tags,omitempty"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *Machine) Reset() {
 | 
					func (x *Machine) Reset() {
 | 
				
			||||||
@@ -216,6 +217,13 @@ func (x *Machine) GetRegisterMethod() RegisterMethod {
 | 
				
			|||||||
	return RegisterMethod_REGISTER_METHOD_UNSPECIFIED
 | 
						return RegisterMethod_REGISTER_METHOD_UNSPECIFIED
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *Machine) GetForcedTags() []string {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.ForcedTags
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type RegisterMachineRequest struct {
 | 
					type RegisterMachineRequest struct {
 | 
				
			||||||
	state         protoimpl.MessageState
 | 
						state         protoimpl.MessageState
 | 
				
			||||||
	sizeCache     protoimpl.SizeCache
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
@@ -412,6 +420,100 @@ func (x *GetMachineResponse) GetMachine() *Machine {
 | 
				
			|||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type UpdateMachineRequest struct {
 | 
				
			||||||
 | 
						state         protoimpl.MessageState
 | 
				
			||||||
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
 | 
						unknownFields protoimpl.UnknownFields
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Machine *Machine `protobuf:"bytes,1,opt,name=machine,proto3" json:"machine,omitempty"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *UpdateMachineRequest) Reset() {
 | 
				
			||||||
 | 
						*x = UpdateMachineRequest{}
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
 | 
							mi := &file_headscale_v1_machine_proto_msgTypes[5]
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *UpdateMachineRequest) String() string {
 | 
				
			||||||
 | 
						return protoimpl.X.MessageStringOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (*UpdateMachineRequest) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *UpdateMachineRequest) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
 | 
						mi := &file_headscale_v1_machine_proto_msgTypes[5]
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
 | 
								ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return ms
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return mi.MessageOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Deprecated: Use UpdateMachineRequest.ProtoReflect.Descriptor instead.
 | 
				
			||||||
 | 
					func (*UpdateMachineRequest) Descriptor() ([]byte, []int) {
 | 
				
			||||||
 | 
						return file_headscale_v1_machine_proto_rawDescGZIP(), []int{5}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *UpdateMachineRequest) GetMachine() *Machine {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Machine
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type UpdateMachineResponse struct {
 | 
				
			||||||
 | 
						state         protoimpl.MessageState
 | 
				
			||||||
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
 | 
						unknownFields protoimpl.UnknownFields
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Machine *Machine `protobuf:"bytes,1,opt,name=machine,proto3" json:"machine,omitempty"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *UpdateMachineResponse) Reset() {
 | 
				
			||||||
 | 
						*x = UpdateMachineResponse{}
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
 | 
							mi := &file_headscale_v1_machine_proto_msgTypes[6]
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *UpdateMachineResponse) String() string {
 | 
				
			||||||
 | 
						return protoimpl.X.MessageStringOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (*UpdateMachineResponse) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *UpdateMachineResponse) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
 | 
						mi := &file_headscale_v1_machine_proto_msgTypes[6]
 | 
				
			||||||
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
 | 
								ms.StoreMessageInfo(mi)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return ms
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return mi.MessageOf(x)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Deprecated: Use UpdateMachineResponse.ProtoReflect.Descriptor instead.
 | 
				
			||||||
 | 
					func (*UpdateMachineResponse) Descriptor() ([]byte, []int) {
 | 
				
			||||||
 | 
						return file_headscale_v1_machine_proto_rawDescGZIP(), []int{6}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (x *UpdateMachineResponse) GetMachine() *Machine {
 | 
				
			||||||
 | 
						if x != nil {
 | 
				
			||||||
 | 
							return x.Machine
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type DeleteMachineRequest struct {
 | 
					type DeleteMachineRequest struct {
 | 
				
			||||||
	state         protoimpl.MessageState
 | 
						state         protoimpl.MessageState
 | 
				
			||||||
	sizeCache     protoimpl.SizeCache
 | 
						sizeCache     protoimpl.SizeCache
 | 
				
			||||||
@@ -423,7 +525,7 @@ type DeleteMachineRequest struct {
 | 
				
			|||||||
func (x *DeleteMachineRequest) Reset() {
 | 
					func (x *DeleteMachineRequest) Reset() {
 | 
				
			||||||
	*x = DeleteMachineRequest{}
 | 
						*x = DeleteMachineRequest{}
 | 
				
			||||||
	if protoimpl.UnsafeEnabled {
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
		mi := &file_headscale_v1_machine_proto_msgTypes[5]
 | 
							mi := &file_headscale_v1_machine_proto_msgTypes[7]
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		ms.StoreMessageInfo(mi)
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -436,7 +538,7 @@ func (x *DeleteMachineRequest) String() string {
 | 
				
			|||||||
func (*DeleteMachineRequest) ProtoMessage() {}
 | 
					func (*DeleteMachineRequest) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *DeleteMachineRequest) ProtoReflect() protoreflect.Message {
 | 
					func (x *DeleteMachineRequest) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
	mi := &file_headscale_v1_machine_proto_msgTypes[5]
 | 
						mi := &file_headscale_v1_machine_proto_msgTypes[7]
 | 
				
			||||||
	if protoimpl.UnsafeEnabled && x != nil {
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		if ms.LoadMessageInfo() == nil {
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
@@ -449,7 +551,7 @@ func (x *DeleteMachineRequest) ProtoReflect() protoreflect.Message {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Deprecated: Use DeleteMachineRequest.ProtoReflect.Descriptor instead.
 | 
					// Deprecated: Use DeleteMachineRequest.ProtoReflect.Descriptor instead.
 | 
				
			||||||
func (*DeleteMachineRequest) Descriptor() ([]byte, []int) {
 | 
					func (*DeleteMachineRequest) Descriptor() ([]byte, []int) {
 | 
				
			||||||
	return file_headscale_v1_machine_proto_rawDescGZIP(), []int{5}
 | 
						return file_headscale_v1_machine_proto_rawDescGZIP(), []int{7}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *DeleteMachineRequest) GetMachineId() uint64 {
 | 
					func (x *DeleteMachineRequest) GetMachineId() uint64 {
 | 
				
			||||||
@@ -468,7 +570,7 @@ type DeleteMachineResponse struct {
 | 
				
			|||||||
func (x *DeleteMachineResponse) Reset() {
 | 
					func (x *DeleteMachineResponse) Reset() {
 | 
				
			||||||
	*x = DeleteMachineResponse{}
 | 
						*x = DeleteMachineResponse{}
 | 
				
			||||||
	if protoimpl.UnsafeEnabled {
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
		mi := &file_headscale_v1_machine_proto_msgTypes[6]
 | 
							mi := &file_headscale_v1_machine_proto_msgTypes[8]
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		ms.StoreMessageInfo(mi)
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -481,7 +583,7 @@ func (x *DeleteMachineResponse) String() string {
 | 
				
			|||||||
func (*DeleteMachineResponse) ProtoMessage() {}
 | 
					func (*DeleteMachineResponse) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *DeleteMachineResponse) ProtoReflect() protoreflect.Message {
 | 
					func (x *DeleteMachineResponse) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
	mi := &file_headscale_v1_machine_proto_msgTypes[6]
 | 
						mi := &file_headscale_v1_machine_proto_msgTypes[8]
 | 
				
			||||||
	if protoimpl.UnsafeEnabled && x != nil {
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		if ms.LoadMessageInfo() == nil {
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
@@ -494,7 +596,7 @@ func (x *DeleteMachineResponse) ProtoReflect() protoreflect.Message {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Deprecated: Use DeleteMachineResponse.ProtoReflect.Descriptor instead.
 | 
					// Deprecated: Use DeleteMachineResponse.ProtoReflect.Descriptor instead.
 | 
				
			||||||
func (*DeleteMachineResponse) Descriptor() ([]byte, []int) {
 | 
					func (*DeleteMachineResponse) Descriptor() ([]byte, []int) {
 | 
				
			||||||
	return file_headscale_v1_machine_proto_rawDescGZIP(), []int{6}
 | 
						return file_headscale_v1_machine_proto_rawDescGZIP(), []int{8}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ExpireMachineRequest struct {
 | 
					type ExpireMachineRequest struct {
 | 
				
			||||||
@@ -508,7 +610,7 @@ type ExpireMachineRequest struct {
 | 
				
			|||||||
func (x *ExpireMachineRequest) Reset() {
 | 
					func (x *ExpireMachineRequest) Reset() {
 | 
				
			||||||
	*x = ExpireMachineRequest{}
 | 
						*x = ExpireMachineRequest{}
 | 
				
			||||||
	if protoimpl.UnsafeEnabled {
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
		mi := &file_headscale_v1_machine_proto_msgTypes[7]
 | 
							mi := &file_headscale_v1_machine_proto_msgTypes[9]
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		ms.StoreMessageInfo(mi)
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -521,7 +623,7 @@ func (x *ExpireMachineRequest) String() string {
 | 
				
			|||||||
func (*ExpireMachineRequest) ProtoMessage() {}
 | 
					func (*ExpireMachineRequest) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *ExpireMachineRequest) ProtoReflect() protoreflect.Message {
 | 
					func (x *ExpireMachineRequest) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
	mi := &file_headscale_v1_machine_proto_msgTypes[7]
 | 
						mi := &file_headscale_v1_machine_proto_msgTypes[9]
 | 
				
			||||||
	if protoimpl.UnsafeEnabled && x != nil {
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		if ms.LoadMessageInfo() == nil {
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
@@ -534,7 +636,7 @@ func (x *ExpireMachineRequest) ProtoReflect() protoreflect.Message {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Deprecated: Use ExpireMachineRequest.ProtoReflect.Descriptor instead.
 | 
					// Deprecated: Use ExpireMachineRequest.ProtoReflect.Descriptor instead.
 | 
				
			||||||
func (*ExpireMachineRequest) Descriptor() ([]byte, []int) {
 | 
					func (*ExpireMachineRequest) Descriptor() ([]byte, []int) {
 | 
				
			||||||
	return file_headscale_v1_machine_proto_rawDescGZIP(), []int{7}
 | 
						return file_headscale_v1_machine_proto_rawDescGZIP(), []int{9}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *ExpireMachineRequest) GetMachineId() uint64 {
 | 
					func (x *ExpireMachineRequest) GetMachineId() uint64 {
 | 
				
			||||||
@@ -555,7 +657,7 @@ type ExpireMachineResponse struct {
 | 
				
			|||||||
func (x *ExpireMachineResponse) Reset() {
 | 
					func (x *ExpireMachineResponse) Reset() {
 | 
				
			||||||
	*x = ExpireMachineResponse{}
 | 
						*x = ExpireMachineResponse{}
 | 
				
			||||||
	if protoimpl.UnsafeEnabled {
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
		mi := &file_headscale_v1_machine_proto_msgTypes[8]
 | 
							mi := &file_headscale_v1_machine_proto_msgTypes[10]
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		ms.StoreMessageInfo(mi)
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -568,7 +670,7 @@ func (x *ExpireMachineResponse) String() string {
 | 
				
			|||||||
func (*ExpireMachineResponse) ProtoMessage() {}
 | 
					func (*ExpireMachineResponse) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *ExpireMachineResponse) ProtoReflect() protoreflect.Message {
 | 
					func (x *ExpireMachineResponse) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
	mi := &file_headscale_v1_machine_proto_msgTypes[8]
 | 
						mi := &file_headscale_v1_machine_proto_msgTypes[10]
 | 
				
			||||||
	if protoimpl.UnsafeEnabled && x != nil {
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		if ms.LoadMessageInfo() == nil {
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
@@ -581,7 +683,7 @@ func (x *ExpireMachineResponse) ProtoReflect() protoreflect.Message {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Deprecated: Use ExpireMachineResponse.ProtoReflect.Descriptor instead.
 | 
					// Deprecated: Use ExpireMachineResponse.ProtoReflect.Descriptor instead.
 | 
				
			||||||
func (*ExpireMachineResponse) Descriptor() ([]byte, []int) {
 | 
					func (*ExpireMachineResponse) Descriptor() ([]byte, []int) {
 | 
				
			||||||
	return file_headscale_v1_machine_proto_rawDescGZIP(), []int{8}
 | 
						return file_headscale_v1_machine_proto_rawDescGZIP(), []int{10}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *ExpireMachineResponse) GetMachine() *Machine {
 | 
					func (x *ExpireMachineResponse) GetMachine() *Machine {
 | 
				
			||||||
@@ -602,7 +704,7 @@ type ListMachinesRequest struct {
 | 
				
			|||||||
func (x *ListMachinesRequest) Reset() {
 | 
					func (x *ListMachinesRequest) Reset() {
 | 
				
			||||||
	*x = ListMachinesRequest{}
 | 
						*x = ListMachinesRequest{}
 | 
				
			||||||
	if protoimpl.UnsafeEnabled {
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
		mi := &file_headscale_v1_machine_proto_msgTypes[9]
 | 
							mi := &file_headscale_v1_machine_proto_msgTypes[11]
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		ms.StoreMessageInfo(mi)
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -615,7 +717,7 @@ func (x *ListMachinesRequest) String() string {
 | 
				
			|||||||
func (*ListMachinesRequest) ProtoMessage() {}
 | 
					func (*ListMachinesRequest) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *ListMachinesRequest) ProtoReflect() protoreflect.Message {
 | 
					func (x *ListMachinesRequest) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
	mi := &file_headscale_v1_machine_proto_msgTypes[9]
 | 
						mi := &file_headscale_v1_machine_proto_msgTypes[11]
 | 
				
			||||||
	if protoimpl.UnsafeEnabled && x != nil {
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		if ms.LoadMessageInfo() == nil {
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
@@ -628,7 +730,7 @@ func (x *ListMachinesRequest) ProtoReflect() protoreflect.Message {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Deprecated: Use ListMachinesRequest.ProtoReflect.Descriptor instead.
 | 
					// Deprecated: Use ListMachinesRequest.ProtoReflect.Descriptor instead.
 | 
				
			||||||
func (*ListMachinesRequest) Descriptor() ([]byte, []int) {
 | 
					func (*ListMachinesRequest) Descriptor() ([]byte, []int) {
 | 
				
			||||||
	return file_headscale_v1_machine_proto_rawDescGZIP(), []int{9}
 | 
						return file_headscale_v1_machine_proto_rawDescGZIP(), []int{11}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *ListMachinesRequest) GetNamespace() string {
 | 
					func (x *ListMachinesRequest) GetNamespace() string {
 | 
				
			||||||
@@ -649,7 +751,7 @@ type ListMachinesResponse struct {
 | 
				
			|||||||
func (x *ListMachinesResponse) Reset() {
 | 
					func (x *ListMachinesResponse) Reset() {
 | 
				
			||||||
	*x = ListMachinesResponse{}
 | 
						*x = ListMachinesResponse{}
 | 
				
			||||||
	if protoimpl.UnsafeEnabled {
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
		mi := &file_headscale_v1_machine_proto_msgTypes[10]
 | 
							mi := &file_headscale_v1_machine_proto_msgTypes[12]
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		ms.StoreMessageInfo(mi)
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -662,7 +764,7 @@ func (x *ListMachinesResponse) String() string {
 | 
				
			|||||||
func (*ListMachinesResponse) ProtoMessage() {}
 | 
					func (*ListMachinesResponse) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *ListMachinesResponse) ProtoReflect() protoreflect.Message {
 | 
					func (x *ListMachinesResponse) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
	mi := &file_headscale_v1_machine_proto_msgTypes[10]
 | 
						mi := &file_headscale_v1_machine_proto_msgTypes[12]
 | 
				
			||||||
	if protoimpl.UnsafeEnabled && x != nil {
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		if ms.LoadMessageInfo() == nil {
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
@@ -675,7 +777,7 @@ func (x *ListMachinesResponse) ProtoReflect() protoreflect.Message {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Deprecated: Use ListMachinesResponse.ProtoReflect.Descriptor instead.
 | 
					// Deprecated: Use ListMachinesResponse.ProtoReflect.Descriptor instead.
 | 
				
			||||||
func (*ListMachinesResponse) Descriptor() ([]byte, []int) {
 | 
					func (*ListMachinesResponse) Descriptor() ([]byte, []int) {
 | 
				
			||||||
	return file_headscale_v1_machine_proto_rawDescGZIP(), []int{10}
 | 
						return file_headscale_v1_machine_proto_rawDescGZIP(), []int{12}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *ListMachinesResponse) GetMachines() []*Machine {
 | 
					func (x *ListMachinesResponse) GetMachines() []*Machine {
 | 
				
			||||||
@@ -699,7 +801,7 @@ type DebugCreateMachineRequest struct {
 | 
				
			|||||||
func (x *DebugCreateMachineRequest) Reset() {
 | 
					func (x *DebugCreateMachineRequest) Reset() {
 | 
				
			||||||
	*x = DebugCreateMachineRequest{}
 | 
						*x = DebugCreateMachineRequest{}
 | 
				
			||||||
	if protoimpl.UnsafeEnabled {
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
		mi := &file_headscale_v1_machine_proto_msgTypes[11]
 | 
							mi := &file_headscale_v1_machine_proto_msgTypes[13]
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		ms.StoreMessageInfo(mi)
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -712,7 +814,7 @@ func (x *DebugCreateMachineRequest) String() string {
 | 
				
			|||||||
func (*DebugCreateMachineRequest) ProtoMessage() {}
 | 
					func (*DebugCreateMachineRequest) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *DebugCreateMachineRequest) ProtoReflect() protoreflect.Message {
 | 
					func (x *DebugCreateMachineRequest) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
	mi := &file_headscale_v1_machine_proto_msgTypes[11]
 | 
						mi := &file_headscale_v1_machine_proto_msgTypes[13]
 | 
				
			||||||
	if protoimpl.UnsafeEnabled && x != nil {
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		if ms.LoadMessageInfo() == nil {
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
@@ -725,7 +827,7 @@ func (x *DebugCreateMachineRequest) ProtoReflect() protoreflect.Message {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Deprecated: Use DebugCreateMachineRequest.ProtoReflect.Descriptor instead.
 | 
					// Deprecated: Use DebugCreateMachineRequest.ProtoReflect.Descriptor instead.
 | 
				
			||||||
func (*DebugCreateMachineRequest) Descriptor() ([]byte, []int) {
 | 
					func (*DebugCreateMachineRequest) Descriptor() ([]byte, []int) {
 | 
				
			||||||
	return file_headscale_v1_machine_proto_rawDescGZIP(), []int{11}
 | 
						return file_headscale_v1_machine_proto_rawDescGZIP(), []int{13}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *DebugCreateMachineRequest) GetNamespace() string {
 | 
					func (x *DebugCreateMachineRequest) GetNamespace() string {
 | 
				
			||||||
@@ -767,7 +869,7 @@ type DebugCreateMachineResponse struct {
 | 
				
			|||||||
func (x *DebugCreateMachineResponse) Reset() {
 | 
					func (x *DebugCreateMachineResponse) Reset() {
 | 
				
			||||||
	*x = DebugCreateMachineResponse{}
 | 
						*x = DebugCreateMachineResponse{}
 | 
				
			||||||
	if protoimpl.UnsafeEnabled {
 | 
						if protoimpl.UnsafeEnabled {
 | 
				
			||||||
		mi := &file_headscale_v1_machine_proto_msgTypes[12]
 | 
							mi := &file_headscale_v1_machine_proto_msgTypes[14]
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		ms.StoreMessageInfo(mi)
 | 
							ms.StoreMessageInfo(mi)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -780,7 +882,7 @@ func (x *DebugCreateMachineResponse) String() string {
 | 
				
			|||||||
func (*DebugCreateMachineResponse) ProtoMessage() {}
 | 
					func (*DebugCreateMachineResponse) ProtoMessage() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *DebugCreateMachineResponse) ProtoReflect() protoreflect.Message {
 | 
					func (x *DebugCreateMachineResponse) ProtoReflect() protoreflect.Message {
 | 
				
			||||||
	mi := &file_headscale_v1_machine_proto_msgTypes[12]
 | 
						mi := &file_headscale_v1_machine_proto_msgTypes[14]
 | 
				
			||||||
	if protoimpl.UnsafeEnabled && x != nil {
 | 
						if protoimpl.UnsafeEnabled && x != nil {
 | 
				
			||||||
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
							ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 | 
				
			||||||
		if ms.LoadMessageInfo() == nil {
 | 
							if ms.LoadMessageInfo() == nil {
 | 
				
			||||||
@@ -793,7 +895,7 @@ func (x *DebugCreateMachineResponse) ProtoReflect() protoreflect.Message {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Deprecated: Use DebugCreateMachineResponse.ProtoReflect.Descriptor instead.
 | 
					// Deprecated: Use DebugCreateMachineResponse.ProtoReflect.Descriptor instead.
 | 
				
			||||||
func (*DebugCreateMachineResponse) Descriptor() ([]byte, []int) {
 | 
					func (*DebugCreateMachineResponse) Descriptor() ([]byte, []int) {
 | 
				
			||||||
	return file_headscale_v1_machine_proto_rawDescGZIP(), []int{12}
 | 
						return file_headscale_v1_machine_proto_rawDescGZIP(), []int{14}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (x *DebugCreateMachineResponse) GetMachine() *Machine {
 | 
					func (x *DebugCreateMachineResponse) GetMachine() *Machine {
 | 
				
			||||||
@@ -814,7 +916,7 @@ var file_headscale_v1_machine_proto_rawDesc = []byte{
 | 
				
			|||||||
	0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
 | 
						0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
 | 
				
			||||||
	0x61, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x68, 0x65, 0x61, 0x64, 0x73,
 | 
						0x61, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x68, 0x65, 0x61, 0x64, 0x73,
 | 
				
			||||||
	0x63, 0x61, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x65, 0x61, 0x75, 0x74, 0x68, 0x6b,
 | 
						0x63, 0x61, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x65, 0x61, 0x75, 0x74, 0x68, 0x6b,
 | 
				
			||||||
	0x65, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xdd, 0x04, 0x0a, 0x07, 0x4d, 0x61, 0x63,
 | 
						0x65, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xfe, 0x04, 0x0a, 0x07, 0x4d, 0x61, 0x63,
 | 
				
			||||||
	0x68, 0x69, 0x6e, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04,
 | 
						0x68, 0x69, 0x6e, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04,
 | 
				
			||||||
	0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f,
 | 
						0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f,
 | 
				
			||||||
	0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x61, 0x63, 0x68, 0x69,
 | 
						0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x61, 0x63, 0x68, 0x69,
 | 
				
			||||||
@@ -852,69 +954,80 @@ var file_headscale_v1_machine_proto_rawDesc = []byte{
 | 
				
			|||||||
	0x74, 0x68, 0x6f, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x68, 0x65, 0x61,
 | 
						0x74, 0x68, 0x6f, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x68, 0x65, 0x61,
 | 
				
			||||||
	0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
 | 
						0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
 | 
				
			||||||
	0x65, 0x72, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x0e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
 | 
						0x65, 0x72, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x0e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
 | 
				
			||||||
	0x65, 0x72, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0x48, 0x0a, 0x16, 0x52, 0x65, 0x67, 0x69,
 | 
						0x65, 0x72, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x6f, 0x72, 0x63,
 | 
				
			||||||
	0x73, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
 | 
						0x65, 0x64, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66,
 | 
				
			||||||
	0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18,
 | 
						0x6f, 0x72, 0x63, 0x65, 0x64, 0x54, 0x61, 0x67, 0x73, 0x22, 0x48, 0x0a, 0x16, 0x52, 0x65, 0x67,
 | 
				
			||||||
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
 | 
						0x69, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75,
 | 
				
			||||||
	0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
 | 
						0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
 | 
				
			||||||
	0x65, 0x79, 0x22, 0x4a, 0x0a, 0x17, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x61,
 | 
						0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
 | 
				
			||||||
	0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a,
 | 
						0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
 | 
				
			||||||
	0x07, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15,
 | 
						0x6b, 0x65, 0x79, 0x22, 0x4a, 0x0a, 0x17, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4d,
 | 
				
			||||||
	0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61,
 | 
						0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f,
 | 
				
			||||||
	0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x07, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x22, 0x32,
 | 
						0x0a, 0x07, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
 | 
				
			||||||
	0x0a, 0x11, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75,
 | 
						0x15, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d,
 | 
				
			||||||
	0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69,
 | 
						0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x07, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x22,
 | 
				
			||||||
	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65,
 | 
						0x32, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71,
 | 
				
			||||||
	0x49, 0x64, 0x22, 0x45, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65,
 | 
						0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f,
 | 
				
			||||||
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x07, 0x6d, 0x61, 0x63, 0x68,
 | 
						0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e,
 | 
				
			||||||
	0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x68, 0x65, 0x61, 0x64,
 | 
						0x65, 0x49, 0x64, 0x22, 0x45, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e,
 | 
				
			||||||
	0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65,
 | 
					 | 
				
			||||||
	0x52, 0x07, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x22, 0x35, 0x0a, 0x14, 0x44, 0x65, 0x6c,
 | 
					 | 
				
			||||||
	0x65, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
 | 
					 | 
				
			||||||
	0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x18,
 | 
					 | 
				
			||||||
	0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64,
 | 
					 | 
				
			||||||
	0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e,
 | 
					 | 
				
			||||||
	0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x0a, 0x14, 0x45, 0x78, 0x70,
 | 
					 | 
				
			||||||
	0x69, 0x72, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
 | 
					 | 
				
			||||||
	0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x18,
 | 
					 | 
				
			||||||
	0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64,
 | 
					 | 
				
			||||||
	0x22, 0x48, 0x0a, 0x15, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e,
 | 
					 | 
				
			||||||
	0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x07, 0x6d, 0x61, 0x63,
 | 
						0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x07, 0x6d, 0x61, 0x63,
 | 
				
			||||||
	0x68, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x68, 0x65, 0x61,
 | 
						0x68, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x68, 0x65, 0x61,
 | 
				
			||||||
	0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e,
 | 
						0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e,
 | 
				
			||||||
	0x65, 0x52, 0x07, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x22, 0x33, 0x0a, 0x13, 0x4c, 0x69,
 | 
						0x65, 0x52, 0x07, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x22, 0x47, 0x0a, 0x14, 0x55, 0x70,
 | 
				
			||||||
	0x73, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
 | 
						0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
 | 
				
			||||||
	0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01,
 | 
						0x73, 0x74, 0x12, 0x2f, 0x0a, 0x07, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20,
 | 
				
			||||||
	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22,
 | 
						0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e,
 | 
				
			||||||
	0x49, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x52,
 | 
						0x76, 0x31, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x07, 0x6d, 0x61, 0x63, 0x68,
 | 
				
			||||||
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x08, 0x6d, 0x61, 0x63, 0x68, 0x69,
 | 
						0x69, 0x6e, 0x65, 0x22, 0x48, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63,
 | 
				
			||||||
	0x6e, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x68, 0x65, 0x61, 0x64,
 | 
						0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x07,
 | 
				
			||||||
	0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65,
 | 
						0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e,
 | 
				
			||||||
	0x52, 0x08, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x22, 0x77, 0x0a, 0x19, 0x44, 0x65,
 | 
						0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x63,
 | 
				
			||||||
	0x62, 0x75, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65,
 | 
						0x68, 0x69, 0x6e, 0x65, 0x52, 0x07, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x22, 0x35, 0x0a,
 | 
				
			||||||
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73,
 | 
						0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65,
 | 
				
			||||||
	0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65,
 | 
						0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65,
 | 
				
			||||||
	0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01,
 | 
						0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6d, 0x61, 0x63, 0x68, 0x69,
 | 
				
			||||||
	0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
 | 
						0x6e, 0x65, 0x49, 0x64, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x61,
 | 
				
			||||||
	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72,
 | 
						0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x0a,
 | 
				
			||||||
	0x6f, 0x75, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x75,
 | 
						0x14, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65,
 | 
				
			||||||
	0x74, 0x65, 0x73, 0x22, 0x4d, 0x0a, 0x1a, 0x44, 0x65, 0x62, 0x75, 0x67, 0x43, 0x72, 0x65, 0x61,
 | 
						0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65,
 | 
				
			||||||
	0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
 | 
						0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6d, 0x61, 0x63, 0x68, 0x69,
 | 
				
			||||||
	0x65, 0x12, 0x2f, 0x0a, 0x07, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01,
 | 
						0x6e, 0x65, 0x49, 0x64, 0x22, 0x48, 0x0a, 0x15, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x4d, 0x61,
 | 
				
			||||||
	0x28, 0x0b, 0x32, 0x15, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76,
 | 
						0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a,
 | 
				
			||||||
	0x31, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x07, 0x6d, 0x61, 0x63, 0x68, 0x69,
 | 
						0x07, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15,
 | 
				
			||||||
	0x6e, 0x65, 0x2a, 0x82, 0x01, 0x0a, 0x0e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4d,
 | 
						0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61,
 | 
				
			||||||
	0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1f, 0x0a, 0x1b, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x45,
 | 
						0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x07, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x22, 0x33,
 | 
				
			||||||
	0x52, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49,
 | 
						0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x52, 0x65,
 | 
				
			||||||
	0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54,
 | 
						0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
 | 
				
			||||||
	0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x5f, 0x4b,
 | 
						0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
 | 
				
			||||||
	0x45, 0x59, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x45, 0x52,
 | 
						0x61, 0x63, 0x65, 0x22, 0x49, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69,
 | 
				
			||||||
	0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x43, 0x4c, 0x49, 0x10, 0x02, 0x12, 0x18, 0x0a,
 | 
						0x6e, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x08, 0x6d,
 | 
				
			||||||
	0x14, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44,
 | 
						0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e,
 | 
				
			||||||
	0x5f, 0x4f, 0x49, 0x44, 0x43, 0x10, 0x03, 0x42, 0x29, 0x5a, 0x27, 0x67, 0x69, 0x74, 0x68, 0x75,
 | 
						0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x63,
 | 
				
			||||||
	0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6a, 0x75, 0x61, 0x6e, 0x66, 0x6f, 0x6e, 0x74, 0x2f, 0x68,
 | 
						0x68, 0x69, 0x6e, 0x65, 0x52, 0x08, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x22, 0x77,
 | 
				
			||||||
	0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f,
 | 
						0x0a, 0x19, 0x44, 0x65, 0x62, 0x75, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63,
 | 
				
			||||||
	0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 | 
						0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e,
 | 
				
			||||||
 | 
						0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
 | 
				
			||||||
 | 
						0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
 | 
				
			||||||
 | 
						0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e,
 | 
				
			||||||
 | 
						0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
 | 
				
			||||||
 | 
						0x16, 0x0a, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52,
 | 
				
			||||||
 | 
						0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x22, 0x4d, 0x0a, 0x1a, 0x44, 0x65, 0x62, 0x75, 0x67,
 | 
				
			||||||
 | 
						0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x73,
 | 
				
			||||||
 | 
						0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x07, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65,
 | 
				
			||||||
 | 
						0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61,
 | 
				
			||||||
 | 
						0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x07, 0x6d,
 | 
				
			||||||
 | 
						0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2a, 0x82, 0x01, 0x0a, 0x0e, 0x52, 0x65, 0x67, 0x69, 0x73,
 | 
				
			||||||
 | 
						0x74, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1f, 0x0a, 0x1b, 0x52, 0x45, 0x47,
 | 
				
			||||||
 | 
						0x49, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x55, 0x4e, 0x53,
 | 
				
			||||||
 | 
						0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x52, 0x45,
 | 
				
			||||||
 | 
						0x47, 0x49, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x41, 0x55,
 | 
				
			||||||
 | 
						0x54, 0x48, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x52, 0x45, 0x47, 0x49,
 | 
				
			||||||
 | 
						0x53, 0x54, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x43, 0x4c, 0x49, 0x10,
 | 
				
			||||||
 | 
						0x02, 0x12, 0x18, 0x0a, 0x14, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x4d, 0x45,
 | 
				
			||||||
 | 
						0x54, 0x48, 0x4f, 0x44, 0x5f, 0x4f, 0x49, 0x44, 0x43, 0x10, 0x03, 0x42, 0x29, 0x5a, 0x27, 0x67,
 | 
				
			||||||
 | 
						0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6a, 0x75, 0x61, 0x6e, 0x66, 0x6f,
 | 
				
			||||||
 | 
						0x6e, 0x74, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2f, 0x67, 0x65, 0x6e,
 | 
				
			||||||
 | 
						0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var (
 | 
					var (
 | 
				
			||||||
@@ -930,7 +1043,7 @@ func file_headscale_v1_machine_proto_rawDescGZIP() []byte {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var file_headscale_v1_machine_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
 | 
					var file_headscale_v1_machine_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
 | 
				
			||||||
var file_headscale_v1_machine_proto_msgTypes = make([]protoimpl.MessageInfo, 13)
 | 
					var file_headscale_v1_machine_proto_msgTypes = make([]protoimpl.MessageInfo, 15)
 | 
				
			||||||
var file_headscale_v1_machine_proto_goTypes = []interface{}{
 | 
					var file_headscale_v1_machine_proto_goTypes = []interface{}{
 | 
				
			||||||
	(RegisterMethod)(0),                // 0: headscale.v1.RegisterMethod
 | 
						(RegisterMethod)(0),                // 0: headscale.v1.RegisterMethod
 | 
				
			||||||
	(*Machine)(nil),                    // 1: headscale.v1.Machine
 | 
						(*Machine)(nil),                    // 1: headscale.v1.Machine
 | 
				
			||||||
@@ -938,36 +1051,40 @@ var file_headscale_v1_machine_proto_goTypes = []interface{}{
 | 
				
			|||||||
	(*RegisterMachineResponse)(nil),    // 3: headscale.v1.RegisterMachineResponse
 | 
						(*RegisterMachineResponse)(nil),    // 3: headscale.v1.RegisterMachineResponse
 | 
				
			||||||
	(*GetMachineRequest)(nil),          // 4: headscale.v1.GetMachineRequest
 | 
						(*GetMachineRequest)(nil),          // 4: headscale.v1.GetMachineRequest
 | 
				
			||||||
	(*GetMachineResponse)(nil),         // 5: headscale.v1.GetMachineResponse
 | 
						(*GetMachineResponse)(nil),         // 5: headscale.v1.GetMachineResponse
 | 
				
			||||||
	(*DeleteMachineRequest)(nil),       // 6: headscale.v1.DeleteMachineRequest
 | 
						(*UpdateMachineRequest)(nil),       // 6: headscale.v1.UpdateMachineRequest
 | 
				
			||||||
	(*DeleteMachineResponse)(nil),      // 7: headscale.v1.DeleteMachineResponse
 | 
						(*UpdateMachineResponse)(nil),      // 7: headscale.v1.UpdateMachineResponse
 | 
				
			||||||
	(*ExpireMachineRequest)(nil),       // 8: headscale.v1.ExpireMachineRequest
 | 
						(*DeleteMachineRequest)(nil),       // 8: headscale.v1.DeleteMachineRequest
 | 
				
			||||||
	(*ExpireMachineResponse)(nil),      // 9: headscale.v1.ExpireMachineResponse
 | 
						(*DeleteMachineResponse)(nil),      // 9: headscale.v1.DeleteMachineResponse
 | 
				
			||||||
	(*ListMachinesRequest)(nil),        // 10: headscale.v1.ListMachinesRequest
 | 
						(*ExpireMachineRequest)(nil),       // 10: headscale.v1.ExpireMachineRequest
 | 
				
			||||||
	(*ListMachinesResponse)(nil),       // 11: headscale.v1.ListMachinesResponse
 | 
						(*ExpireMachineResponse)(nil),      // 11: headscale.v1.ExpireMachineResponse
 | 
				
			||||||
	(*DebugCreateMachineRequest)(nil),  // 12: headscale.v1.DebugCreateMachineRequest
 | 
						(*ListMachinesRequest)(nil),        // 12: headscale.v1.ListMachinesRequest
 | 
				
			||||||
	(*DebugCreateMachineResponse)(nil), // 13: headscale.v1.DebugCreateMachineResponse
 | 
						(*ListMachinesResponse)(nil),       // 13: headscale.v1.ListMachinesResponse
 | 
				
			||||||
	(*Namespace)(nil),                  // 14: headscale.v1.Namespace
 | 
						(*DebugCreateMachineRequest)(nil),  // 14: headscale.v1.DebugCreateMachineRequest
 | 
				
			||||||
	(*timestamppb.Timestamp)(nil),      // 15: google.protobuf.Timestamp
 | 
						(*DebugCreateMachineResponse)(nil), // 15: headscale.v1.DebugCreateMachineResponse
 | 
				
			||||||
	(*PreAuthKey)(nil),                 // 16: headscale.v1.PreAuthKey
 | 
						(*Namespace)(nil),                  // 16: headscale.v1.Namespace
 | 
				
			||||||
 | 
						(*timestamppb.Timestamp)(nil),      // 17: google.protobuf.Timestamp
 | 
				
			||||||
 | 
						(*PreAuthKey)(nil),                 // 18: headscale.v1.PreAuthKey
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
var file_headscale_v1_machine_proto_depIdxs = []int32{
 | 
					var file_headscale_v1_machine_proto_depIdxs = []int32{
 | 
				
			||||||
	14, // 0: headscale.v1.Machine.namespace:type_name -> headscale.v1.Namespace
 | 
						16, // 0: headscale.v1.Machine.namespace:type_name -> headscale.v1.Namespace
 | 
				
			||||||
	15, // 1: headscale.v1.Machine.last_seen:type_name -> google.protobuf.Timestamp
 | 
						17, // 1: headscale.v1.Machine.last_seen:type_name -> google.protobuf.Timestamp
 | 
				
			||||||
	15, // 2: headscale.v1.Machine.last_successful_update:type_name -> google.protobuf.Timestamp
 | 
						17, // 2: headscale.v1.Machine.last_successful_update:type_name -> google.protobuf.Timestamp
 | 
				
			||||||
	15, // 3: headscale.v1.Machine.expiry:type_name -> google.protobuf.Timestamp
 | 
						17, // 3: headscale.v1.Machine.expiry:type_name -> google.protobuf.Timestamp
 | 
				
			||||||
	16, // 4: headscale.v1.Machine.pre_auth_key:type_name -> headscale.v1.PreAuthKey
 | 
						18, // 4: headscale.v1.Machine.pre_auth_key:type_name -> headscale.v1.PreAuthKey
 | 
				
			||||||
	15, // 5: headscale.v1.Machine.created_at:type_name -> google.protobuf.Timestamp
 | 
						17, // 5: headscale.v1.Machine.created_at:type_name -> google.protobuf.Timestamp
 | 
				
			||||||
	0,  // 6: headscale.v1.Machine.register_method:type_name -> headscale.v1.RegisterMethod
 | 
						0,  // 6: headscale.v1.Machine.register_method:type_name -> headscale.v1.RegisterMethod
 | 
				
			||||||
	1,  // 7: headscale.v1.RegisterMachineResponse.machine:type_name -> headscale.v1.Machine
 | 
						1,  // 7: headscale.v1.RegisterMachineResponse.machine:type_name -> headscale.v1.Machine
 | 
				
			||||||
	1,  // 8: headscale.v1.GetMachineResponse.machine:type_name -> headscale.v1.Machine
 | 
						1,  // 8: headscale.v1.GetMachineResponse.machine:type_name -> headscale.v1.Machine
 | 
				
			||||||
	1,  // 9: headscale.v1.ExpireMachineResponse.machine:type_name -> headscale.v1.Machine
 | 
						1,  // 9: headscale.v1.UpdateMachineRequest.machine:type_name -> headscale.v1.Machine
 | 
				
			||||||
	1,  // 10: headscale.v1.ListMachinesResponse.machines:type_name -> headscale.v1.Machine
 | 
						1,  // 10: headscale.v1.UpdateMachineResponse.machine:type_name -> headscale.v1.Machine
 | 
				
			||||||
	1,  // 11: headscale.v1.DebugCreateMachineResponse.machine:type_name -> headscale.v1.Machine
 | 
						1,  // 11: headscale.v1.ExpireMachineResponse.machine:type_name -> headscale.v1.Machine
 | 
				
			||||||
	12, // [12:12] is the sub-list for method output_type
 | 
						1,  // 12: headscale.v1.ListMachinesResponse.machines:type_name -> headscale.v1.Machine
 | 
				
			||||||
	12, // [12:12] is the sub-list for method input_type
 | 
						1,  // 13: headscale.v1.DebugCreateMachineResponse.machine:type_name -> headscale.v1.Machine
 | 
				
			||||||
	12, // [12:12] is the sub-list for extension type_name
 | 
						14, // [14:14] is the sub-list for method output_type
 | 
				
			||||||
	12, // [12:12] is the sub-list for extension extendee
 | 
						14, // [14:14] is the sub-list for method input_type
 | 
				
			||||||
	0,  // [0:12] is the sub-list for field type_name
 | 
						14, // [14:14] is the sub-list for extension type_name
 | 
				
			||||||
 | 
						14, // [14:14] is the sub-list for extension extendee
 | 
				
			||||||
 | 
						0,  // [0:14] is the sub-list for field type_name
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func init() { file_headscale_v1_machine_proto_init() }
 | 
					func init() { file_headscale_v1_machine_proto_init() }
 | 
				
			||||||
@@ -1039,7 +1156,7 @@ func file_headscale_v1_machine_proto_init() {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		file_headscale_v1_machine_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
 | 
							file_headscale_v1_machine_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
			switch v := v.(*DeleteMachineRequest); i {
 | 
								switch v := v.(*UpdateMachineRequest); i {
 | 
				
			||||||
			case 0:
 | 
								case 0:
 | 
				
			||||||
				return &v.state
 | 
									return &v.state
 | 
				
			||||||
			case 1:
 | 
								case 1:
 | 
				
			||||||
@@ -1051,7 +1168,7 @@ func file_headscale_v1_machine_proto_init() {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		file_headscale_v1_machine_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
 | 
							file_headscale_v1_machine_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
			switch v := v.(*DeleteMachineResponse); i {
 | 
								switch v := v.(*UpdateMachineResponse); i {
 | 
				
			||||||
			case 0:
 | 
								case 0:
 | 
				
			||||||
				return &v.state
 | 
									return &v.state
 | 
				
			||||||
			case 1:
 | 
								case 1:
 | 
				
			||||||
@@ -1063,7 +1180,7 @@ func file_headscale_v1_machine_proto_init() {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		file_headscale_v1_machine_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
 | 
							file_headscale_v1_machine_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
			switch v := v.(*ExpireMachineRequest); i {
 | 
								switch v := v.(*DeleteMachineRequest); i {
 | 
				
			||||||
			case 0:
 | 
								case 0:
 | 
				
			||||||
				return &v.state
 | 
									return &v.state
 | 
				
			||||||
			case 1:
 | 
								case 1:
 | 
				
			||||||
@@ -1075,7 +1192,7 @@ func file_headscale_v1_machine_proto_init() {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		file_headscale_v1_machine_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
 | 
							file_headscale_v1_machine_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
			switch v := v.(*ExpireMachineResponse); i {
 | 
								switch v := v.(*DeleteMachineResponse); i {
 | 
				
			||||||
			case 0:
 | 
								case 0:
 | 
				
			||||||
				return &v.state
 | 
									return &v.state
 | 
				
			||||||
			case 1:
 | 
								case 1:
 | 
				
			||||||
@@ -1087,7 +1204,7 @@ func file_headscale_v1_machine_proto_init() {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		file_headscale_v1_machine_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
 | 
							file_headscale_v1_machine_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
			switch v := v.(*ListMachinesRequest); i {
 | 
								switch v := v.(*ExpireMachineRequest); i {
 | 
				
			||||||
			case 0:
 | 
								case 0:
 | 
				
			||||||
				return &v.state
 | 
									return &v.state
 | 
				
			||||||
			case 1:
 | 
								case 1:
 | 
				
			||||||
@@ -1099,7 +1216,7 @@ func file_headscale_v1_machine_proto_init() {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		file_headscale_v1_machine_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
 | 
							file_headscale_v1_machine_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
			switch v := v.(*ListMachinesResponse); i {
 | 
								switch v := v.(*ExpireMachineResponse); i {
 | 
				
			||||||
			case 0:
 | 
								case 0:
 | 
				
			||||||
				return &v.state
 | 
									return &v.state
 | 
				
			||||||
			case 1:
 | 
								case 1:
 | 
				
			||||||
@@ -1111,7 +1228,7 @@ func file_headscale_v1_machine_proto_init() {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		file_headscale_v1_machine_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
 | 
							file_headscale_v1_machine_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
			switch v := v.(*DebugCreateMachineRequest); i {
 | 
								switch v := v.(*ListMachinesRequest); i {
 | 
				
			||||||
			case 0:
 | 
								case 0:
 | 
				
			||||||
				return &v.state
 | 
									return &v.state
 | 
				
			||||||
			case 1:
 | 
								case 1:
 | 
				
			||||||
@@ -1123,6 +1240,30 @@ func file_headscale_v1_machine_proto_init() {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		file_headscale_v1_machine_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
 | 
							file_headscale_v1_machine_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
 | 
								switch v := v.(*ListMachinesResponse); i {
 | 
				
			||||||
 | 
								case 0:
 | 
				
			||||||
 | 
									return &v.state
 | 
				
			||||||
 | 
								case 1:
 | 
				
			||||||
 | 
									return &v.sizeCache
 | 
				
			||||||
 | 
								case 2:
 | 
				
			||||||
 | 
									return &v.unknownFields
 | 
				
			||||||
 | 
								default:
 | 
				
			||||||
 | 
									return nil
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							file_headscale_v1_machine_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
 | 
								switch v := v.(*DebugCreateMachineRequest); i {
 | 
				
			||||||
 | 
								case 0:
 | 
				
			||||||
 | 
									return &v.state
 | 
				
			||||||
 | 
								case 1:
 | 
				
			||||||
 | 
									return &v.sizeCache
 | 
				
			||||||
 | 
								case 2:
 | 
				
			||||||
 | 
									return &v.unknownFields
 | 
				
			||||||
 | 
								default:
 | 
				
			||||||
 | 
									return nil
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							file_headscale_v1_machine_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
 | 
				
			||||||
			switch v := v.(*DebugCreateMachineResponse); i {
 | 
								switch v := v.(*DebugCreateMachineResponse); i {
 | 
				
			||||||
			case 0:
 | 
								case 0:
 | 
				
			||||||
				return &v.state
 | 
									return &v.state
 | 
				
			||||||
@@ -1141,7 +1282,7 @@ func file_headscale_v1_machine_proto_init() {
 | 
				
			|||||||
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 | 
								GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 | 
				
			||||||
			RawDescriptor: file_headscale_v1_machine_proto_rawDesc,
 | 
								RawDescriptor: file_headscale_v1_machine_proto_rawDesc,
 | 
				
			||||||
			NumEnums:      1,
 | 
								NumEnums:      1,
 | 
				
			||||||
			NumMessages:   13,
 | 
								NumMessages:   15,
 | 
				
			||||||
			NumExtensions: 0,
 | 
								NumExtensions: 0,
 | 
				
			||||||
			NumServices:   0,
 | 
								NumServices:   0,
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -200,6 +200,45 @@
 | 
				
			|||||||
        ]
 | 
					        ]
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "/api/v1/machine/{machine.id}": {
 | 
				
			||||||
 | 
					      "post": {
 | 
				
			||||||
 | 
					        "operationId": "HeadscaleService_UpdateMachine",
 | 
				
			||||||
 | 
					        "responses": {
 | 
				
			||||||
 | 
					          "200": {
 | 
				
			||||||
 | 
					            "description": "A successful response.",
 | 
				
			||||||
 | 
					            "schema": {
 | 
				
			||||||
 | 
					              "$ref": "#/definitions/v1UpdateMachineResponse"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "default": {
 | 
				
			||||||
 | 
					            "description": "An unexpected error response.",
 | 
				
			||||||
 | 
					            "schema": {
 | 
				
			||||||
 | 
					              "$ref": "#/definitions/rpcStatus"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "parameters": [
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            "name": "machine.id",
 | 
				
			||||||
 | 
					            "in": "path",
 | 
				
			||||||
 | 
					            "required": true,
 | 
				
			||||||
 | 
					            "type": "string",
 | 
				
			||||||
 | 
					            "format": "uint64"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            "name": "body",
 | 
				
			||||||
 | 
					            "in": "body",
 | 
				
			||||||
 | 
					            "required": true,
 | 
				
			||||||
 | 
					            "schema": {
 | 
				
			||||||
 | 
					              "$ref": "#/definitions/v1UpdateMachineRequest"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        "tags": [
 | 
				
			||||||
 | 
					          "HeadscaleService"
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "/api/v1/machine/{machineId}": {
 | 
					    "/api/v1/machine/{machineId}": {
 | 
				
			||||||
      "get": {
 | 
					      "get": {
 | 
				
			||||||
        "operationId": "HeadscaleService_GetMachine",
 | 
					        "operationId": "HeadscaleService_GetMachine",
 | 
				
			||||||
@@ -906,6 +945,12 @@
 | 
				
			|||||||
        },
 | 
					        },
 | 
				
			||||||
        "registerMethod": {
 | 
					        "registerMethod": {
 | 
				
			||||||
          "$ref": "#/definitions/v1RegisterMethod"
 | 
					          "$ref": "#/definitions/v1RegisterMethod"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "forcedTags": {
 | 
				
			||||||
 | 
					          "type": "array",
 | 
				
			||||||
 | 
					          "items": {
 | 
				
			||||||
 | 
					            "type": "string"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
@@ -997,6 +1042,22 @@
 | 
				
			|||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "v1UpdateMachineRequest": {
 | 
				
			||||||
 | 
					      "type": "object",
 | 
				
			||||||
 | 
					      "properties": {
 | 
				
			||||||
 | 
					        "machine": {
 | 
				
			||||||
 | 
					          "$ref": "#/definitions/v1Machine"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "v1UpdateMachineResponse": {
 | 
				
			||||||
 | 
					      "type": "object",
 | 
				
			||||||
 | 
					      "properties": {
 | 
				
			||||||
 | 
					        "machine": {
 | 
				
			||||||
 | 
					          "$ref": "#/definitions/v1Machine"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										35
									
								
								grpcv1.go
									
									
									
									
									
								
							
							
						
						
									
										35
									
								
								grpcv1.go
									
									
									
									
									
								
							@@ -3,9 +3,11 @@ package headscale
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"context"
 | 
						"context"
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
						"strconv"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/juanfont/headscale/gen/go/headscale/v1"
 | 
						v1 "github.com/juanfont/headscale/gen/go/headscale/v1"
 | 
				
			||||||
	"github.com/rs/zerolog/log"
 | 
						"github.com/rs/zerolog/log"
 | 
				
			||||||
	"tailscale.com/tailcfg"
 | 
						"tailscale.com/tailcfg"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -182,6 +184,37 @@ func (api headscaleV1APIServer) GetMachine(
 | 
				
			|||||||
	return &v1.GetMachineResponse{Machine: machine.toProto()}, nil
 | 
						return &v1.GetMachineResponse{Machine: machine.toProto()}, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (api headscaleV1APIServer) UpdateMachine(
 | 
				
			||||||
 | 
						ctx context.Context,
 | 
				
			||||||
 | 
						request *v1.UpdateMachineRequest,
 | 
				
			||||||
 | 
					) (*v1.UpdateMachineResponse, error) {
 | 
				
			||||||
 | 
						rMachine := request.GetMachine()
 | 
				
			||||||
 | 
						machine, err := api.h.GetMachineByID(rMachine.Id)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						machine.ForcedTags = rMachine.ForcedTags
 | 
				
			||||||
 | 
						machine.Name = rMachine.Name
 | 
				
			||||||
 | 
						id, err := strconv.Atoi(rMachine.Namespace.Id)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, fmt.Errorf("failed to convert namespace id to integer: %w", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						machine.NamespaceID = uint(id)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err = api.h.UpdateDBMachine(*machine)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						machine, err = api.h.GetMachineByID(rMachine.Id)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return &v1.UpdateMachineResponse{Machine: machine.toProto()}, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (api headscaleV1APIServer) DeleteMachine(
 | 
					func (api headscaleV1APIServer) DeleteMachine(
 | 
				
			||||||
	ctx context.Context,
 | 
						ctx context.Context,
 | 
				
			||||||
	request *v1.DeleteMachineRequest,
 | 
						request *v1.DeleteMachineRequest,
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										19
									
								
								machine.go
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								machine.go
									
									
									
									
									
								
							@@ -45,6 +45,8 @@ type Machine struct {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	RegisterMethod string
 | 
						RegisterMethod string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ForcedTags StringList
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// TODO(kradalby): This seems like irrelevant information?
 | 
						// TODO(kradalby): This seems like irrelevant information?
 | 
				
			||||||
	AuthKeyID uint
 | 
						AuthKeyID uint
 | 
				
			||||||
	AuthKey   *PreAuthKey
 | 
						AuthKey   *PreAuthKey
 | 
				
			||||||
@@ -357,6 +359,22 @@ func (h *Headscale) UpdateMachine(machine *Machine) error {
 | 
				
			|||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// UpdateDBMachine takes a Machine struct pointer (typically already loaded from database
 | 
				
			||||||
 | 
					// search for the same machine in the database and update the latter
 | 
				
			||||||
 | 
					func (h *Headscale) UpdateDBMachine(machine Machine) error {
 | 
				
			||||||
 | 
						destMachine := Machine{}
 | 
				
			||||||
 | 
						if result := h.db.Where("id = ?", machine.ID).Find(&destMachine); result.Error != nil {
 | 
				
			||||||
 | 
							return result.Error
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						destMachine.Name = machine.Name
 | 
				
			||||||
 | 
						destMachine.NamespaceID = machine.NamespaceID
 | 
				
			||||||
 | 
						destMachine.ForcedTags = machine.ForcedTags
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						h.db.Save(destMachine)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ExpireMachine takes a Machine struct and sets the expire field to now.
 | 
					// ExpireMachine takes a Machine struct and sets the expire field to now.
 | 
				
			||||||
func (h *Headscale) ExpireMachine(machine *Machine) {
 | 
					func (h *Headscale) ExpireMachine(machine *Machine) {
 | 
				
			||||||
	now := time.Now()
 | 
						now := time.Now()
 | 
				
			||||||
@@ -613,6 +631,7 @@ func (machine *Machine) toProto() *v1.Machine {
 | 
				
			|||||||
		IpAddresses: machine.IPAddresses.ToStringSlice(),
 | 
							IpAddresses: machine.IPAddresses.ToStringSlice(),
 | 
				
			||||||
		Name:        machine.Name,
 | 
							Name:        machine.Name,
 | 
				
			||||||
		Namespace:   machine.Namespace.toProto(),
 | 
							Namespace:   machine.Namespace.toProto(),
 | 
				
			||||||
 | 
							ForcedTags: machine.ForcedTags,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// TODO(kradalby): Implement register method enum converter
 | 
							// TODO(kradalby): Implement register method enum converter
 | 
				
			||||||
		// RegisterMethod: ,
 | 
							// RegisterMethod: ,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -81,6 +81,13 @@ service HeadscaleService {
 | 
				
			|||||||
        };
 | 
					        };
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    rpc UpdateMachine(UpdateMachineRequest) returns (UpdateMachineResponse) {
 | 
				
			||||||
 | 
					        option (google.api.http) = {
 | 
				
			||||||
 | 
					            post: "/api/v1/machine/{machine.id}"
 | 
				
			||||||
 | 
					            body: "*"
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    rpc RegisterMachine(RegisterMachineRequest) returns (RegisterMachineResponse) {
 | 
					    rpc RegisterMachine(RegisterMachineRequest) returns (RegisterMachineResponse) {
 | 
				
			||||||
        option (google.api.http) = {
 | 
					        option (google.api.http) = {
 | 
				
			||||||
            post: "/api/v1/machine/register"
 | 
					            post: "/api/v1/machine/register"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -32,6 +32,9 @@ message Machine {
 | 
				
			|||||||
    google.protobuf.Timestamp created_at = 12;
 | 
					    google.protobuf.Timestamp created_at = 12;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    RegisterMethod register_method = 13;
 | 
					    RegisterMethod register_method = 13;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    repeated string forced_tags = 14;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // google.protobuf.Timestamp updated_at = 14;
 | 
					    // google.protobuf.Timestamp updated_at = 14;
 | 
				
			||||||
    // google.protobuf.Timestamp deleted_at = 15;
 | 
					    // google.protobuf.Timestamp deleted_at = 15;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -57,6 +60,14 @@ message GetMachineResponse {
 | 
				
			|||||||
    Machine machine = 1;
 | 
					    Machine machine = 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message UpdateMachineRequest {
 | 
				
			||||||
 | 
					    Machine machine = 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					message UpdateMachineResponse {
 | 
				
			||||||
 | 
					    Machine machine = 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
message DeleteMachineRequest {
 | 
					message DeleteMachineRequest {
 | 
				
			||||||
    uint64 machine_id = 1;
 | 
					    uint64 machine_id = 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user