mirror of
				https://gitea.com/Lydanne/buildx.git
				synced 2025-10-31 16:13:45 +08:00 
			
		
		
		
	vendor: update buildkit to 8effd45b
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
This commit is contained in:
		
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/go-winio/CODEOWNERS
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/go-winio/CODEOWNERS
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
|   * @microsoft/containerplat | ||||
							
								
								
									
										36
									
								
								vendor/github.com/Microsoft/go-winio/fileinfo.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										36
									
								
								vendor/github.com/Microsoft/go-winio/fileinfo.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -5,21 +5,14 @@ package winio | ||||
| import ( | ||||
| 	"os" | ||||
| 	"runtime" | ||||
| 	"syscall" | ||||
| 	"unsafe" | ||||
| ) | ||||
|  | ||||
| //sys getFileInformationByHandleEx(h syscall.Handle, class uint32, buffer *byte, size uint32) (err error) = GetFileInformationByHandleEx | ||||
| //sys setFileInformationByHandle(h syscall.Handle, class uint32, buffer *byte, size uint32) (err error) = SetFileInformationByHandle | ||||
|  | ||||
| const ( | ||||
| 	fileBasicInfo = 0 | ||||
| 	fileIDInfo    = 0x12 | ||||
| 	"golang.org/x/sys/windows" | ||||
| ) | ||||
|  | ||||
| // FileBasicInfo contains file access time and file attributes information. | ||||
| type FileBasicInfo struct { | ||||
| 	CreationTime, LastAccessTime, LastWriteTime, ChangeTime syscall.Filetime | ||||
| 	CreationTime, LastAccessTime, LastWriteTime, ChangeTime windows.Filetime | ||||
| 	FileAttributes                                          uint32 | ||||
| 	pad                                                     uint32 // padding | ||||
| } | ||||
| @@ -27,7 +20,7 @@ type FileBasicInfo struct { | ||||
| // GetFileBasicInfo retrieves times and attributes for a file. | ||||
| func GetFileBasicInfo(f *os.File) (*FileBasicInfo, error) { | ||||
| 	bi := &FileBasicInfo{} | ||||
| 	if err := getFileInformationByHandleEx(syscall.Handle(f.Fd()), fileBasicInfo, (*byte)(unsafe.Pointer(bi)), uint32(unsafe.Sizeof(*bi))); err != nil { | ||||
| 	if err := windows.GetFileInformationByHandleEx(windows.Handle(f.Fd()), windows.FileBasicInfo, (*byte)(unsafe.Pointer(bi)), uint32(unsafe.Sizeof(*bi))); err != nil { | ||||
| 		return nil, &os.PathError{Op: "GetFileInformationByHandleEx", Path: f.Name(), Err: err} | ||||
| 	} | ||||
| 	runtime.KeepAlive(f) | ||||
| @@ -36,13 +29,32 @@ func GetFileBasicInfo(f *os.File) (*FileBasicInfo, error) { | ||||
|  | ||||
| // SetFileBasicInfo sets times and attributes for a file. | ||||
| func SetFileBasicInfo(f *os.File, bi *FileBasicInfo) error { | ||||
| 	if err := setFileInformationByHandle(syscall.Handle(f.Fd()), fileBasicInfo, (*byte)(unsafe.Pointer(bi)), uint32(unsafe.Sizeof(*bi))); err != nil { | ||||
| 	if err := windows.SetFileInformationByHandle(windows.Handle(f.Fd()), windows.FileBasicInfo, (*byte)(unsafe.Pointer(bi)), uint32(unsafe.Sizeof(*bi))); err != nil { | ||||
| 		return &os.PathError{Op: "SetFileInformationByHandle", Path: f.Name(), Err: err} | ||||
| 	} | ||||
| 	runtime.KeepAlive(f) | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // FileStandardInfo contains extended information for the file. | ||||
| // FILE_STANDARD_INFO in WinBase.h | ||||
| // https://docs.microsoft.com/en-us/windows/win32/api/winbase/ns-winbase-file_standard_info | ||||
| type FileStandardInfo struct { | ||||
| 	AllocationSize, EndOfFile int64 | ||||
| 	NumberOfLinks             uint32 | ||||
| 	DeletePending, Directory  bool | ||||
| } | ||||
|  | ||||
| // GetFileStandardInfo retrieves ended information for the file. | ||||
| func GetFileStandardInfo(f *os.File) (*FileStandardInfo, error) { | ||||
| 	si := &FileStandardInfo{} | ||||
| 	if err := windows.GetFileInformationByHandleEx(windows.Handle(f.Fd()), windows.FileStandardInfo, (*byte)(unsafe.Pointer(si)), uint32(unsafe.Sizeof(*si))); err != nil { | ||||
| 		return nil, &os.PathError{Op: "GetFileInformationByHandleEx", Path: f.Name(), Err: err} | ||||
| 	} | ||||
| 	runtime.KeepAlive(f) | ||||
| 	return si, nil | ||||
| } | ||||
|  | ||||
| // FileIDInfo contains the volume serial number and file ID for a file. This pair should be | ||||
| // unique on a system. | ||||
| type FileIDInfo struct { | ||||
| @@ -53,7 +65,7 @@ type FileIDInfo struct { | ||||
| // GetFileID retrieves the unique (volume, file ID) pair for a file. | ||||
| func GetFileID(f *os.File) (*FileIDInfo, error) { | ||||
| 	fileID := &FileIDInfo{} | ||||
| 	if err := getFileInformationByHandleEx(syscall.Handle(f.Fd()), fileIDInfo, (*byte)(unsafe.Pointer(fileID)), uint32(unsafe.Sizeof(*fileID))); err != nil { | ||||
| 	if err := windows.GetFileInformationByHandleEx(windows.Handle(f.Fd()), windows.FileIdInfo, (*byte)(unsafe.Pointer(fileID)), uint32(unsafe.Sizeof(*fileID))); err != nil { | ||||
| 		return nil, &os.PathError{Op: "GetFileInformationByHandleEx", Path: f.Name(), Err: err} | ||||
| 	} | ||||
| 	runtime.KeepAlive(f) | ||||
|   | ||||
							
								
								
									
										6
									
								
								vendor/github.com/Microsoft/go-winio/go.mod
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								vendor/github.com/Microsoft/go-winio/go.mod
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -3,7 +3,7 @@ module github.com/Microsoft/go-winio | ||||
| go 1.12 | ||||
|  | ||||
| require ( | ||||
| 	github.com/pkg/errors v0.8.1 | ||||
| 	github.com/sirupsen/logrus v1.4.1 | ||||
| 	golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3 | ||||
| 	github.com/pkg/errors v0.9.1 | ||||
| 	github.com/sirupsen/logrus v1.7.0 | ||||
| 	golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c | ||||
| ) | ||||
|   | ||||
							
								
								
									
										20
									
								
								vendor/github.com/Microsoft/go-winio/go.sum
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								vendor/github.com/Microsoft/go-winio/go.sum
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,18 +1,14 @@ | ||||
| github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= | ||||
| github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||
| github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= | ||||
| github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= | ||||
| github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= | ||||
| github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | ||||
| github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= | ||||
| github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | ||||
| github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | ||||
| github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||
| github.com/sirupsen/logrus v1.4.1 h1:GL2rEmy6nsikmW0r8opw9JIRScdMF5hA8cOYLH7In1k= | ||||
| github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= | ||||
| github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | ||||
| github.com/sirupsen/logrus v1.7.0 h1:ShrD1U9pZB12TX0cVy0DtePoCH97K8EtX+mg7ZARUtM= | ||||
| github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= | ||||
| github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= | ||||
| github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= | ||||
| golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | ||||
| golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b h1:ag/x1USPSsqHud38I9BAC88qdNLDHHtQ4mlgQIZPPNA= | ||||
| golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3 h1:7TYNF4UdlohbFwpNH04CoPMp1cHUZgO1Ebq5r2hIjfo= | ||||
| golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20191026070338-33540a1f6037 h1:YyJpGZS1sBuBCzLAR1VEpK193GlqGZbnPFnPV/5Rsb4= | ||||
| golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c h1:VwygUrnw9jn88c4u8GD3rZQbqrP/tgas88tPUbBxQrk= | ||||
| golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
|   | ||||
							
								
								
									
										2
									
								
								vendor/github.com/Microsoft/go-winio/hvsock.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/Microsoft/go-winio/hvsock.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,3 +1,5 @@ | ||||
| // +build windows | ||||
|  | ||||
| package winio | ||||
|  | ||||
| import ( | ||||
|   | ||||
							
								
								
									
										4
									
								
								vendor/github.com/Microsoft/go-winio/pipe.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/Microsoft/go-winio/pipe.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -429,10 +429,10 @@ type PipeConfig struct { | ||||
| 	// when the pipe is in message mode. | ||||
| 	MessageMode bool | ||||
|  | ||||
| 	// InputBufferSize specifies the size the input buffer, in bytes. | ||||
| 	// InputBufferSize specifies the size of the input buffer, in bytes. | ||||
| 	InputBufferSize int32 | ||||
|  | ||||
| 	// OutputBufferSize specifies the size the input buffer, in bytes. | ||||
| 	// OutputBufferSize specifies the size of the output buffer, in bytes. | ||||
| 	OutputBufferSize int32 | ||||
| } | ||||
|  | ||||
|   | ||||
							
								
								
									
										2
									
								
								vendor/github.com/Microsoft/go-winio/pkg/guid/guid.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/Microsoft/go-winio/pkg/guid/guid.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,3 +1,5 @@ | ||||
| // +build windows | ||||
|  | ||||
| // Package guid provides a GUID type. The backing structure for a GUID is | ||||
| // identical to that used by the golang.org/x/sys/windows GUID type. | ||||
| // There are two main binary encodings used for a GUID, the big-endian encoding, | ||||
|   | ||||
							
								
								
									
										161
									
								
								vendor/github.com/Microsoft/go-winio/pkg/security/grantvmgroupaccess.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										161
									
								
								vendor/github.com/Microsoft/go-winio/pkg/security/grantvmgroupaccess.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,161 @@ | ||||
| // +build windows | ||||
|  | ||||
| package security | ||||
|  | ||||
| import ( | ||||
| 	"os" | ||||
| 	"syscall" | ||||
| 	"unsafe" | ||||
|  | ||||
| 	"github.com/pkg/errors" | ||||
| ) | ||||
|  | ||||
| type ( | ||||
| 	accessMask          uint32 | ||||
| 	accessMode          uint32 | ||||
| 	desiredAccess       uint32 | ||||
| 	inheritMode         uint32 | ||||
| 	objectType          uint32 | ||||
| 	shareMode           uint32 | ||||
| 	securityInformation uint32 | ||||
| 	trusteeForm         uint32 | ||||
| 	trusteeType         uint32 | ||||
|  | ||||
| 	explicitAccess struct { | ||||
| 		accessPermissions accessMask | ||||
| 		accessMode        accessMode | ||||
| 		inheritance       inheritMode | ||||
| 		trustee           trustee | ||||
| 	} | ||||
|  | ||||
| 	trustee struct { | ||||
| 		multipleTrustee          *trustee | ||||
| 		multipleTrusteeOperation int32 | ||||
| 		trusteeForm              trusteeForm | ||||
| 		trusteeType              trusteeType | ||||
| 		name                     uintptr | ||||
| 	} | ||||
| ) | ||||
|  | ||||
| const ( | ||||
| 	accessMaskDesiredPermission accessMask = 1 << 31 // GENERIC_READ | ||||
|  | ||||
| 	accessModeGrant accessMode = 1 | ||||
|  | ||||
| 	desiredAccessReadControl desiredAccess = 0x20000 | ||||
| 	desiredAccessWriteDac    desiredAccess = 0x40000 | ||||
|  | ||||
| 	gvmga = "GrantVmGroupAccess:" | ||||
|  | ||||
| 	inheritModeNoInheritance                  inheritMode = 0x0 | ||||
| 	inheritModeSubContainersAndObjectsInherit inheritMode = 0x3 | ||||
|  | ||||
| 	objectTypeFileObject objectType = 0x1 | ||||
|  | ||||
| 	securityInformationDACL securityInformation = 0x4 | ||||
|  | ||||
| 	shareModeRead  shareMode = 0x1 | ||||
| 	shareModeWrite shareMode = 0x2 | ||||
|  | ||||
| 	sidVmGroup = "S-1-5-83-0" | ||||
|  | ||||
| 	trusteeFormIsSid trusteeForm = 0 | ||||
|  | ||||
| 	trusteeTypeWellKnownGroup trusteeType = 5 | ||||
| ) | ||||
|  | ||||
| // GrantVMGroupAccess sets the DACL for a specified file or directory to | ||||
| // include Grant ACE entries for the VM Group SID. This is a golang re- | ||||
| // implementation of the same function in vmcompute, just not exported in | ||||
| // RS5. Which kind of sucks. Sucks a lot :/ | ||||
| func GrantVmGroupAccess(name string) error { | ||||
| 	// Stat (to determine if `name` is a directory). | ||||
| 	s, err := os.Stat(name) | ||||
| 	if err != nil { | ||||
| 		return errors.Wrapf(err, "%s os.Stat %s", gvmga, name) | ||||
| 	} | ||||
|  | ||||
| 	// Get a handle to the file/directory. Must defer Close on success. | ||||
| 	fd, err := createFile(name, s.IsDir()) | ||||
| 	if err != nil { | ||||
| 		return err // Already wrapped | ||||
| 	} | ||||
| 	defer syscall.CloseHandle(fd) | ||||
|  | ||||
| 	// Get the current DACL and Security Descriptor. Must defer LocalFree on success. | ||||
| 	ot := objectTypeFileObject | ||||
| 	si := securityInformationDACL | ||||
| 	sd := uintptr(0) | ||||
| 	origDACL := uintptr(0) | ||||
| 	if err := getSecurityInfo(fd, uint32(ot), uint32(si), nil, nil, &origDACL, nil, &sd); err != nil { | ||||
| 		return errors.Wrapf(err, "%s GetSecurityInfo %s", gvmga, name) | ||||
| 	} | ||||
| 	defer syscall.LocalFree((syscall.Handle)(unsafe.Pointer(sd))) | ||||
|  | ||||
| 	// Generate a new DACL which is the current DACL with the required ACEs added. | ||||
| 	// Must defer LocalFree on success. | ||||
| 	newDACL, err := generateDACLWithAcesAdded(name, s.IsDir(), origDACL) | ||||
| 	if err != nil { | ||||
| 		return err // Already wrapped | ||||
| 	} | ||||
| 	defer syscall.LocalFree((syscall.Handle)(unsafe.Pointer(newDACL))) | ||||
|  | ||||
| 	// And finally use SetSecurityInfo to apply the updated DACL. | ||||
| 	if err := setSecurityInfo(fd, uint32(ot), uint32(si), uintptr(0), uintptr(0), newDACL, uintptr(0)); err != nil { | ||||
| 		return errors.Wrapf(err, "%s SetSecurityInfo %s", gvmga, name) | ||||
| 	} | ||||
|  | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // createFile is a helper function to call [Nt]CreateFile to get a handle to | ||||
| // the file or directory. | ||||
| func createFile(name string, isDir bool) (syscall.Handle, error) { | ||||
| 	namep := syscall.StringToUTF16(name) | ||||
| 	da := uint32(desiredAccessReadControl | desiredAccessWriteDac) | ||||
| 	sm := uint32(shareModeRead | shareModeWrite) | ||||
| 	fa := uint32(syscall.FILE_ATTRIBUTE_NORMAL) | ||||
| 	if isDir { | ||||
| 		fa = uint32(fa | syscall.FILE_FLAG_BACKUP_SEMANTICS) | ||||
| 	} | ||||
| 	fd, err := syscall.CreateFile(&namep[0], da, sm, nil, syscall.OPEN_EXISTING, fa, 0) | ||||
| 	if err != nil { | ||||
| 		return 0, errors.Wrapf(err, "%s syscall.CreateFile %s", gvmga, name) | ||||
| 	} | ||||
| 	return fd, nil | ||||
| } | ||||
|  | ||||
| // generateDACLWithAcesAdded generates a new DACL with the two needed ACEs added. | ||||
| // The caller is responsible for LocalFree of the returned DACL on success. | ||||
| func generateDACLWithAcesAdded(name string, isDir bool, origDACL uintptr) (uintptr, error) { | ||||
| 	// Generate pointers to the SIDs based on the string SIDs | ||||
| 	sid, err := syscall.StringToSid(sidVmGroup) | ||||
| 	if err != nil { | ||||
| 		return 0, errors.Wrapf(err, "%s syscall.StringToSid %s %s", gvmga, name, sidVmGroup) | ||||
| 	} | ||||
|  | ||||
| 	inheritance := inheritModeNoInheritance | ||||
| 	if isDir { | ||||
| 		inheritance = inheritModeSubContainersAndObjectsInherit | ||||
| 	} | ||||
|  | ||||
| 	eaArray := []explicitAccess{ | ||||
| 		explicitAccess{ | ||||
| 			accessPermissions: accessMaskDesiredPermission, | ||||
| 			accessMode:        accessModeGrant, | ||||
| 			inheritance:       inheritance, | ||||
| 			trustee: trustee{ | ||||
| 				trusteeForm: trusteeFormIsSid, | ||||
| 				trusteeType: trusteeTypeWellKnownGroup, | ||||
| 				name:        uintptr(unsafe.Pointer(sid)), | ||||
| 			}, | ||||
| 		}, | ||||
| 	} | ||||
|  | ||||
| 	modifiedDACL := uintptr(0) | ||||
| 	if err := setEntriesInAcl(uintptr(uint32(1)), uintptr(unsafe.Pointer(&eaArray[0])), origDACL, &modifiedDACL); err != nil { | ||||
| 		return 0, errors.Wrapf(err, "%s SetEntriesInAcl %s", gvmga, name) | ||||
| 	} | ||||
|  | ||||
| 	return modifiedDACL, nil | ||||
| } | ||||
							
								
								
									
										7
									
								
								vendor/github.com/Microsoft/go-winio/pkg/security/syscall_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								vendor/github.com/Microsoft/go-winio/pkg/security/syscall_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| package security | ||||
|  | ||||
| //go:generate go run mksyscall_windows.go -output zsyscall_windows.go syscall_windows.go | ||||
|  | ||||
| //sys getSecurityInfo(handle syscall.Handle, objectType uint32, si uint32, ppsidOwner **uintptr, ppsidGroup **uintptr, ppDacl *uintptr, ppSacl *uintptr, ppSecurityDescriptor *uintptr) (err error) [failretval!=0] = advapi32.GetSecurityInfo | ||||
| //sys setSecurityInfo(handle syscall.Handle, objectType uint32, si uint32, psidOwner uintptr, psidGroup uintptr, pDacl uintptr, pSacl uintptr) (err error) [failretval!=0] = advapi32.SetSecurityInfo | ||||
| //sys setEntriesInAcl(count uintptr, pListOfEEs uintptr, oldAcl uintptr, newAcl *uintptr) (err error) [failretval!=0] = advapi32.SetEntriesInAclW | ||||
							
								
								
									
										70
									
								
								vendor/github.com/Microsoft/go-winio/pkg/security/zsyscall_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								vendor/github.com/Microsoft/go-winio/pkg/security/zsyscall_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,70 @@ | ||||
| // Code generated by 'go generate'; DO NOT EDIT. | ||||
|  | ||||
| package security | ||||
|  | ||||
| import ( | ||||
| 	"syscall" | ||||
| 	"unsafe" | ||||
|  | ||||
| 	"golang.org/x/sys/windows" | ||||
| ) | ||||
|  | ||||
| var _ unsafe.Pointer | ||||
|  | ||||
| // Do the interface allocations only once for common | ||||
| // Errno values. | ||||
| const ( | ||||
| 	errnoERROR_IO_PENDING = 997 | ||||
| ) | ||||
|  | ||||
| var ( | ||||
| 	errERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING) | ||||
| 	errERROR_EINVAL     error = syscall.EINVAL | ||||
| ) | ||||
|  | ||||
| // errnoErr returns common boxed Errno values, to prevent | ||||
| // allocations at runtime. | ||||
| func errnoErr(e syscall.Errno) error { | ||||
| 	switch e { | ||||
| 	case 0: | ||||
| 		return errERROR_EINVAL | ||||
| 	case errnoERROR_IO_PENDING: | ||||
| 		return errERROR_IO_PENDING | ||||
| 	} | ||||
| 	// TODO: add more here, after collecting data on the common | ||||
| 	// error values see on Windows. (perhaps when running | ||||
| 	// all.bat?) | ||||
| 	return e | ||||
| } | ||||
|  | ||||
| var ( | ||||
| 	modadvapi32 = windows.NewLazySystemDLL("advapi32.dll") | ||||
|  | ||||
| 	procGetSecurityInfo  = modadvapi32.NewProc("GetSecurityInfo") | ||||
| 	procSetEntriesInAclW = modadvapi32.NewProc("SetEntriesInAclW") | ||||
| 	procSetSecurityInfo  = modadvapi32.NewProc("SetSecurityInfo") | ||||
| ) | ||||
|  | ||||
| func getSecurityInfo(handle syscall.Handle, objectType uint32, si uint32, ppsidOwner **uintptr, ppsidGroup **uintptr, ppDacl *uintptr, ppSacl *uintptr, ppSecurityDescriptor *uintptr) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall9(procGetSecurityInfo.Addr(), 8, uintptr(handle), uintptr(objectType), uintptr(si), uintptr(unsafe.Pointer(ppsidOwner)), uintptr(unsafe.Pointer(ppsidGroup)), uintptr(unsafe.Pointer(ppDacl)), uintptr(unsafe.Pointer(ppSacl)), uintptr(unsafe.Pointer(ppSecurityDescriptor)), 0) | ||||
| 	if r1 != 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func setEntriesInAcl(count uintptr, pListOfEEs uintptr, oldAcl uintptr, newAcl *uintptr) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall6(procSetEntriesInAclW.Addr(), 4, uintptr(count), uintptr(pListOfEEs), uintptr(oldAcl), uintptr(unsafe.Pointer(newAcl)), 0, 0) | ||||
| 	if r1 != 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func setSecurityInfo(handle syscall.Handle, objectType uint32, si uint32, psidOwner uintptr, psidGroup uintptr, pDacl uintptr, pSacl uintptr) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall9(procSetSecurityInfo.Addr(), 7, uintptr(handle), uintptr(objectType), uintptr(si), uintptr(psidOwner), uintptr(psidGroup), uintptr(pDacl), uintptr(pSacl), 0, 0) | ||||
| 	if r1 != 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
							
								
								
									
										2
									
								
								vendor/github.com/Microsoft/go-winio/syscall.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/Microsoft/go-winio/syscall.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,3 +1,3 @@ | ||||
| package winio | ||||
|  | ||||
| //go:generate go run $GOROOT/src/syscall/mksyscall_windows.go -output zsyscall_windows.go file.go pipe.go sd.go fileinfo.go privilege.go backup.go hvsock.go | ||||
| //go:generate go run golang.org/x/sys/windows/mkwinsyscall -output zsyscall_windows.go file.go pipe.go sd.go fileinfo.go privilege.go backup.go hvsock.go | ||||
|   | ||||
							
								
								
									
										352
									
								
								vendor/github.com/Microsoft/go-winio/vhd/vhd.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										352
									
								
								vendor/github.com/Microsoft/go-winio/vhd/vhd.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -2,150 +2,322 @@ | ||||
|  | ||||
| package vhd | ||||
|  | ||||
| import "syscall" | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"syscall" | ||||
|  | ||||
| //go:generate go run mksyscall_windows.go -output zvhd.go vhd.go | ||||
| 	"github.com/Microsoft/go-winio/pkg/guid" | ||||
| 	"github.com/pkg/errors" | ||||
| 	"golang.org/x/sys/windows" | ||||
| ) | ||||
|  | ||||
| //sys createVirtualDisk(virtualStorageType *virtualStorageType, path string, virtualDiskAccessMask uint32, securityDescriptor *uintptr, flags uint32, providerSpecificFlags uint32, parameters *createVirtualDiskParameters, o *syscall.Overlapped, handle *syscall.Handle) (err error) [failretval != 0] = VirtDisk.CreateVirtualDisk | ||||
| //sys openVirtualDisk(virtualStorageType *virtualStorageType, path string, virtualDiskAccessMask uint32, flags uint32, parameters *openVirtualDiskParameters, handle *syscall.Handle) (err error) [failretval != 0] = VirtDisk.OpenVirtualDisk | ||||
| //sys detachVirtualDisk(handle syscall.Handle, flags uint32, providerSpecificFlags uint32) (err error) [failretval != 0] = VirtDisk.DetachVirtualDisk | ||||
| //go:generate go run mksyscall_windows.go -output zvhd_windows.go vhd.go | ||||
|  | ||||
| type virtualStorageType struct { | ||||
| 	DeviceID uint32 | ||||
| 	VendorID [16]byte | ||||
| } | ||||
| //sys createVirtualDisk(virtualStorageType *VirtualStorageType, path string, virtualDiskAccessMask uint32, securityDescriptor *uintptr, createVirtualDiskFlags uint32, providerSpecificFlags uint32, parameters *CreateVirtualDiskParameters, overlapped *syscall.Overlapped, handle *syscall.Handle) (err error) [failretval != 0] = virtdisk.CreateVirtualDisk | ||||
| //sys openVirtualDisk(virtualStorageType *VirtualStorageType, path string, virtualDiskAccessMask uint32, openVirtualDiskFlags uint32, parameters *OpenVirtualDiskParameters, handle *syscall.Handle) (err error) [failretval != 0] = virtdisk.OpenVirtualDisk | ||||
| //sys attachVirtualDisk(handle syscall.Handle, securityDescriptor *uintptr, attachVirtualDiskFlag uint32, providerSpecificFlags uint32, parameters *AttachVirtualDiskParameters, overlapped *syscall.Overlapped) (err error) [failretval != 0] = virtdisk.AttachVirtualDisk | ||||
| //sys detachVirtualDisk(handle syscall.Handle, detachVirtualDiskFlags uint32, providerSpecificFlags uint32) (err error) [failretval != 0] = virtdisk.DetachVirtualDisk | ||||
| //sys getVirtualDiskPhysicalPath(handle syscall.Handle, diskPathSizeInBytes *uint32, buffer *uint16) (err error) [failretval != 0] = virtdisk.GetVirtualDiskPhysicalPath | ||||
|  | ||||
| type ( | ||||
| 	createVirtualDiskFlag uint32 | ||||
| 	VirtualDiskAccessMask uint32 | ||||
| 	CreateVirtualDiskFlag uint32 | ||||
| 	VirtualDiskFlag       uint32 | ||||
| 	AttachVirtualDiskFlag uint32 | ||||
| 	DetachVirtualDiskFlag uint32 | ||||
| 	VirtualDiskAccessMask uint32 | ||||
| ) | ||||
|  | ||||
| const ( | ||||
| 	// Flags for creating a VHD (not exported) | ||||
| 	createVirtualDiskFlagNone                        createVirtualDiskFlag = 0 | ||||
| 	createVirtualDiskFlagFullPhysicalAllocation      createVirtualDiskFlag = 1 | ||||
| 	createVirtualDiskFlagPreventWritesToSourceDisk   createVirtualDiskFlag = 2 | ||||
| 	createVirtualDiskFlagDoNotCopyMetadataFromParent createVirtualDiskFlag = 4 | ||||
| type VirtualStorageType struct { | ||||
| 	DeviceID uint32 | ||||
| 	VendorID guid.GUID | ||||
| } | ||||
|  | ||||
| 	// Access Mask for opening a VHD | ||||
| 	VirtualDiskAccessNone     VirtualDiskAccessMask = 0 | ||||
| 	VirtualDiskAccessAttachRO VirtualDiskAccessMask = 65536 | ||||
| 	VirtualDiskAccessAttachRW VirtualDiskAccessMask = 131072 | ||||
| 	VirtualDiskAccessDetach   VirtualDiskAccessMask = 262144 | ||||
| 	VirtualDiskAccessGetInfo  VirtualDiskAccessMask = 524288 | ||||
| 	VirtualDiskAccessCreate   VirtualDiskAccessMask = 1048576 | ||||
| 	VirtualDiskAccessMetaOps  VirtualDiskAccessMask = 2097152 | ||||
| 	VirtualDiskAccessRead     VirtualDiskAccessMask = 851968 | ||||
| 	VirtualDiskAccessAll      VirtualDiskAccessMask = 4128768 | ||||
| 	VirtualDiskAccessWritable VirtualDiskAccessMask = 3276800 | ||||
|  | ||||
| 	// Flags for opening a VHD | ||||
| 	OpenVirtualDiskFlagNone                        VirtualDiskFlag = 0 | ||||
| 	OpenVirtualDiskFlagNoParents                   VirtualDiskFlag = 0x1 | ||||
| 	OpenVirtualDiskFlagBlankFile                   VirtualDiskFlag = 0x2 | ||||
| 	OpenVirtualDiskFlagBootDrive                   VirtualDiskFlag = 0x4 | ||||
| 	OpenVirtualDiskFlagCachedIO                    VirtualDiskFlag = 0x8 | ||||
| 	OpenVirtualDiskFlagCustomDiffChain             VirtualDiskFlag = 0x10 | ||||
| 	OpenVirtualDiskFlagParentCachedIO              VirtualDiskFlag = 0x20 | ||||
| 	OpenVirtualDiskFlagVhdSetFileOnly              VirtualDiskFlag = 0x40 | ||||
| 	OpenVirtualDiskFlagIgnoreRelativeParentLocator VirtualDiskFlag = 0x80 | ||||
| 	OpenVirtualDiskFlagNoWriteHardening            VirtualDiskFlag = 0x100 | ||||
| ) | ||||
|  | ||||
| type createVersion2 struct { | ||||
| 	UniqueID                 [16]byte // GUID | ||||
| type CreateVersion2 struct { | ||||
| 	UniqueID                 guid.GUID | ||||
| 	MaximumSize              uint64 | ||||
| 	BlockSizeInBytes         uint32 | ||||
| 	SectorSizeInBytes        uint32 | ||||
| 	PhysicalSectorSizeInByte uint32 | ||||
| 	ParentPath               *uint16 // string | ||||
| 	SourcePath               *uint16 // string | ||||
| 	OpenFlags                uint32 | ||||
| 	ParentVirtualStorageType virtualStorageType | ||||
| 	SourceVirtualStorageType virtualStorageType | ||||
| 	ResiliencyGUID           [16]byte // GUID | ||||
| 	ParentVirtualStorageType VirtualStorageType | ||||
| 	SourceVirtualStorageType VirtualStorageType | ||||
| 	ResiliencyGUID           guid.GUID | ||||
| } | ||||
|  | ||||
| type createVirtualDiskParameters struct { | ||||
| type CreateVirtualDiskParameters struct { | ||||
| 	Version  uint32 // Must always be set to 2 | ||||
| 	Version2 createVersion2 | ||||
| 	Version2 CreateVersion2 | ||||
| } | ||||
|  | ||||
| type openVersion2 struct { | ||||
| 	GetInfoOnly    int32    // bool but 4-byte aligned | ||||
| 	ReadOnly       int32    // bool but 4-byte aligned | ||||
| 	ResiliencyGUID [16]byte // GUID | ||||
| type OpenVersion2 struct { | ||||
| 	GetInfoOnly    bool | ||||
| 	ReadOnly       bool | ||||
| 	ResiliencyGUID guid.GUID | ||||
| } | ||||
|  | ||||
| type openVirtualDiskParameters struct { | ||||
| type OpenVirtualDiskParameters struct { | ||||
| 	Version  uint32 // Must always be set to 2 | ||||
| 	Version2 openVersion2 | ||||
| 	Version2 OpenVersion2 | ||||
| } | ||||
|  | ||||
| // CreateVhdx will create a simple vhdx file at the given path using default values. | ||||
| type AttachVersion2 struct { | ||||
| 	RestrictedOffset uint64 | ||||
| 	RestrictedLength uint64 | ||||
| } | ||||
|  | ||||
| type AttachVirtualDiskParameters struct { | ||||
| 	Version  uint32 // Must always be set to 2 | ||||
| 	Version2 AttachVersion2 | ||||
| } | ||||
|  | ||||
| const ( | ||||
| 	VIRTUAL_STORAGE_TYPE_DEVICE_VHDX = 0x3 | ||||
|  | ||||
| 	// Access Mask for opening a VHD | ||||
| 	VirtualDiskAccessNone     VirtualDiskAccessMask = 0x00000000 | ||||
| 	VirtualDiskAccessAttachRO VirtualDiskAccessMask = 0x00010000 | ||||
| 	VirtualDiskAccessAttachRW VirtualDiskAccessMask = 0x00020000 | ||||
| 	VirtualDiskAccessDetach   VirtualDiskAccessMask = 0x00040000 | ||||
| 	VirtualDiskAccessGetInfo  VirtualDiskAccessMask = 0x00080000 | ||||
| 	VirtualDiskAccessCreate   VirtualDiskAccessMask = 0x00100000 | ||||
| 	VirtualDiskAccessMetaOps  VirtualDiskAccessMask = 0x00200000 | ||||
| 	VirtualDiskAccessRead     VirtualDiskAccessMask = 0x000d0000 | ||||
| 	VirtualDiskAccessAll      VirtualDiskAccessMask = 0x003f0000 | ||||
| 	VirtualDiskAccessWritable VirtualDiskAccessMask = 0x00320000 | ||||
|  | ||||
| 	// Flags for creating a VHD | ||||
| 	CreateVirtualDiskFlagNone                              CreateVirtualDiskFlag = 0x0 | ||||
| 	CreateVirtualDiskFlagFullPhysicalAllocation            CreateVirtualDiskFlag = 0x1 | ||||
| 	CreateVirtualDiskFlagPreventWritesToSourceDisk         CreateVirtualDiskFlag = 0x2 | ||||
| 	CreateVirtualDiskFlagDoNotCopyMetadataFromParent       CreateVirtualDiskFlag = 0x4 | ||||
| 	CreateVirtualDiskFlagCreateBackingStorage              CreateVirtualDiskFlag = 0x8 | ||||
| 	CreateVirtualDiskFlagUseChangeTrackingSourceLimit      CreateVirtualDiskFlag = 0x10 | ||||
| 	CreateVirtualDiskFlagPreserveParentChangeTrackingState CreateVirtualDiskFlag = 0x20 | ||||
| 	CreateVirtualDiskFlagVhdSetUseOriginalBackingStorage   CreateVirtualDiskFlag = 0x40 | ||||
| 	CreateVirtualDiskFlagSparseFile                        CreateVirtualDiskFlag = 0x80 | ||||
| 	CreateVirtualDiskFlagPmemCompatible                    CreateVirtualDiskFlag = 0x100 | ||||
| 	CreateVirtualDiskFlagSupportCompressedVolumes          CreateVirtualDiskFlag = 0x200 | ||||
|  | ||||
| 	// Flags for opening a VHD | ||||
| 	OpenVirtualDiskFlagNone                        VirtualDiskFlag = 0x00000000 | ||||
| 	OpenVirtualDiskFlagNoParents                   VirtualDiskFlag = 0x00000001 | ||||
| 	OpenVirtualDiskFlagBlankFile                   VirtualDiskFlag = 0x00000002 | ||||
| 	OpenVirtualDiskFlagBootDrive                   VirtualDiskFlag = 0x00000004 | ||||
| 	OpenVirtualDiskFlagCachedIO                    VirtualDiskFlag = 0x00000008 | ||||
| 	OpenVirtualDiskFlagCustomDiffChain             VirtualDiskFlag = 0x00000010 | ||||
| 	OpenVirtualDiskFlagParentCachedIO              VirtualDiskFlag = 0x00000020 | ||||
| 	OpenVirtualDiskFlagVhdsetFileOnly              VirtualDiskFlag = 0x00000040 | ||||
| 	OpenVirtualDiskFlagIgnoreRelativeParentLocator VirtualDiskFlag = 0x00000080 | ||||
| 	OpenVirtualDiskFlagNoWriteHardening            VirtualDiskFlag = 0x00000100 | ||||
| 	OpenVirtualDiskFlagSupportCompressedVolumes    VirtualDiskFlag = 0x00000200 | ||||
|  | ||||
| 	// Flags for attaching a VHD | ||||
| 	AttachVirtualDiskFlagNone                          AttachVirtualDiskFlag = 0x00000000 | ||||
| 	AttachVirtualDiskFlagReadOnly                      AttachVirtualDiskFlag = 0x00000001 | ||||
| 	AttachVirtualDiskFlagNoDriveLetter                 AttachVirtualDiskFlag = 0x00000002 | ||||
| 	AttachVirtualDiskFlagPermanentLifetime             AttachVirtualDiskFlag = 0x00000004 | ||||
| 	AttachVirtualDiskFlagNoLocalHost                   AttachVirtualDiskFlag = 0x00000008 | ||||
| 	AttachVirtualDiskFlagNoSecurityDescriptor          AttachVirtualDiskFlag = 0x00000010 | ||||
| 	AttachVirtualDiskFlagBypassDefaultEncryptionPolicy AttachVirtualDiskFlag = 0x00000020 | ||||
| 	AttachVirtualDiskFlagNonPnp                        AttachVirtualDiskFlag = 0x00000040 | ||||
| 	AttachVirtualDiskFlagRestrictedRange               AttachVirtualDiskFlag = 0x00000080 | ||||
| 	AttachVirtualDiskFlagSinglePartition               AttachVirtualDiskFlag = 0x00000100 | ||||
| 	AttachVirtualDiskFlagRegisterVolume                AttachVirtualDiskFlag = 0x00000200 | ||||
|  | ||||
| 	// Flags for detaching a VHD | ||||
| 	DetachVirtualDiskFlagNone DetachVirtualDiskFlag = 0x0 | ||||
| ) | ||||
|  | ||||
| // CreateVhdx is a helper function to create a simple vhdx file at the given path using | ||||
| // default values. | ||||
| func CreateVhdx(path string, maxSizeInGb, blockSizeInMb uint32) error { | ||||
| 	var ( | ||||
| 		defaultType virtualStorageType | ||||
| 		handle      syscall.Handle | ||||
| 	) | ||||
|  | ||||
| 	parameters := createVirtualDiskParameters{ | ||||
| 	params := CreateVirtualDiskParameters{ | ||||
| 		Version: 2, | ||||
| 		Version2: createVersion2{ | ||||
| 		Version2: CreateVersion2{ | ||||
| 			MaximumSize:      uint64(maxSizeInGb) * 1024 * 1024 * 1024, | ||||
| 			BlockSizeInBytes: blockSizeInMb * 1024 * 1024, | ||||
| 		}, | ||||
| 	} | ||||
|  | ||||
| 	if err := createVirtualDisk( | ||||
| 		&defaultType, | ||||
| 		path, | ||||
| 		uint32(VirtualDiskAccessNone), | ||||
| 		nil, | ||||
| 		uint32(createVirtualDiskFlagNone), | ||||
| 		0, | ||||
| 		¶meters, | ||||
| 		nil, | ||||
| 		&handle); err != nil { | ||||
| 	handle, err := CreateVirtualDisk(path, VirtualDiskAccessNone, CreateVirtualDiskFlagNone, ¶ms) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	if err := syscall.CloseHandle(handle); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // DetachVhd detaches a mounted container layer vhd found at `path`. | ||||
| // DetachVirtualDisk detaches a virtual hard disk by handle. | ||||
| func DetachVirtualDisk(handle syscall.Handle) (err error) { | ||||
| 	if err := detachVirtualDisk(handle, 0, 0); err != nil { | ||||
| 		return errors.Wrap(err, "failed to detach virtual disk") | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // DetachVhd detaches a vhd found at `path`. | ||||
| func DetachVhd(path string) error { | ||||
| 	handle, err := OpenVirtualDisk( | ||||
| 		path, | ||||
| 		VirtualDiskAccessNone, | ||||
| 		OpenVirtualDiskFlagCachedIO|OpenVirtualDiskFlagIgnoreRelativeParentLocator) | ||||
|  | ||||
| 		OpenVirtualDiskFlagCachedIO|OpenVirtualDiskFlagIgnoreRelativeParentLocator, | ||||
| 	) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	defer syscall.CloseHandle(handle) | ||||
| 	return detachVirtualDisk(handle, 0, 0) | ||||
| 	return DetachVirtualDisk(handle) | ||||
| } | ||||
|  | ||||
| // AttachVirtualDisk attaches a virtual hard disk for use. | ||||
| func AttachVirtualDisk(handle syscall.Handle, attachVirtualDiskFlag AttachVirtualDiskFlag, parameters *AttachVirtualDiskParameters) (err error) { | ||||
| 	// Supports both version 1 and 2 of the attach parameters as version 2 wasn't present in RS5. | ||||
| 	if err := attachVirtualDisk( | ||||
| 		handle, | ||||
| 		nil, | ||||
| 		uint32(attachVirtualDiskFlag), | ||||
| 		0, | ||||
| 		parameters, | ||||
| 		nil, | ||||
| 	); err != nil { | ||||
| 		return errors.Wrap(err, "failed to attach virtual disk") | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // AttachVhd attaches a virtual hard disk at `path` for use. Attaches using version 2 | ||||
| // of the ATTACH_VIRTUAL_DISK_PARAMETERS. | ||||
| func AttachVhd(path string) (err error) { | ||||
| 	handle, err := OpenVirtualDisk( | ||||
| 		path, | ||||
| 		VirtualDiskAccessNone, | ||||
| 		OpenVirtualDiskFlagCachedIO|OpenVirtualDiskFlagIgnoreRelativeParentLocator, | ||||
| 	) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	defer syscall.CloseHandle(handle) | ||||
| 	params := AttachVirtualDiskParameters{Version: 2} | ||||
| 	if err := AttachVirtualDisk( | ||||
| 		handle, | ||||
| 		AttachVirtualDiskFlagNone, | ||||
| 		¶ms, | ||||
| 	); err != nil { | ||||
| 		return errors.Wrap(err, "failed to attach virtual disk") | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // OpenVirtualDisk obtains a handle to a VHD opened with supplied access mask and flags. | ||||
| func OpenVirtualDisk(path string, accessMask VirtualDiskAccessMask, flag VirtualDiskFlag) (syscall.Handle, error) { | ||||
| 	var ( | ||||
| 		defaultType virtualStorageType | ||||
| 		handle      syscall.Handle | ||||
| 	) | ||||
| 	parameters := openVirtualDiskParameters{Version: 2} | ||||
| 	if err := openVirtualDisk( | ||||
| 		&defaultType, | ||||
| 		path, | ||||
| 		uint32(accessMask), | ||||
| 		uint32(flag), | ||||
| func OpenVirtualDisk(vhdPath string, virtualDiskAccessMask VirtualDiskAccessMask, openVirtualDiskFlags VirtualDiskFlag) (syscall.Handle, error) { | ||||
| 	parameters := OpenVirtualDiskParameters{Version: 2} | ||||
| 	handle, err := OpenVirtualDiskWithParameters( | ||||
| 		vhdPath, | ||||
| 		virtualDiskAccessMask, | ||||
| 		openVirtualDiskFlags, | ||||
| 		¶meters, | ||||
| 		&handle); err != nil { | ||||
| 	) | ||||
| 	if err != nil { | ||||
| 		return 0, err | ||||
| 	} | ||||
| 	return handle, nil | ||||
| } | ||||
|  | ||||
| // OpenVirtualDiskWithParameters obtains a handle to a VHD opened with supplied access mask, flags and parameters. | ||||
| func OpenVirtualDiskWithParameters(vhdPath string, virtualDiskAccessMask VirtualDiskAccessMask, openVirtualDiskFlags VirtualDiskFlag, parameters *OpenVirtualDiskParameters) (syscall.Handle, error) { | ||||
| 	var ( | ||||
| 		handle      syscall.Handle | ||||
| 		defaultType VirtualStorageType | ||||
| 	) | ||||
| 	if parameters.Version != 2 { | ||||
| 		return handle, fmt.Errorf("only version 2 VHDs are supported, found version: %d", parameters.Version) | ||||
| 	} | ||||
| 	if err := openVirtualDisk( | ||||
| 		&defaultType, | ||||
| 		vhdPath, | ||||
| 		uint32(virtualDiskAccessMask), | ||||
| 		uint32(openVirtualDiskFlags), | ||||
| 		parameters, | ||||
| 		&handle, | ||||
| 	); err != nil { | ||||
| 		return 0, errors.Wrap(err, "failed to open virtual disk") | ||||
| 	} | ||||
| 	return handle, nil | ||||
| } | ||||
|  | ||||
| // CreateVirtualDisk creates a virtual harddisk and returns a handle to the disk. | ||||
| func CreateVirtualDisk(path string, virtualDiskAccessMask VirtualDiskAccessMask, createVirtualDiskFlags CreateVirtualDiskFlag, parameters *CreateVirtualDiskParameters) (syscall.Handle, error) { | ||||
| 	var ( | ||||
| 		handle      syscall.Handle | ||||
| 		defaultType VirtualStorageType | ||||
| 	) | ||||
| 	if parameters.Version != 2 { | ||||
| 		return handle, fmt.Errorf("only version 2 VHDs are supported, found version: %d", parameters.Version) | ||||
| 	} | ||||
|  | ||||
| 	if err := createVirtualDisk( | ||||
| 		&defaultType, | ||||
| 		path, | ||||
| 		uint32(virtualDiskAccessMask), | ||||
| 		nil, | ||||
| 		uint32(createVirtualDiskFlags), | ||||
| 		0, | ||||
| 		parameters, | ||||
| 		nil, | ||||
| 		&handle, | ||||
| 	); err != nil { | ||||
| 		return handle, errors.Wrap(err, "failed to create virtual disk") | ||||
| 	} | ||||
| 	return handle, nil | ||||
| } | ||||
|  | ||||
| // GetVirtualDiskPhysicalPath takes a handle to a virtual hard disk and returns the physical | ||||
| // path of the disk on the machine. This path is in the form \\.\PhysicalDriveX where X is an integer | ||||
| // that represents the particular enumeration of the physical disk on the caller's system. | ||||
| func GetVirtualDiskPhysicalPath(handle syscall.Handle) (_ string, err error) { | ||||
| 	var ( | ||||
| 		diskPathSizeInBytes uint32 = 256 * 2 // max path length 256 wide chars | ||||
| 		diskPhysicalPathBuf [256]uint16 | ||||
| 	) | ||||
| 	if err := getVirtualDiskPhysicalPath( | ||||
| 		handle, | ||||
| 		&diskPathSizeInBytes, | ||||
| 		&diskPhysicalPathBuf[0], | ||||
| 	); err != nil { | ||||
| 		return "", errors.Wrap(err, "failed to get disk physical path") | ||||
| 	} | ||||
| 	return windows.UTF16ToString(diskPhysicalPathBuf[:]), nil | ||||
| } | ||||
|  | ||||
| // CreateDiffVhd is a helper function to create a differencing virtual disk. | ||||
| func CreateDiffVhd(diffVhdPath, baseVhdPath string, blockSizeInMB uint32) error { | ||||
| 	// Setting `ParentPath` is how to signal to create a differencing disk. | ||||
| 	createParams := &CreateVirtualDiskParameters{ | ||||
| 		Version: 2, | ||||
| 		Version2: CreateVersion2{ | ||||
| 			ParentPath:       windows.StringToUTF16Ptr(baseVhdPath), | ||||
| 			BlockSizeInBytes: blockSizeInMB * 1024 * 1024, | ||||
| 			OpenFlags:        uint32(OpenVirtualDiskFlagCachedIO), | ||||
| 		}, | ||||
| 	} | ||||
|  | ||||
| 	vhdHandle, err := CreateVirtualDisk( | ||||
| 		diffVhdPath, | ||||
| 		VirtualDiskAccessNone, | ||||
| 		CreateVirtualDiskFlagNone, | ||||
| 		createParams, | ||||
| 	) | ||||
| 	if err != nil { | ||||
| 		return fmt.Errorf("failed to create differencing vhd: %s", err) | ||||
| 	} | ||||
| 	if err := syscall.CloseHandle(vhdHandle); err != nil { | ||||
| 		return fmt.Errorf("failed to close differencing vhd handle: %s", err) | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|   | ||||
							
								
								
									
										99
									
								
								vendor/github.com/Microsoft/go-winio/vhd/zvhd.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										99
									
								
								vendor/github.com/Microsoft/go-winio/vhd/zvhd.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,99 +0,0 @@ | ||||
| // MACHINE GENERATED BY 'go generate' COMMAND; DO NOT EDIT | ||||
|  | ||||
| package vhd | ||||
|  | ||||
| import ( | ||||
| 	"syscall" | ||||
| 	"unsafe" | ||||
|  | ||||
| 	"golang.org/x/sys/windows" | ||||
| ) | ||||
|  | ||||
| var _ unsafe.Pointer | ||||
|  | ||||
| // Do the interface allocations only once for common | ||||
| // Errno values. | ||||
| const ( | ||||
| 	errnoERROR_IO_PENDING = 997 | ||||
| ) | ||||
|  | ||||
| var ( | ||||
| 	errERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING) | ||||
| ) | ||||
|  | ||||
| // errnoErr returns common boxed Errno values, to prevent | ||||
| // allocations at runtime. | ||||
| func errnoErr(e syscall.Errno) error { | ||||
| 	switch e { | ||||
| 	case 0: | ||||
| 		return nil | ||||
| 	case errnoERROR_IO_PENDING: | ||||
| 		return errERROR_IO_PENDING | ||||
| 	} | ||||
| 	// TODO: add more here, after collecting data on the common | ||||
| 	// error values see on Windows. (perhaps when running | ||||
| 	// all.bat?) | ||||
| 	return e | ||||
| } | ||||
|  | ||||
| var ( | ||||
| 	modVirtDisk = windows.NewLazySystemDLL("VirtDisk.dll") | ||||
|  | ||||
| 	procCreateVirtualDisk = modVirtDisk.NewProc("CreateVirtualDisk") | ||||
| 	procOpenVirtualDisk   = modVirtDisk.NewProc("OpenVirtualDisk") | ||||
| 	procDetachVirtualDisk = modVirtDisk.NewProc("DetachVirtualDisk") | ||||
| ) | ||||
|  | ||||
| func createVirtualDisk(virtualStorageType *virtualStorageType, path string, virtualDiskAccessMask uint32, securityDescriptor *uintptr, flags uint32, providerSpecificFlags uint32, parameters *createVirtualDiskParameters, o *syscall.Overlapped, handle *syscall.Handle) (err error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, err = syscall.UTF16PtrFromString(path) | ||||
| 	if err != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	return _createVirtualDisk(virtualStorageType, _p0, virtualDiskAccessMask, securityDescriptor, flags, providerSpecificFlags, parameters, o, handle) | ||||
| } | ||||
|  | ||||
| func _createVirtualDisk(virtualStorageType *virtualStorageType, path *uint16, virtualDiskAccessMask uint32, securityDescriptor *uintptr, flags uint32, providerSpecificFlags uint32, parameters *createVirtualDiskParameters, o *syscall.Overlapped, handle *syscall.Handle) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall9(procCreateVirtualDisk.Addr(), 9, uintptr(unsafe.Pointer(virtualStorageType)), uintptr(unsafe.Pointer(path)), uintptr(virtualDiskAccessMask), uintptr(unsafe.Pointer(securityDescriptor)), uintptr(flags), uintptr(providerSpecificFlags), uintptr(unsafe.Pointer(parameters)), uintptr(unsafe.Pointer(o)), uintptr(unsafe.Pointer(handle))) | ||||
| 	if r1 != 0 { | ||||
| 		if e1 != 0 { | ||||
| 			err = errnoErr(e1) | ||||
| 		} else { | ||||
| 			err = syscall.EINVAL | ||||
| 		} | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func openVirtualDisk(virtualStorageType *virtualStorageType, path string, virtualDiskAccessMask uint32, flags uint32, parameters *openVirtualDiskParameters, handle *syscall.Handle) (err error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, err = syscall.UTF16PtrFromString(path) | ||||
| 	if err != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	return _openVirtualDisk(virtualStorageType, _p0, virtualDiskAccessMask, flags, parameters, handle) | ||||
| } | ||||
|  | ||||
| func _openVirtualDisk(virtualStorageType *virtualStorageType, path *uint16, virtualDiskAccessMask uint32, flags uint32, parameters *openVirtualDiskParameters, handle *syscall.Handle) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall6(procOpenVirtualDisk.Addr(), 6, uintptr(unsafe.Pointer(virtualStorageType)), uintptr(unsafe.Pointer(path)), uintptr(virtualDiskAccessMask), uintptr(flags), uintptr(unsafe.Pointer(parameters)), uintptr(unsafe.Pointer(handle))) | ||||
| 	if r1 != 0 { | ||||
| 		if e1 != 0 { | ||||
| 			err = errnoErr(e1) | ||||
| 		} else { | ||||
| 			err = syscall.EINVAL | ||||
| 		} | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func detachVirtualDisk(handle syscall.Handle, flags uint32, providerSpecificFlags uint32) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall(procDetachVirtualDisk.Addr(), 3, uintptr(handle), uintptr(flags), uintptr(providerSpecificFlags)) | ||||
| 	if r1 != 0 { | ||||
| 		if e1 != 0 { | ||||
| 			err = errnoErr(e1) | ||||
| 		} else { | ||||
| 			err = syscall.EINVAL | ||||
| 		} | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
							
								
								
									
										106
									
								
								vendor/github.com/Microsoft/go-winio/vhd/zvhd_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										106
									
								
								vendor/github.com/Microsoft/go-winio/vhd/zvhd_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,106 @@ | ||||
| // Code generated by 'go generate'; DO NOT EDIT. | ||||
|  | ||||
| package vhd | ||||
|  | ||||
| import ( | ||||
| 	"syscall" | ||||
| 	"unsafe" | ||||
|  | ||||
| 	"golang.org/x/sys/windows" | ||||
| ) | ||||
|  | ||||
| var _ unsafe.Pointer | ||||
|  | ||||
| // Do the interface allocations only once for common | ||||
| // Errno values. | ||||
| const ( | ||||
| 	errnoERROR_IO_PENDING = 997 | ||||
| ) | ||||
|  | ||||
| var ( | ||||
| 	errERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING) | ||||
| 	errERROR_EINVAL     error = syscall.EINVAL | ||||
| ) | ||||
|  | ||||
| // errnoErr returns common boxed Errno values, to prevent | ||||
| // allocations at runtime. | ||||
| func errnoErr(e syscall.Errno) error { | ||||
| 	switch e { | ||||
| 	case 0: | ||||
| 		return errERROR_EINVAL | ||||
| 	case errnoERROR_IO_PENDING: | ||||
| 		return errERROR_IO_PENDING | ||||
| 	} | ||||
| 	// TODO: add more here, after collecting data on the common | ||||
| 	// error values see on Windows. (perhaps when running | ||||
| 	// all.bat?) | ||||
| 	return e | ||||
| } | ||||
|  | ||||
| var ( | ||||
| 	modvirtdisk = windows.NewLazySystemDLL("virtdisk.dll") | ||||
|  | ||||
| 	procAttachVirtualDisk          = modvirtdisk.NewProc("AttachVirtualDisk") | ||||
| 	procCreateVirtualDisk          = modvirtdisk.NewProc("CreateVirtualDisk") | ||||
| 	procDetachVirtualDisk          = modvirtdisk.NewProc("DetachVirtualDisk") | ||||
| 	procGetVirtualDiskPhysicalPath = modvirtdisk.NewProc("GetVirtualDiskPhysicalPath") | ||||
| 	procOpenVirtualDisk            = modvirtdisk.NewProc("OpenVirtualDisk") | ||||
| ) | ||||
|  | ||||
| func attachVirtualDisk(handle syscall.Handle, securityDescriptor *uintptr, attachVirtualDiskFlag uint32, providerSpecificFlags uint32, parameters *AttachVirtualDiskParameters, overlapped *syscall.Overlapped) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall6(procAttachVirtualDisk.Addr(), 6, uintptr(handle), uintptr(unsafe.Pointer(securityDescriptor)), uintptr(attachVirtualDiskFlag), uintptr(providerSpecificFlags), uintptr(unsafe.Pointer(parameters)), uintptr(unsafe.Pointer(overlapped))) | ||||
| 	if r1 != 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func createVirtualDisk(virtualStorageType *VirtualStorageType, path string, virtualDiskAccessMask uint32, securityDescriptor *uintptr, createVirtualDiskFlags uint32, providerSpecificFlags uint32, parameters *CreateVirtualDiskParameters, overlapped *syscall.Overlapped, handle *syscall.Handle) (err error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, err = syscall.UTF16PtrFromString(path) | ||||
| 	if err != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	return _createVirtualDisk(virtualStorageType, _p0, virtualDiskAccessMask, securityDescriptor, createVirtualDiskFlags, providerSpecificFlags, parameters, overlapped, handle) | ||||
| } | ||||
|  | ||||
| func _createVirtualDisk(virtualStorageType *VirtualStorageType, path *uint16, virtualDiskAccessMask uint32, securityDescriptor *uintptr, createVirtualDiskFlags uint32, providerSpecificFlags uint32, parameters *CreateVirtualDiskParameters, overlapped *syscall.Overlapped, handle *syscall.Handle) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall9(procCreateVirtualDisk.Addr(), 9, uintptr(unsafe.Pointer(virtualStorageType)), uintptr(unsafe.Pointer(path)), uintptr(virtualDiskAccessMask), uintptr(unsafe.Pointer(securityDescriptor)), uintptr(createVirtualDiskFlags), uintptr(providerSpecificFlags), uintptr(unsafe.Pointer(parameters)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(handle))) | ||||
| 	if r1 != 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func detachVirtualDisk(handle syscall.Handle, detachVirtualDiskFlags uint32, providerSpecificFlags uint32) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall(procDetachVirtualDisk.Addr(), 3, uintptr(handle), uintptr(detachVirtualDiskFlags), uintptr(providerSpecificFlags)) | ||||
| 	if r1 != 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func getVirtualDiskPhysicalPath(handle syscall.Handle, diskPathSizeInBytes *uint32, buffer *uint16) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall(procGetVirtualDiskPhysicalPath.Addr(), 3, uintptr(handle), uintptr(unsafe.Pointer(diskPathSizeInBytes)), uintptr(unsafe.Pointer(buffer))) | ||||
| 	if r1 != 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func openVirtualDisk(virtualStorageType *VirtualStorageType, path string, virtualDiskAccessMask uint32, openVirtualDiskFlags uint32, parameters *OpenVirtualDiskParameters, handle *syscall.Handle) (err error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, err = syscall.UTF16PtrFromString(path) | ||||
| 	if err != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	return _openVirtualDisk(virtualStorageType, _p0, virtualDiskAccessMask, openVirtualDiskFlags, parameters, handle) | ||||
| } | ||||
|  | ||||
| func _openVirtualDisk(virtualStorageType *VirtualStorageType, path *uint16, virtualDiskAccessMask uint32, openVirtualDiskFlags uint32, parameters *OpenVirtualDiskParameters, handle *syscall.Handle) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall6(procOpenVirtualDisk.Addr(), 6, uintptr(unsafe.Pointer(virtualStorageType)), uintptr(unsafe.Pointer(path)), uintptr(virtualDiskAccessMask), uintptr(openVirtualDiskFlags), uintptr(unsafe.Pointer(parameters)), uintptr(unsafe.Pointer(handle))) | ||||
| 	if r1 != 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
							
								
								
									
										621
									
								
								vendor/github.com/Microsoft/go-winio/zsyscall_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										621
									
								
								vendor/github.com/Microsoft/go-winio/zsyscall_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -19,6 +19,7 @@ const ( | ||||
|  | ||||
| var ( | ||||
| 	errERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING) | ||||
| 	errERROR_EINVAL     error = syscall.EINVAL | ||||
| ) | ||||
|  | ||||
| // errnoErr returns common boxed Errno values, to prevent | ||||
| @@ -26,7 +27,7 @@ var ( | ||||
| func errnoErr(e syscall.Errno) error { | ||||
| 	switch e { | ||||
| 	case 0: | ||||
| 		return nil | ||||
| 		return errERROR_EINVAL | ||||
| 	case errnoERROR_IO_PENDING: | ||||
| 		return errERROR_IO_PENDING | ||||
| 	} | ||||
| @@ -37,243 +38,62 @@ func errnoErr(e syscall.Errno) error { | ||||
| } | ||||
|  | ||||
| var ( | ||||
| 	modkernel32 = windows.NewLazySystemDLL("kernel32.dll") | ||||
| 	modws2_32   = windows.NewLazySystemDLL("ws2_32.dll") | ||||
| 	modntdll    = windows.NewLazySystemDLL("ntdll.dll") | ||||
| 	modadvapi32 = windows.NewLazySystemDLL("advapi32.dll") | ||||
| 	modkernel32 = windows.NewLazySystemDLL("kernel32.dll") | ||||
| 	modntdll    = windows.NewLazySystemDLL("ntdll.dll") | ||||
| 	modws2_32   = windows.NewLazySystemDLL("ws2_32.dll") | ||||
|  | ||||
| 	procCancelIoEx                                           = modkernel32.NewProc("CancelIoEx") | ||||
| 	procCreateIoCompletionPort                               = modkernel32.NewProc("CreateIoCompletionPort") | ||||
| 	procGetQueuedCompletionStatus                            = modkernel32.NewProc("GetQueuedCompletionStatus") | ||||
| 	procSetFileCompletionNotificationModes                   = modkernel32.NewProc("SetFileCompletionNotificationModes") | ||||
| 	procWSAGetOverlappedResult                               = modws2_32.NewProc("WSAGetOverlappedResult") | ||||
| 	procConnectNamedPipe                                     = modkernel32.NewProc("ConnectNamedPipe") | ||||
| 	procCreateNamedPipeW                                     = modkernel32.NewProc("CreateNamedPipeW") | ||||
| 	procCreateFileW                                          = modkernel32.NewProc("CreateFileW") | ||||
| 	procGetNamedPipeInfo                                     = modkernel32.NewProc("GetNamedPipeInfo") | ||||
| 	procGetNamedPipeHandleStateW                             = modkernel32.NewProc("GetNamedPipeHandleStateW") | ||||
| 	procLocalAlloc                                           = modkernel32.NewProc("LocalAlloc") | ||||
| 	procNtCreateNamedPipeFile                                = modntdll.NewProc("NtCreateNamedPipeFile") | ||||
| 	procRtlNtStatusToDosErrorNoTeb                           = modntdll.NewProc("RtlNtStatusToDosErrorNoTeb") | ||||
| 	procRtlDosPathNameToNtPathName_U                         = modntdll.NewProc("RtlDosPathNameToNtPathName_U") | ||||
| 	procRtlDefaultNpAcl                                      = modntdll.NewProc("RtlDefaultNpAcl") | ||||
| 	procLookupAccountNameW                                   = modadvapi32.NewProc("LookupAccountNameW") | ||||
| 	procAdjustTokenPrivileges                                = modadvapi32.NewProc("AdjustTokenPrivileges") | ||||
| 	procConvertSecurityDescriptorToStringSecurityDescriptorW = modadvapi32.NewProc("ConvertSecurityDescriptorToStringSecurityDescriptorW") | ||||
| 	procConvertSidToStringSidW                               = modadvapi32.NewProc("ConvertSidToStringSidW") | ||||
| 	procConvertStringSecurityDescriptorToSecurityDescriptorW = modadvapi32.NewProc("ConvertStringSecurityDescriptorToSecurityDescriptorW") | ||||
| 	procConvertSecurityDescriptorToStringSecurityDescriptorW = modadvapi32.NewProc("ConvertSecurityDescriptorToStringSecurityDescriptorW") | ||||
| 	procLocalFree                                            = modkernel32.NewProc("LocalFree") | ||||
| 	procGetSecurityDescriptorLength                          = modadvapi32.NewProc("GetSecurityDescriptorLength") | ||||
| 	procGetFileInformationByHandleEx                         = modkernel32.NewProc("GetFileInformationByHandleEx") | ||||
| 	procSetFileInformationByHandle                           = modkernel32.NewProc("SetFileInformationByHandle") | ||||
| 	procAdjustTokenPrivileges                                = modadvapi32.NewProc("AdjustTokenPrivileges") | ||||
| 	procImpersonateSelf                                      = modadvapi32.NewProc("ImpersonateSelf") | ||||
| 	procRevertToSelf                                         = modadvapi32.NewProc("RevertToSelf") | ||||
| 	procOpenThreadToken                                      = modadvapi32.NewProc("OpenThreadToken") | ||||
| 	procGetCurrentThread                                     = modkernel32.NewProc("GetCurrentThread") | ||||
| 	procLookupPrivilegeValueW                                = modadvapi32.NewProc("LookupPrivilegeValueW") | ||||
| 	procLookupPrivilegeNameW                                 = modadvapi32.NewProc("LookupPrivilegeNameW") | ||||
| 	procLookupAccountNameW                                   = modadvapi32.NewProc("LookupAccountNameW") | ||||
| 	procLookupPrivilegeDisplayNameW                          = modadvapi32.NewProc("LookupPrivilegeDisplayNameW") | ||||
| 	procLookupPrivilegeNameW                                 = modadvapi32.NewProc("LookupPrivilegeNameW") | ||||
| 	procLookupPrivilegeValueW                                = modadvapi32.NewProc("LookupPrivilegeValueW") | ||||
| 	procOpenThreadToken                                      = modadvapi32.NewProc("OpenThreadToken") | ||||
| 	procRevertToSelf                                         = modadvapi32.NewProc("RevertToSelf") | ||||
| 	procBackupRead                                           = modkernel32.NewProc("BackupRead") | ||||
| 	procBackupWrite                                          = modkernel32.NewProc("BackupWrite") | ||||
| 	procCancelIoEx                                           = modkernel32.NewProc("CancelIoEx") | ||||
| 	procConnectNamedPipe                                     = modkernel32.NewProc("ConnectNamedPipe") | ||||
| 	procCreateFileW                                          = modkernel32.NewProc("CreateFileW") | ||||
| 	procCreateIoCompletionPort                               = modkernel32.NewProc("CreateIoCompletionPort") | ||||
| 	procCreateNamedPipeW                                     = modkernel32.NewProc("CreateNamedPipeW") | ||||
| 	procGetCurrentThread                                     = modkernel32.NewProc("GetCurrentThread") | ||||
| 	procGetNamedPipeHandleStateW                             = modkernel32.NewProc("GetNamedPipeHandleStateW") | ||||
| 	procGetNamedPipeInfo                                     = modkernel32.NewProc("GetNamedPipeInfo") | ||||
| 	procGetQueuedCompletionStatus                            = modkernel32.NewProc("GetQueuedCompletionStatus") | ||||
| 	procLocalAlloc                                           = modkernel32.NewProc("LocalAlloc") | ||||
| 	procLocalFree                                            = modkernel32.NewProc("LocalFree") | ||||
| 	procSetFileCompletionNotificationModes                   = modkernel32.NewProc("SetFileCompletionNotificationModes") | ||||
| 	procNtCreateNamedPipeFile                                = modntdll.NewProc("NtCreateNamedPipeFile") | ||||
| 	procRtlDefaultNpAcl                                      = modntdll.NewProc("RtlDefaultNpAcl") | ||||
| 	procRtlDosPathNameToNtPathName_U                         = modntdll.NewProc("RtlDosPathNameToNtPathName_U") | ||||
| 	procRtlNtStatusToDosErrorNoTeb                           = modntdll.NewProc("RtlNtStatusToDosErrorNoTeb") | ||||
| 	procWSAGetOverlappedResult                               = modws2_32.NewProc("WSAGetOverlappedResult") | ||||
| 	procbind                                                 = modws2_32.NewProc("bind") | ||||
| ) | ||||
|  | ||||
| func cancelIoEx(file syscall.Handle, o *syscall.Overlapped) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall(procCancelIoEx.Addr(), 2, uintptr(file), uintptr(unsafe.Pointer(o)), 0) | ||||
| 	if r1 == 0 { | ||||
| 		if e1 != 0 { | ||||
| 			err = errnoErr(e1) | ||||
| 		} else { | ||||
| 			err = syscall.EINVAL | ||||
| 		} | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func createIoCompletionPort(file syscall.Handle, port syscall.Handle, key uintptr, threadCount uint32) (newport syscall.Handle, err error) { | ||||
| 	r0, _, e1 := syscall.Syscall6(procCreateIoCompletionPort.Addr(), 4, uintptr(file), uintptr(port), uintptr(key), uintptr(threadCount), 0, 0) | ||||
| 	newport = syscall.Handle(r0) | ||||
| 	if newport == 0 { | ||||
| 		if e1 != 0 { | ||||
| 			err = errnoErr(e1) | ||||
| 		} else { | ||||
| 			err = syscall.EINVAL | ||||
| 		} | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func getQueuedCompletionStatus(port syscall.Handle, bytes *uint32, key *uintptr, o **ioOperation, timeout uint32) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall6(procGetQueuedCompletionStatus.Addr(), 5, uintptr(port), uintptr(unsafe.Pointer(bytes)), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(o)), uintptr(timeout), 0) | ||||
| 	if r1 == 0 { | ||||
| 		if e1 != 0 { | ||||
| 			err = errnoErr(e1) | ||||
| 		} else { | ||||
| 			err = syscall.EINVAL | ||||
| 		} | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func setFileCompletionNotificationModes(h syscall.Handle, flags uint8) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall(procSetFileCompletionNotificationModes.Addr(), 2, uintptr(h), uintptr(flags), 0) | ||||
| 	if r1 == 0 { | ||||
| 		if e1 != 0 { | ||||
| 			err = errnoErr(e1) | ||||
| 		} else { | ||||
| 			err = syscall.EINVAL | ||||
| 		} | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func wsaGetOverlappedResult(h syscall.Handle, o *syscall.Overlapped, bytes *uint32, wait bool, flags *uint32) (err error) { | ||||
| func adjustTokenPrivileges(token windows.Token, releaseAll bool, input *byte, outputSize uint32, output *byte, requiredSize *uint32) (success bool, err error) { | ||||
| 	var _p0 uint32 | ||||
| 	if wait { | ||||
| 	if releaseAll { | ||||
| 		_p0 = 1 | ||||
| 	} else { | ||||
| 		_p0 = 0 | ||||
| 	} | ||||
| 	r1, _, e1 := syscall.Syscall6(procWSAGetOverlappedResult.Addr(), 5, uintptr(h), uintptr(unsafe.Pointer(o)), uintptr(unsafe.Pointer(bytes)), uintptr(_p0), uintptr(unsafe.Pointer(flags)), 0) | ||||
| 	r0, _, e1 := syscall.Syscall6(procAdjustTokenPrivileges.Addr(), 6, uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(input)), uintptr(outputSize), uintptr(unsafe.Pointer(output)), uintptr(unsafe.Pointer(requiredSize))) | ||||
| 	success = r0 != 0 | ||||
| 	if true { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func convertSecurityDescriptorToStringSecurityDescriptor(sd *byte, revision uint32, secInfo uint32, sddl **uint16, sddlSize *uint32) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall6(procConvertSecurityDescriptorToStringSecurityDescriptorW.Addr(), 5, uintptr(unsafe.Pointer(sd)), uintptr(revision), uintptr(secInfo), uintptr(unsafe.Pointer(sddl)), uintptr(unsafe.Pointer(sddlSize)), 0) | ||||
| 	if r1 == 0 { | ||||
| 		if e1 != 0 { | ||||
| 			err = errnoErr(e1) | ||||
| 		} else { | ||||
| 			err = syscall.EINVAL | ||||
| 		} | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func connectNamedPipe(pipe syscall.Handle, o *syscall.Overlapped) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall(procConnectNamedPipe.Addr(), 2, uintptr(pipe), uintptr(unsafe.Pointer(o)), 0) | ||||
| 	if r1 == 0 { | ||||
| 		if e1 != 0 { | ||||
| 			err = errnoErr(e1) | ||||
| 		} else { | ||||
| 			err = syscall.EINVAL | ||||
| 		} | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func createNamedPipe(name string, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *syscall.SecurityAttributes) (handle syscall.Handle, err error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, err = syscall.UTF16PtrFromString(name) | ||||
| 	if err != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	return _createNamedPipe(_p0, flags, pipeMode, maxInstances, outSize, inSize, defaultTimeout, sa) | ||||
| } | ||||
|  | ||||
| func _createNamedPipe(name *uint16, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *syscall.SecurityAttributes) (handle syscall.Handle, err error) { | ||||
| 	r0, _, e1 := syscall.Syscall9(procCreateNamedPipeW.Addr(), 8, uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(pipeMode), uintptr(maxInstances), uintptr(outSize), uintptr(inSize), uintptr(defaultTimeout), uintptr(unsafe.Pointer(sa)), 0) | ||||
| 	handle = syscall.Handle(r0) | ||||
| 	if handle == syscall.InvalidHandle { | ||||
| 		if e1 != 0 { | ||||
| 			err = errnoErr(e1) | ||||
| 		} else { | ||||
| 			err = syscall.EINVAL | ||||
| 		} | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func createFile(name string, access uint32, mode uint32, sa *syscall.SecurityAttributes, createmode uint32, attrs uint32, templatefile syscall.Handle) (handle syscall.Handle, err error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, err = syscall.UTF16PtrFromString(name) | ||||
| 	if err != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	return _createFile(_p0, access, mode, sa, createmode, attrs, templatefile) | ||||
| } | ||||
|  | ||||
| func _createFile(name *uint16, access uint32, mode uint32, sa *syscall.SecurityAttributes, createmode uint32, attrs uint32, templatefile syscall.Handle) (handle syscall.Handle, err error) { | ||||
| 	r0, _, e1 := syscall.Syscall9(procCreateFileW.Addr(), 7, uintptr(unsafe.Pointer(name)), uintptr(access), uintptr(mode), uintptr(unsafe.Pointer(sa)), uintptr(createmode), uintptr(attrs), uintptr(templatefile), 0, 0) | ||||
| 	handle = syscall.Handle(r0) | ||||
| 	if handle == syscall.InvalidHandle { | ||||
| 		if e1 != 0 { | ||||
| 			err = errnoErr(e1) | ||||
| 		} else { | ||||
| 			err = syscall.EINVAL | ||||
| 		} | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func getNamedPipeInfo(pipe syscall.Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall6(procGetNamedPipeInfo.Addr(), 5, uintptr(pipe), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(outSize)), uintptr(unsafe.Pointer(inSize)), uintptr(unsafe.Pointer(maxInstances)), 0) | ||||
| 	if r1 == 0 { | ||||
| 		if e1 != 0 { | ||||
| 			err = errnoErr(e1) | ||||
| 		} else { | ||||
| 			err = syscall.EINVAL | ||||
| 		} | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func getNamedPipeHandleState(pipe syscall.Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall9(procGetNamedPipeHandleStateW.Addr(), 7, uintptr(pipe), uintptr(unsafe.Pointer(state)), uintptr(unsafe.Pointer(curInstances)), uintptr(unsafe.Pointer(maxCollectionCount)), uintptr(unsafe.Pointer(collectDataTimeout)), uintptr(unsafe.Pointer(userName)), uintptr(maxUserNameSize), 0, 0) | ||||
| 	if r1 == 0 { | ||||
| 		if e1 != 0 { | ||||
| 			err = errnoErr(e1) | ||||
| 		} else { | ||||
| 			err = syscall.EINVAL | ||||
| 		} | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func localAlloc(uFlags uint32, length uint32) (ptr uintptr) { | ||||
| 	r0, _, _ := syscall.Syscall(procLocalAlloc.Addr(), 2, uintptr(uFlags), uintptr(length), 0) | ||||
| 	ptr = uintptr(r0) | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func ntCreateNamedPipeFile(pipe *syscall.Handle, access uint32, oa *objectAttributes, iosb *ioStatusBlock, share uint32, disposition uint32, options uint32, typ uint32, readMode uint32, completionMode uint32, maxInstances uint32, inboundQuota uint32, outputQuota uint32, timeout *int64) (status ntstatus) { | ||||
| 	r0, _, _ := syscall.Syscall15(procNtCreateNamedPipeFile.Addr(), 14, uintptr(unsafe.Pointer(pipe)), uintptr(access), uintptr(unsafe.Pointer(oa)), uintptr(unsafe.Pointer(iosb)), uintptr(share), uintptr(disposition), uintptr(options), uintptr(typ), uintptr(readMode), uintptr(completionMode), uintptr(maxInstances), uintptr(inboundQuota), uintptr(outputQuota), uintptr(unsafe.Pointer(timeout)), 0) | ||||
| 	status = ntstatus(r0) | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func rtlNtStatusToDosError(status ntstatus) (winerr error) { | ||||
| 	r0, _, _ := syscall.Syscall(procRtlNtStatusToDosErrorNoTeb.Addr(), 1, uintptr(status), 0, 0) | ||||
| 	if r0 != 0 { | ||||
| 		winerr = syscall.Errno(r0) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func rtlDosPathNameToNtPathName(name *uint16, ntName *unicodeString, filePart uintptr, reserved uintptr) (status ntstatus) { | ||||
| 	r0, _, _ := syscall.Syscall6(procRtlDosPathNameToNtPathName_U.Addr(), 4, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(ntName)), uintptr(filePart), uintptr(reserved), 0, 0) | ||||
| 	status = ntstatus(r0) | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func rtlDefaultNpAcl(dacl *uintptr) (status ntstatus) { | ||||
| 	r0, _, _ := syscall.Syscall(procRtlDefaultNpAcl.Addr(), 1, uintptr(unsafe.Pointer(dacl)), 0, 0) | ||||
| 	status = ntstatus(r0) | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func lookupAccountName(systemName *uint16, accountName string, sid *byte, sidSize *uint32, refDomain *uint16, refDomainSize *uint32, sidNameUse *uint32) (err error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, err = syscall.UTF16PtrFromString(accountName) | ||||
| 	if err != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	return _lookupAccountName(systemName, _p0, sid, sidSize, refDomain, refDomainSize, sidNameUse) | ||||
| } | ||||
|  | ||||
| func _lookupAccountName(systemName *uint16, accountName *uint16, sid *byte, sidSize *uint32, refDomain *uint16, refDomainSize *uint32, sidNameUse *uint32) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall9(procLookupAccountNameW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(accountName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sidSize)), uintptr(unsafe.Pointer(refDomain)), uintptr(unsafe.Pointer(refDomainSize)), uintptr(unsafe.Pointer(sidNameUse)), 0, 0) | ||||
| 	if r1 == 0 { | ||||
| 		if e1 != 0 { | ||||
| 			err = errnoErr(e1) | ||||
| 		} else { | ||||
| 			err = syscall.EINVAL | ||||
| 		} | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
| @@ -281,11 +101,7 @@ func _lookupAccountName(systemName *uint16, accountName *uint16, sid *byte, sidS | ||||
| func convertSidToStringSid(sid *byte, str **uint16) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall(procConvertSidToStringSidW.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(str)), 0) | ||||
| 	if r1 == 0 { | ||||
| 		if e1 != 0 { | ||||
| 			err = errnoErr(e1) | ||||
| 		} else { | ||||
| 			err = syscall.EINVAL | ||||
| 		} | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
| @@ -302,126 +118,73 @@ func convertStringSecurityDescriptorToSecurityDescriptor(str string, revision ui | ||||
| func _convertStringSecurityDescriptorToSecurityDescriptor(str *uint16, revision uint32, sd *uintptr, size *uint32) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall6(procConvertStringSecurityDescriptorToSecurityDescriptorW.Addr(), 4, uintptr(unsafe.Pointer(str)), uintptr(revision), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(size)), 0, 0) | ||||
| 	if r1 == 0 { | ||||
| 		if e1 != 0 { | ||||
| 			err = errnoErr(e1) | ||||
| 		} else { | ||||
| 			err = syscall.EINVAL | ||||
| 		} | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func convertSecurityDescriptorToStringSecurityDescriptor(sd *byte, revision uint32, secInfo uint32, sddl **uint16, sddlSize *uint32) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall6(procConvertSecurityDescriptorToStringSecurityDescriptorW.Addr(), 5, uintptr(unsafe.Pointer(sd)), uintptr(revision), uintptr(secInfo), uintptr(unsafe.Pointer(sddl)), uintptr(unsafe.Pointer(sddlSize)), 0) | ||||
| 	if r1 == 0 { | ||||
| 		if e1 != 0 { | ||||
| 			err = errnoErr(e1) | ||||
| 		} else { | ||||
| 			err = syscall.EINVAL | ||||
| 		} | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func localFree(mem uintptr) { | ||||
| 	syscall.Syscall(procLocalFree.Addr(), 1, uintptr(mem), 0, 0) | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func getSecurityDescriptorLength(sd uintptr) (len uint32) { | ||||
| 	r0, _, _ := syscall.Syscall(procGetSecurityDescriptorLength.Addr(), 1, uintptr(sd), 0, 0) | ||||
| 	len = uint32(r0) | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func getFileInformationByHandleEx(h syscall.Handle, class uint32, buffer *byte, size uint32) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall6(procGetFileInformationByHandleEx.Addr(), 4, uintptr(h), uintptr(class), uintptr(unsafe.Pointer(buffer)), uintptr(size), 0, 0) | ||||
| 	if r1 == 0 { | ||||
| 		if e1 != 0 { | ||||
| 			err = errnoErr(e1) | ||||
| 		} else { | ||||
| 			err = syscall.EINVAL | ||||
| 		} | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func setFileInformationByHandle(h syscall.Handle, class uint32, buffer *byte, size uint32) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall6(procSetFileInformationByHandle.Addr(), 4, uintptr(h), uintptr(class), uintptr(unsafe.Pointer(buffer)), uintptr(size), 0, 0) | ||||
| 	if r1 == 0 { | ||||
| 		if e1 != 0 { | ||||
| 			err = errnoErr(e1) | ||||
| 		} else { | ||||
| 			err = syscall.EINVAL | ||||
| 		} | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func adjustTokenPrivileges(token windows.Token, releaseAll bool, input *byte, outputSize uint32, output *byte, requiredSize *uint32) (success bool, err error) { | ||||
| 	var _p0 uint32 | ||||
| 	if releaseAll { | ||||
| 		_p0 = 1 | ||||
| 	} else { | ||||
| 		_p0 = 0 | ||||
| 	} | ||||
| 	r0, _, e1 := syscall.Syscall6(procAdjustTokenPrivileges.Addr(), 6, uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(input)), uintptr(outputSize), uintptr(unsafe.Pointer(output)), uintptr(unsafe.Pointer(requiredSize))) | ||||
| 	success = r0 != 0 | ||||
| 	if true { | ||||
| 		if e1 != 0 { | ||||
| 			err = errnoErr(e1) | ||||
| 		} else { | ||||
| 			err = syscall.EINVAL | ||||
| 		} | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func impersonateSelf(level uint32) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall(procImpersonateSelf.Addr(), 1, uintptr(level), 0, 0) | ||||
| 	if r1 == 0 { | ||||
| 		if e1 != 0 { | ||||
| 			err = errnoErr(e1) | ||||
| 		} else { | ||||
| 			err = syscall.EINVAL | ||||
| 		} | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func revertToSelf() (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall(procRevertToSelf.Addr(), 0, 0, 0, 0) | ||||
| func lookupAccountName(systemName *uint16, accountName string, sid *byte, sidSize *uint32, refDomain *uint16, refDomainSize *uint32, sidNameUse *uint32) (err error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, err = syscall.UTF16PtrFromString(accountName) | ||||
| 	if err != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	return _lookupAccountName(systemName, _p0, sid, sidSize, refDomain, refDomainSize, sidNameUse) | ||||
| } | ||||
|  | ||||
| func _lookupAccountName(systemName *uint16, accountName *uint16, sid *byte, sidSize *uint32, refDomain *uint16, refDomainSize *uint32, sidNameUse *uint32) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall9(procLookupAccountNameW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(accountName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sidSize)), uintptr(unsafe.Pointer(refDomain)), uintptr(unsafe.Pointer(refDomainSize)), uintptr(unsafe.Pointer(sidNameUse)), 0, 0) | ||||
| 	if r1 == 0 { | ||||
| 		if e1 != 0 { | ||||
| 			err = errnoErr(e1) | ||||
| 		} else { | ||||
| 			err = syscall.EINVAL | ||||
| 		} | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func openThreadToken(thread syscall.Handle, accessMask uint32, openAsSelf bool, token *windows.Token) (err error) { | ||||
| 	var _p0 uint32 | ||||
| 	if openAsSelf { | ||||
| 		_p0 = 1 | ||||
| 	} else { | ||||
| 		_p0 = 0 | ||||
| func lookupPrivilegeDisplayName(systemName string, name *uint16, buffer *uint16, size *uint32, languageId *uint32) (err error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, err = syscall.UTF16PtrFromString(systemName) | ||||
| 	if err != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	r1, _, e1 := syscall.Syscall6(procOpenThreadToken.Addr(), 4, uintptr(thread), uintptr(accessMask), uintptr(_p0), uintptr(unsafe.Pointer(token)), 0, 0) | ||||
| 	return _lookupPrivilegeDisplayName(_p0, name, buffer, size, languageId) | ||||
| } | ||||
|  | ||||
| func _lookupPrivilegeDisplayName(systemName *uint16, name *uint16, buffer *uint16, size *uint32, languageId *uint32) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall6(procLookupPrivilegeDisplayNameW.Addr(), 5, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buffer)), uintptr(unsafe.Pointer(size)), uintptr(unsafe.Pointer(languageId)), 0) | ||||
| 	if r1 == 0 { | ||||
| 		if e1 != 0 { | ||||
| 			err = errnoErr(e1) | ||||
| 		} else { | ||||
| 			err = syscall.EINVAL | ||||
| 		} | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func getCurrentThread() (h syscall.Handle) { | ||||
| 	r0, _, _ := syscall.Syscall(procGetCurrentThread.Addr(), 0, 0, 0, 0) | ||||
| 	h = syscall.Handle(r0) | ||||
| func lookupPrivilegeName(systemName string, luid *uint64, buffer *uint16, size *uint32) (err error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, err = syscall.UTF16PtrFromString(systemName) | ||||
| 	if err != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	return _lookupPrivilegeName(_p0, luid, buffer, size) | ||||
| } | ||||
|  | ||||
| func _lookupPrivilegeName(systemName *uint16, luid *uint64, buffer *uint16, size *uint32) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall6(procLookupPrivilegeNameW.Addr(), 4, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(luid)), uintptr(unsafe.Pointer(buffer)), uintptr(unsafe.Pointer(size)), 0, 0) | ||||
| 	if r1 == 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| @@ -442,53 +205,27 @@ func lookupPrivilegeValue(systemName string, name string, luid *uint64) (err err | ||||
| func _lookupPrivilegeValue(systemName *uint16, name *uint16, luid *uint64) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall(procLookupPrivilegeValueW.Addr(), 3, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(luid))) | ||||
| 	if r1 == 0 { | ||||
| 		if e1 != 0 { | ||||
| 			err = errnoErr(e1) | ||||
| 		} else { | ||||
| 			err = syscall.EINVAL | ||||
| 		} | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func lookupPrivilegeName(systemName string, luid *uint64, buffer *uint16, size *uint32) (err error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, err = syscall.UTF16PtrFromString(systemName) | ||||
| 	if err != nil { | ||||
| 		return | ||||
| func openThreadToken(thread syscall.Handle, accessMask uint32, openAsSelf bool, token *windows.Token) (err error) { | ||||
| 	var _p0 uint32 | ||||
| 	if openAsSelf { | ||||
| 		_p0 = 1 | ||||
| 	} | ||||
| 	return _lookupPrivilegeName(_p0, luid, buffer, size) | ||||
| } | ||||
|  | ||||
| func _lookupPrivilegeName(systemName *uint16, luid *uint64, buffer *uint16, size *uint32) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall6(procLookupPrivilegeNameW.Addr(), 4, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(luid)), uintptr(unsafe.Pointer(buffer)), uintptr(unsafe.Pointer(size)), 0, 0) | ||||
| 	r1, _, e1 := syscall.Syscall6(procOpenThreadToken.Addr(), 4, uintptr(thread), uintptr(accessMask), uintptr(_p0), uintptr(unsafe.Pointer(token)), 0, 0) | ||||
| 	if r1 == 0 { | ||||
| 		if e1 != 0 { | ||||
| 			err = errnoErr(e1) | ||||
| 		} else { | ||||
| 			err = syscall.EINVAL | ||||
| 		} | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func lookupPrivilegeDisplayName(systemName string, name *uint16, buffer *uint16, size *uint32, languageId *uint32) (err error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, err = syscall.UTF16PtrFromString(systemName) | ||||
| 	if err != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	return _lookupPrivilegeDisplayName(_p0, name, buffer, size, languageId) | ||||
| } | ||||
|  | ||||
| func _lookupPrivilegeDisplayName(systemName *uint16, name *uint16, buffer *uint16, size *uint32, languageId *uint32) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall6(procLookupPrivilegeDisplayNameW.Addr(), 5, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buffer)), uintptr(unsafe.Pointer(size)), uintptr(unsafe.Pointer(languageId)), 0) | ||||
| func revertToSelf() (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall(procRevertToSelf.Addr(), 0, 0, 0, 0) | ||||
| 	if r1 == 0 { | ||||
| 		if e1 != 0 { | ||||
| 			err = errnoErr(e1) | ||||
| 		} else { | ||||
| 			err = syscall.EINVAL | ||||
| 		} | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
| @@ -501,22 +238,14 @@ func backupRead(h syscall.Handle, b []byte, bytesRead *uint32, abort bool, proce | ||||
| 	var _p1 uint32 | ||||
| 	if abort { | ||||
| 		_p1 = 1 | ||||
| 	} else { | ||||
| 		_p1 = 0 | ||||
| 	} | ||||
| 	var _p2 uint32 | ||||
| 	if processSecurity { | ||||
| 		_p2 = 1 | ||||
| 	} else { | ||||
| 		_p2 = 0 | ||||
| 	} | ||||
| 	r1, _, e1 := syscall.Syscall9(procBackupRead.Addr(), 7, uintptr(h), uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(unsafe.Pointer(bytesRead)), uintptr(_p1), uintptr(_p2), uintptr(unsafe.Pointer(context)), 0, 0) | ||||
| 	if r1 == 0 { | ||||
| 		if e1 != 0 { | ||||
| 			err = errnoErr(e1) | ||||
| 		} else { | ||||
| 			err = syscall.EINVAL | ||||
| 		} | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
| @@ -529,22 +258,162 @@ func backupWrite(h syscall.Handle, b []byte, bytesWritten *uint32, abort bool, p | ||||
| 	var _p1 uint32 | ||||
| 	if abort { | ||||
| 		_p1 = 1 | ||||
| 	} else { | ||||
| 		_p1 = 0 | ||||
| 	} | ||||
| 	var _p2 uint32 | ||||
| 	if processSecurity { | ||||
| 		_p2 = 1 | ||||
| 	} else { | ||||
| 		_p2 = 0 | ||||
| 	} | ||||
| 	r1, _, e1 := syscall.Syscall9(procBackupWrite.Addr(), 7, uintptr(h), uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(unsafe.Pointer(bytesWritten)), uintptr(_p1), uintptr(_p2), uintptr(unsafe.Pointer(context)), 0, 0) | ||||
| 	if r1 == 0 { | ||||
| 		if e1 != 0 { | ||||
| 			err = errnoErr(e1) | ||||
| 		} else { | ||||
| 			err = syscall.EINVAL | ||||
| 		} | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func cancelIoEx(file syscall.Handle, o *syscall.Overlapped) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall(procCancelIoEx.Addr(), 2, uintptr(file), uintptr(unsafe.Pointer(o)), 0) | ||||
| 	if r1 == 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func connectNamedPipe(pipe syscall.Handle, o *syscall.Overlapped) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall(procConnectNamedPipe.Addr(), 2, uintptr(pipe), uintptr(unsafe.Pointer(o)), 0) | ||||
| 	if r1 == 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func createFile(name string, access uint32, mode uint32, sa *syscall.SecurityAttributes, createmode uint32, attrs uint32, templatefile syscall.Handle) (handle syscall.Handle, err error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, err = syscall.UTF16PtrFromString(name) | ||||
| 	if err != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	return _createFile(_p0, access, mode, sa, createmode, attrs, templatefile) | ||||
| } | ||||
|  | ||||
| func _createFile(name *uint16, access uint32, mode uint32, sa *syscall.SecurityAttributes, createmode uint32, attrs uint32, templatefile syscall.Handle) (handle syscall.Handle, err error) { | ||||
| 	r0, _, e1 := syscall.Syscall9(procCreateFileW.Addr(), 7, uintptr(unsafe.Pointer(name)), uintptr(access), uintptr(mode), uintptr(unsafe.Pointer(sa)), uintptr(createmode), uintptr(attrs), uintptr(templatefile), 0, 0) | ||||
| 	handle = syscall.Handle(r0) | ||||
| 	if handle == syscall.InvalidHandle { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func createIoCompletionPort(file syscall.Handle, port syscall.Handle, key uintptr, threadCount uint32) (newport syscall.Handle, err error) { | ||||
| 	r0, _, e1 := syscall.Syscall6(procCreateIoCompletionPort.Addr(), 4, uintptr(file), uintptr(port), uintptr(key), uintptr(threadCount), 0, 0) | ||||
| 	newport = syscall.Handle(r0) | ||||
| 	if newport == 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func createNamedPipe(name string, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *syscall.SecurityAttributes) (handle syscall.Handle, err error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, err = syscall.UTF16PtrFromString(name) | ||||
| 	if err != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	return _createNamedPipe(_p0, flags, pipeMode, maxInstances, outSize, inSize, defaultTimeout, sa) | ||||
| } | ||||
|  | ||||
| func _createNamedPipe(name *uint16, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *syscall.SecurityAttributes) (handle syscall.Handle, err error) { | ||||
| 	r0, _, e1 := syscall.Syscall9(procCreateNamedPipeW.Addr(), 8, uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(pipeMode), uintptr(maxInstances), uintptr(outSize), uintptr(inSize), uintptr(defaultTimeout), uintptr(unsafe.Pointer(sa)), 0) | ||||
| 	handle = syscall.Handle(r0) | ||||
| 	if handle == syscall.InvalidHandle { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func getCurrentThread() (h syscall.Handle) { | ||||
| 	r0, _, _ := syscall.Syscall(procGetCurrentThread.Addr(), 0, 0, 0, 0) | ||||
| 	h = syscall.Handle(r0) | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func getNamedPipeHandleState(pipe syscall.Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall9(procGetNamedPipeHandleStateW.Addr(), 7, uintptr(pipe), uintptr(unsafe.Pointer(state)), uintptr(unsafe.Pointer(curInstances)), uintptr(unsafe.Pointer(maxCollectionCount)), uintptr(unsafe.Pointer(collectDataTimeout)), uintptr(unsafe.Pointer(userName)), uintptr(maxUserNameSize), 0, 0) | ||||
| 	if r1 == 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func getNamedPipeInfo(pipe syscall.Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall6(procGetNamedPipeInfo.Addr(), 5, uintptr(pipe), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(outSize)), uintptr(unsafe.Pointer(inSize)), uintptr(unsafe.Pointer(maxInstances)), 0) | ||||
| 	if r1 == 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func getQueuedCompletionStatus(port syscall.Handle, bytes *uint32, key *uintptr, o **ioOperation, timeout uint32) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall6(procGetQueuedCompletionStatus.Addr(), 5, uintptr(port), uintptr(unsafe.Pointer(bytes)), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(o)), uintptr(timeout), 0) | ||||
| 	if r1 == 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func localAlloc(uFlags uint32, length uint32) (ptr uintptr) { | ||||
| 	r0, _, _ := syscall.Syscall(procLocalAlloc.Addr(), 2, uintptr(uFlags), uintptr(length), 0) | ||||
| 	ptr = uintptr(r0) | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func localFree(mem uintptr) { | ||||
| 	syscall.Syscall(procLocalFree.Addr(), 1, uintptr(mem), 0, 0) | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func setFileCompletionNotificationModes(h syscall.Handle, flags uint8) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall(procSetFileCompletionNotificationModes.Addr(), 2, uintptr(h), uintptr(flags), 0) | ||||
| 	if r1 == 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func ntCreateNamedPipeFile(pipe *syscall.Handle, access uint32, oa *objectAttributes, iosb *ioStatusBlock, share uint32, disposition uint32, options uint32, typ uint32, readMode uint32, completionMode uint32, maxInstances uint32, inboundQuota uint32, outputQuota uint32, timeout *int64) (status ntstatus) { | ||||
| 	r0, _, _ := syscall.Syscall15(procNtCreateNamedPipeFile.Addr(), 14, uintptr(unsafe.Pointer(pipe)), uintptr(access), uintptr(unsafe.Pointer(oa)), uintptr(unsafe.Pointer(iosb)), uintptr(share), uintptr(disposition), uintptr(options), uintptr(typ), uintptr(readMode), uintptr(completionMode), uintptr(maxInstances), uintptr(inboundQuota), uintptr(outputQuota), uintptr(unsafe.Pointer(timeout)), 0) | ||||
| 	status = ntstatus(r0) | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func rtlDefaultNpAcl(dacl *uintptr) (status ntstatus) { | ||||
| 	r0, _, _ := syscall.Syscall(procRtlDefaultNpAcl.Addr(), 1, uintptr(unsafe.Pointer(dacl)), 0, 0) | ||||
| 	status = ntstatus(r0) | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func rtlDosPathNameToNtPathName(name *uint16, ntName *unicodeString, filePart uintptr, reserved uintptr) (status ntstatus) { | ||||
| 	r0, _, _ := syscall.Syscall6(procRtlDosPathNameToNtPathName_U.Addr(), 4, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(ntName)), uintptr(filePart), uintptr(reserved), 0, 0) | ||||
| 	status = ntstatus(r0) | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func rtlNtStatusToDosError(status ntstatus) (winerr error) { | ||||
| 	r0, _, _ := syscall.Syscall(procRtlNtStatusToDosErrorNoTeb.Addr(), 1, uintptr(status), 0, 0) | ||||
| 	if r0 != 0 { | ||||
| 		winerr = syscall.Errno(r0) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func wsaGetOverlappedResult(h syscall.Handle, o *syscall.Overlapped, bytes *uint32, wait bool, flags *uint32) (err error) { | ||||
| 	var _p0 uint32 | ||||
| 	if wait { | ||||
| 		_p0 = 1 | ||||
| 	} | ||||
| 	r1, _, e1 := syscall.Syscall6(procWSAGetOverlappedResult.Addr(), 5, uintptr(h), uintptr(unsafe.Pointer(o)), uintptr(unsafe.Pointer(bytes)), uintptr(_p0), uintptr(unsafe.Pointer(flags)), 0) | ||||
| 	if r1 == 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
| @@ -552,11 +421,7 @@ func backupWrite(h syscall.Handle, b []byte, bytesWritten *uint32, abort bool, p | ||||
| func bind(s syscall.Handle, name unsafe.Pointer, namelen int32) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall(procbind.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen)) | ||||
| 	if r1 == socketError { | ||||
| 		if e1 != 0 { | ||||
| 			err = errnoErr(e1) | ||||
| 		} else { | ||||
| 			err = syscall.EINVAL | ||||
| 		} | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/.gitattributes
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/.gitattributes
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| * text=auto eol=lf | ||||
							
								
								
									
										2
									
								
								vendor/github.com/Microsoft/hcsshim/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/Microsoft/hcsshim/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1 +1,3 @@ | ||||
| *.exe | ||||
| .idea | ||||
| .vscode | ||||
|   | ||||
							
								
								
									
										4
									
								
								vendor/github.com/Microsoft/hcsshim/CODEOWNERS
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/Microsoft/hcsshim/CODEOWNERS
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,3 +1,3 @@ | ||||
| * @microsoft/containerplat | ||||
|  | ||||
| * @microsoft/containerplat | ||||
|  | ||||
| /hcn/* @nagiesek | ||||
							
								
								
									
										22
									
								
								vendor/github.com/Microsoft/hcsshim/appveyor.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								vendor/github.com/Microsoft/hcsshim/appveyor.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,14 +1,16 @@ | ||||
| version: 0.1.{build} | ||||
|  | ||||
| image: Visual Studio 2017 | ||||
| image: Visual Studio 2019 | ||||
|  | ||||
| clone_folder: c:\gopath\src\github.com\Microsoft\hcsshim | ||||
|  | ||||
| environment: | ||||
|   GOPATH: c:\gopath | ||||
|   PATH: "%GOPATH%\\bin;C:\\gometalinter-2.0.12-windows-amd64;%PATH%" | ||||
|   GOPROXY: 'off' | ||||
|   GOFLAGS: '-mod=vendor' | ||||
|  | ||||
| stack: go 1.13.4 | ||||
| stack: go 1.15 | ||||
|  | ||||
| build_script: | ||||
|   - appveyor DownloadFile https://github.com/alecthomas/gometalinter/releases/download/v2.0.12/gometalinter-2.0.12-windows-amd64.zip | ||||
| @@ -19,16 +21,17 @@ build_script: | ||||
|   - go build ./cmd/tar2ext4 | ||||
|   - go build ./cmd/wclayer | ||||
|   - go build ./cmd/device-util | ||||
|   - go build ./internal/tools/grantvmgroupaccess  | ||||
|   - go build ./internal/tools/grantvmgroupaccess | ||||
|   - go build ./internal/tools/uvmboot | ||||
|   - go build ./internal/tools/zapdir | ||||
|   - go test -v ./... -tags admin | ||||
|   - go test -gcflags=all=-d=checkptr -v ./... -tags admin | ||||
|   - cd test | ||||
|   - go test -v ./internal -tags admin | ||||
|   - go test -c ./containerd-shim-runhcs-v1/ -tags functional | ||||
|   - go test -c ./cri-containerd/ -tags functional | ||||
|   - go test -c ./functional/ -tags functional | ||||
|   - go test -c ./runhcs/ -tags functional | ||||
|   - go test -gcflags=all=-d=checkptr -v ./internal -tags admin | ||||
|   - go test -gcflags=all=-d=checkptr -c ./containerd-shim-runhcs-v1/ -tags functional | ||||
|   - go test -gcflags=all=-d=checkptr -c ./cri-containerd/ -tags functional | ||||
|   - go test -gcflags=all=-d=checkptr -c ./functional/ -tags functional | ||||
|   - go test -gcflags=all=-d=checkptr -c ./runhcs/ -tags functional | ||||
|   - go build -o sample-logging-driver.exe ./cri-containerd/helpers/log.go | ||||
|  | ||||
| artifacts: | ||||
|   - path: 'containerd-shim-runhcs-v1.exe' | ||||
| @@ -43,3 +46,4 @@ artifacts: | ||||
|   - path: './test/cri-containerd.test.exe' | ||||
|   - path: './test/functional.test.exe' | ||||
|   - path: './test/runhcs.test.exe' | ||||
|   - path: './test/sample-logging-driver.exe' | ||||
|   | ||||
							
								
								
									
										38
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/attach.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/attach.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,38 @@ | ||||
| package computestorage | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	"encoding/json" | ||||
|  | ||||
| 	"github.com/Microsoft/hcsshim/internal/oc" | ||||
| 	"github.com/pkg/errors" | ||||
| 	"go.opencensus.io/trace" | ||||
| ) | ||||
|  | ||||
| // AttachLayerStorageFilter sets up the layer storage filter on a writable | ||||
| // container layer. | ||||
| // | ||||
| // `layerPath` is a path to a directory the writable layer is mounted. If the | ||||
| // path does not end in a `\` the platform will append it automatically. | ||||
| // | ||||
| // `layerData` is the parent read-only layer data. | ||||
| func AttachLayerStorageFilter(ctx context.Context, layerPath string, layerData LayerData) (err error) { | ||||
| 	title := "hcsshim.AttachLayerStorageFilter" | ||||
| 	ctx, span := trace.StartSpan(ctx, title) | ||||
| 	defer span.End() | ||||
| 	defer func() { oc.SetSpanStatus(span, err) }() | ||||
| 	span.AddAttributes( | ||||
| 		trace.StringAttribute("layerPath", layerPath), | ||||
| 	) | ||||
|  | ||||
| 	bytes, err := json.Marshal(layerData) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	err = hcsAttachLayerStorageFilter(layerPath, string(bytes)) | ||||
| 	if err != nil { | ||||
| 		return errors.Wrap(err, "failed to attach layer storage filter") | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
							
								
								
									
										26
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/destroy.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/destroy.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,26 @@ | ||||
| package computestorage | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
|  | ||||
| 	"github.com/Microsoft/hcsshim/internal/oc" | ||||
| 	"github.com/pkg/errors" | ||||
| 	"go.opencensus.io/trace" | ||||
| ) | ||||
|  | ||||
| // DestroyLayer deletes a container layer. | ||||
| // | ||||
| // `layerPath` is a path to a directory containing the layer to export. | ||||
| func DestroyLayer(ctx context.Context, layerPath string) (err error) { | ||||
| 	title := "hcsshim.DestroyLayer" | ||||
| 	ctx, span := trace.StartSpan(ctx, title) | ||||
| 	defer span.End() | ||||
| 	defer func() { oc.SetSpanStatus(span, err) }() | ||||
| 	span.AddAttributes(trace.StringAttribute("layerPath", layerPath)) | ||||
|  | ||||
| 	err = hcsDestroyLayer(layerPath) | ||||
| 	if err != nil { | ||||
| 		return errors.Wrap(err, "failed to destroy layer") | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
							
								
								
									
										26
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/detach.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/detach.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,26 @@ | ||||
| package computestorage | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
|  | ||||
| 	"github.com/Microsoft/hcsshim/internal/oc" | ||||
| 	"github.com/pkg/errors" | ||||
| 	"go.opencensus.io/trace" | ||||
| ) | ||||
|  | ||||
| // DetachLayerStorageFilter detaches the layer storage filter on a writable container layer. | ||||
| // | ||||
| // `layerPath` is a path to a directory containing the layer to export. | ||||
| func DetachLayerStorageFilter(ctx context.Context, layerPath string) (err error) { | ||||
| 	title := "hcsshim.DetachLayerStorageFilter" | ||||
| 	ctx, span := trace.StartSpan(ctx, title) | ||||
| 	defer span.End() | ||||
| 	defer func() { oc.SetSpanStatus(span, err) }() | ||||
| 	span.AddAttributes(trace.StringAttribute("layerPath", layerPath)) | ||||
|  | ||||
| 	err = hcsDetachLayerStorageFilter(layerPath) | ||||
| 	if err != nil { | ||||
| 		return errors.Wrap(err, "failed to detach layer storage filter") | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
							
								
								
									
										46
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/export.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/export.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,46 @@ | ||||
| package computestorage | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	"encoding/json" | ||||
|  | ||||
| 	"github.com/Microsoft/hcsshim/internal/oc" | ||||
| 	"github.com/pkg/errors" | ||||
| 	"go.opencensus.io/trace" | ||||
| ) | ||||
|  | ||||
| // ExportLayer exports a container layer. | ||||
| // | ||||
| // `layerPath` is a path to a directory containing the layer to export. | ||||
| // | ||||
| // `exportFolderPath` is a pre-existing folder to export the layer to. | ||||
| // | ||||
| // `layerData` is the parent layer data. | ||||
| // | ||||
| // `options` are the export options applied to the exported layer. | ||||
| func ExportLayer(ctx context.Context, layerPath, exportFolderPath string, layerData LayerData, options ExportLayerOptions) (err error) { | ||||
| 	title := "hcsshim.ExportLayer" | ||||
| 	ctx, span := trace.StartSpan(ctx, title) | ||||
| 	defer span.End() | ||||
| 	defer func() { oc.SetSpanStatus(span, err) }() | ||||
| 	span.AddAttributes( | ||||
| 		trace.StringAttribute("layerPath", layerPath), | ||||
| 		trace.StringAttribute("exportFolderPath", exportFolderPath), | ||||
| 	) | ||||
|  | ||||
| 	ldbytes, err := json.Marshal(layerData) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	obytes, err := json.Marshal(options) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	err = hcsExportLayer(layerPath, exportFolderPath, string(ldbytes), string(obytes)) | ||||
| 	if err != nil { | ||||
| 		return errors.Wrap(err, "failed to export layer") | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
							
								
								
									
										26
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/format.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/format.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,26 @@ | ||||
| package computestorage | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
|  | ||||
| 	"github.com/Microsoft/hcsshim/internal/oc" | ||||
| 	"github.com/pkg/errors" | ||||
| 	"go.opencensus.io/trace" | ||||
| 	"golang.org/x/sys/windows" | ||||
| ) | ||||
|  | ||||
| // FormatWritableLayerVhd formats a virtual disk for use as a writable container layer. | ||||
| // | ||||
| // If the VHD is not mounted it will be temporarily mounted. | ||||
| func FormatWritableLayerVhd(ctx context.Context, vhdHandle windows.Handle) (err error) { | ||||
| 	title := "hcsshim.FormatWritableLayerVhd" | ||||
| 	ctx, span := trace.StartSpan(ctx, title) | ||||
| 	defer span.End() | ||||
| 	defer func() { oc.SetSpanStatus(span, err) }() | ||||
|  | ||||
| 	err = hcsFormatWritableLayerVhd(vhdHandle) | ||||
| 	if err != nil { | ||||
| 		return errors.Wrap(err, "failed to format writable layer vhd") | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
							
								
								
									
										197
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/helpers.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										197
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/helpers.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,197 @@ | ||||
| package computestorage | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	"os" | ||||
| 	"path/filepath" | ||||
| 	"syscall" | ||||
|  | ||||
| 	"github.com/Microsoft/go-winio/pkg/security" | ||||
| 	"github.com/Microsoft/go-winio/vhd" | ||||
| 	"github.com/pkg/errors" | ||||
| 	"golang.org/x/sys/windows" | ||||
| ) | ||||
|  | ||||
| const defaultVHDXBlockSizeInMB = 1 | ||||
|  | ||||
| // SetupContainerBaseLayer is a helper to setup a containers scratch. It | ||||
| // will create and format the vhdx's inside and the size is configurable with the sizeInGB | ||||
| // parameter. | ||||
| // | ||||
| // `layerPath` is the path to the base container layer on disk. | ||||
| // | ||||
| // `baseVhdPath` is the path to where the base vhdx for the base layer should be created. | ||||
| // | ||||
| // `diffVhdPath` is the path where the differencing disk for the base layer should be created. | ||||
| // | ||||
| // `sizeInGB` is the size in gigabytes to make the base vhdx. | ||||
| func SetupContainerBaseLayer(ctx context.Context, layerPath, baseVhdPath, diffVhdPath string, sizeInGB uint64) (err error) { | ||||
| 	var ( | ||||
| 		hivesPath  = filepath.Join(layerPath, "Hives") | ||||
| 		layoutPath = filepath.Join(layerPath, "Layout") | ||||
| 	) | ||||
|  | ||||
| 	// We need to remove the hives directory and layout file as `SetupBaseOSLayer` fails if these files | ||||
| 	// already exist. `SetupBaseOSLayer` will create these files internally. We also remove the base and | ||||
| 	// differencing disks if they exist in case we're asking for a different size. | ||||
| 	if _, err := os.Stat(hivesPath); err == nil { | ||||
| 		if err := os.RemoveAll(hivesPath); err != nil { | ||||
| 			return errors.Wrap(err, "failed to remove prexisting hives directory") | ||||
| 		} | ||||
| 	} | ||||
| 	if _, err := os.Stat(layoutPath); err == nil { | ||||
| 		if err := os.RemoveAll(layoutPath); err != nil { | ||||
| 			return errors.Wrap(err, "failed to remove prexisting layout file") | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	if _, err := os.Stat(baseVhdPath); err == nil { | ||||
| 		if err := os.RemoveAll(baseVhdPath); err != nil { | ||||
| 			return errors.Wrap(err, "failed to remove base vhdx path") | ||||
| 		} | ||||
| 	} | ||||
| 	if _, err := os.Stat(diffVhdPath); err == nil { | ||||
| 		if err := os.RemoveAll(diffVhdPath); err != nil { | ||||
| 			return errors.Wrap(err, "failed to remove differencing vhdx") | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	createParams := &vhd.CreateVirtualDiskParameters{ | ||||
| 		Version: 2, | ||||
| 		Version2: vhd.CreateVersion2{ | ||||
| 			MaximumSize:      sizeInGB * 1024 * 1024 * 1024, | ||||
| 			BlockSizeInBytes: defaultVHDXBlockSizeInMB * 1024 * 1024, | ||||
| 		}, | ||||
| 	} | ||||
| 	handle, err := vhd.CreateVirtualDisk(baseVhdPath, vhd.VirtualDiskAccessNone, vhd.CreateVirtualDiskFlagNone, createParams) | ||||
| 	if err != nil { | ||||
| 		return errors.Wrap(err, "failed to create vhdx") | ||||
| 	} | ||||
|  | ||||
| 	defer func() { | ||||
| 		if err != nil { | ||||
| 			syscall.CloseHandle(handle) | ||||
| 			os.RemoveAll(baseVhdPath) | ||||
| 			if os.Stat(diffVhdPath); err == nil { | ||||
| 				os.RemoveAll(diffVhdPath) | ||||
| 			} | ||||
| 		} | ||||
| 	}() | ||||
|  | ||||
| 	if err = FormatWritableLayerVhd(ctx, windows.Handle(handle)); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	// Base vhd handle must be closed before calling SetupBaseLayer in case of Container layer | ||||
| 	if err = syscall.CloseHandle(handle); err != nil { | ||||
| 		return errors.Wrap(err, "failed to close vhdx handle") | ||||
| 	} | ||||
|  | ||||
| 	options := OsLayerOptions{ | ||||
| 		Type: OsLayerTypeContainer, | ||||
| 	} | ||||
|  | ||||
| 	// SetupBaseOSLayer expects an empty vhd handle for a container layer and will | ||||
| 	// error out otherwise. | ||||
| 	if err = SetupBaseOSLayer(ctx, layerPath, 0, options); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	// Create the differencing disk that will be what's copied for the final rw layer | ||||
| 	// for a container. | ||||
| 	if err = vhd.CreateDiffVhd(diffVhdPath, baseVhdPath, defaultVHDXBlockSizeInMB); err != nil { | ||||
| 		return errors.Wrap(err, "failed to create differencing disk") | ||||
| 	} | ||||
|  | ||||
| 	if err = security.GrantVmGroupAccess(baseVhdPath); err != nil { | ||||
| 		return errors.Wrapf(err, "failed to grant vm group access to %s", baseVhdPath) | ||||
| 	} | ||||
| 	if err = security.GrantVmGroupAccess(diffVhdPath); err != nil { | ||||
| 		return errors.Wrapf(err, "failed to grant vm group access to %s", diffVhdPath) | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // SetupUtilityVMBaseLayer is a helper to setup a UVMs scratch space. It will create and format | ||||
| // the vhdx inside and the size is configurable by the sizeInGB parameter. | ||||
| // | ||||
| // `uvmPath` is the path to the UtilityVM filesystem. | ||||
| // | ||||
| // `baseVhdPath` is the path to where the base vhdx for the UVM should be created. | ||||
| // | ||||
| // `diffVhdPath` is the path where the differencing disk for the UVM should be created. | ||||
| // | ||||
| // `sizeInGB` specifies the size in gigabytes to make the base vhdx. | ||||
| func SetupUtilityVMBaseLayer(ctx context.Context, uvmPath, baseVhdPath, diffVhdPath string, sizeInGB uint64) (err error) { | ||||
| 	// Remove the base and differencing disks if they exist in case we're asking for a different size. | ||||
| 	if _, err := os.Stat(baseVhdPath); err == nil { | ||||
| 		if err := os.RemoveAll(baseVhdPath); err != nil { | ||||
| 			return errors.Wrap(err, "failed to remove base vhdx") | ||||
| 		} | ||||
| 	} | ||||
| 	if _, err := os.Stat(diffVhdPath); err == nil { | ||||
| 		if err := os.RemoveAll(diffVhdPath); err != nil { | ||||
| 			return errors.Wrap(err, "failed to remove differencing vhdx") | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	// Just create the vhdx for utilityVM layer, no need to format it. | ||||
| 	createParams := &vhd.CreateVirtualDiskParameters{ | ||||
| 		Version: 2, | ||||
| 		Version2: vhd.CreateVersion2{ | ||||
| 			MaximumSize:      sizeInGB * 1024 * 1024 * 1024, | ||||
| 			BlockSizeInBytes: defaultVHDXBlockSizeInMB * 1024 * 1024, | ||||
| 		}, | ||||
| 	} | ||||
| 	handle, err := vhd.CreateVirtualDisk(baseVhdPath, vhd.VirtualDiskAccessNone, vhd.CreateVirtualDiskFlagNone, createParams) | ||||
| 	if err != nil { | ||||
| 		return errors.Wrap(err, "failed to create vhdx") | ||||
| 	} | ||||
|  | ||||
| 	defer func() { | ||||
| 		if err != nil { | ||||
| 			syscall.CloseHandle(handle) | ||||
| 			os.RemoveAll(baseVhdPath) | ||||
| 			if os.Stat(diffVhdPath); err == nil { | ||||
| 				os.RemoveAll(diffVhdPath) | ||||
| 			} | ||||
| 		} | ||||
| 	}() | ||||
|  | ||||
| 	// If it is a UtilityVM layer then the base vhdx must be attached when calling | ||||
| 	// `SetupBaseOSLayer` | ||||
| 	attachParams := &vhd.AttachVirtualDiskParameters{ | ||||
| 		Version: 2, | ||||
| 	} | ||||
| 	if err := vhd.AttachVirtualDisk(handle, vhd.AttachVirtualDiskFlagNone, attachParams); err != nil { | ||||
| 		return errors.Wrapf(err, "failed to attach virtual disk") | ||||
| 	} | ||||
|  | ||||
| 	options := OsLayerOptions{ | ||||
| 		Type: OsLayerTypeVM, | ||||
| 	} | ||||
| 	if err := SetupBaseOSLayer(ctx, uvmPath, windows.Handle(handle), options); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	// Detach and close the handle after setting up the layer as we don't need the handle | ||||
| 	// for anything else and we no longer need to be attached either. | ||||
| 	if err = vhd.DetachVirtualDisk(handle); err != nil { | ||||
| 		return errors.Wrap(err, "failed to detach vhdx") | ||||
| 	} | ||||
| 	if err = syscall.CloseHandle(handle); err != nil { | ||||
| 		return errors.Wrap(err, "failed to close vhdx handle") | ||||
| 	} | ||||
|  | ||||
| 	// Create the differencing disk that will be what's copied for the final rw layer | ||||
| 	// for a container. | ||||
| 	if err = vhd.CreateDiffVhd(diffVhdPath, baseVhdPath, defaultVHDXBlockSizeInMB); err != nil { | ||||
| 		return errors.Wrap(err, "failed to create differencing disk") | ||||
| 	} | ||||
|  | ||||
| 	if err := security.GrantVmGroupAccess(baseVhdPath); err != nil { | ||||
| 		return errors.Wrapf(err, "failed to grant vm group access to %s", baseVhdPath) | ||||
| 	} | ||||
| 	if err := security.GrantVmGroupAccess(diffVhdPath); err != nil { | ||||
| 		return errors.Wrapf(err, "failed to grant vm group access to %s", diffVhdPath) | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
							
								
								
									
										41
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/import.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/import.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,41 @@ | ||||
| package computestorage | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	"encoding/json" | ||||
|  | ||||
| 	"github.com/Microsoft/hcsshim/internal/oc" | ||||
| 	"github.com/pkg/errors" | ||||
| 	"go.opencensus.io/trace" | ||||
| ) | ||||
|  | ||||
| // ImportLayer imports a container layer. | ||||
| // | ||||
| // `layerPath` is a path to a directory to import the layer to. If the directory | ||||
| // does not exist it will be automatically created. | ||||
| // | ||||
| // `sourceFolderpath` is a pre-existing folder that contains the layer to | ||||
| // import. | ||||
| // | ||||
| // `layerData` is the parent layer data. | ||||
| func ImportLayer(ctx context.Context, layerPath, sourceFolderPath string, layerData LayerData) (err error) { | ||||
| 	title := "hcsshim.ImportLayer" | ||||
| 	ctx, span := trace.StartSpan(ctx, title) | ||||
| 	defer span.End() | ||||
| 	defer func() { oc.SetSpanStatus(span, err) }() | ||||
| 	span.AddAttributes( | ||||
| 		trace.StringAttribute("layerPath", layerPath), | ||||
| 		trace.StringAttribute("sourceFolderPath", sourceFolderPath), | ||||
| 	) | ||||
|  | ||||
| 	bytes, err := json.Marshal(layerData) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	err = hcsImportLayer(layerPath, sourceFolderPath, string(bytes)) | ||||
| 	if err != nil { | ||||
| 		return errors.Wrap(err, "failed to import layer") | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
							
								
								
									
										38
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/initialize.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/initialize.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,38 @@ | ||||
| package computestorage | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	"encoding/json" | ||||
|  | ||||
| 	"github.com/Microsoft/hcsshim/internal/oc" | ||||
| 	"github.com/pkg/errors" | ||||
| 	"go.opencensus.io/trace" | ||||
| ) | ||||
|  | ||||
| // InitializeWritableLayer initializes a writable layer for a container. | ||||
| // | ||||
| // `layerPath` is a path to a directory the layer is mounted. If the | ||||
| // path does not end in a `\` the platform will append it automatically. | ||||
| // | ||||
| // `layerData` is the parent read-only layer data. | ||||
| func InitializeWritableLayer(ctx context.Context, layerPath string, layerData LayerData) (err error) { | ||||
| 	title := "hcsshim.InitializeWritableLayer" | ||||
| 	ctx, span := trace.StartSpan(ctx, title) | ||||
| 	defer span.End() | ||||
| 	defer func() { oc.SetSpanStatus(span, err) }() | ||||
| 	span.AddAttributes( | ||||
| 		trace.StringAttribute("layerPath", layerPath), | ||||
| 	) | ||||
|  | ||||
| 	bytes, err := json.Marshal(layerData) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	// Options are not used in the platform as of RS5 | ||||
| 	err = hcsInitializeWritableLayer(layerPath, string(bytes), "") | ||||
| 	if err != nil { | ||||
| 		return errors.Wrap(err, "failed to intitialize container layer") | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
							
								
								
									
										27
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/mount.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/mount.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | ||||
| package computestorage | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
|  | ||||
| 	"github.com/Microsoft/hcsshim/internal/interop" | ||||
| 	"github.com/Microsoft/hcsshim/internal/oc" | ||||
| 	"github.com/pkg/errors" | ||||
| 	"go.opencensus.io/trace" | ||||
| 	"golang.org/x/sys/windows" | ||||
| ) | ||||
|  | ||||
| // GetLayerVhdMountPath returns the volume path for a virtual disk of a writable container layer. | ||||
| func GetLayerVhdMountPath(ctx context.Context, vhdHandle windows.Handle) (path string, err error) { | ||||
| 	title := "hcsshim.GetLayerVhdMountPath" | ||||
| 	ctx, span := trace.StartSpan(ctx, title) | ||||
| 	defer span.End() | ||||
| 	defer func() { oc.SetSpanStatus(span, err) }() | ||||
|  | ||||
| 	var mountPath *uint16 | ||||
| 	err = hcsGetLayerVhdMountPath(vhdHandle, &mountPath) | ||||
| 	if err != nil { | ||||
| 		return "", errors.Wrap(err, "failed to get vhd mount path") | ||||
| 	} | ||||
| 	path = interop.ConvertAndFreeCoTaskMemString(mountPath) | ||||
| 	return path, nil | ||||
| } | ||||
							
								
								
									
										74
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/setup.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/setup.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,74 @@ | ||||
| package computestorage | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	"encoding/json" | ||||
|  | ||||
| 	"github.com/Microsoft/hcsshim/internal/oc" | ||||
| 	"github.com/Microsoft/hcsshim/osversion" | ||||
| 	"github.com/pkg/errors" | ||||
| 	"go.opencensus.io/trace" | ||||
| 	"golang.org/x/sys/windows" | ||||
| ) | ||||
|  | ||||
| // SetupBaseOSLayer sets up a layer that contains a base OS for a container. | ||||
| // | ||||
| // `layerPath` is a path to a directory containing the layer. | ||||
| // | ||||
| // `vhdHandle` is an empty file handle of `options.Type == OsLayerTypeContainer` | ||||
| // or else it is a file handle to the 'SystemTemplateBase.vhdx' if `options.Type | ||||
| // == OsLayerTypeVm`. | ||||
| // | ||||
| // `options` are the options applied while processing the layer. | ||||
| func SetupBaseOSLayer(ctx context.Context, layerPath string, vhdHandle windows.Handle, options OsLayerOptions) (err error) { | ||||
| 	title := "hcsshim.SetupBaseOSLayer" | ||||
| 	ctx, span := trace.StartSpan(ctx, title) | ||||
| 	defer span.End() | ||||
| 	defer func() { oc.SetSpanStatus(span, err) }() | ||||
| 	span.AddAttributes( | ||||
| 		trace.StringAttribute("layerPath", layerPath), | ||||
| 	) | ||||
|  | ||||
| 	bytes, err := json.Marshal(options) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	err = hcsSetupBaseOSLayer(layerPath, vhdHandle, string(bytes)) | ||||
| 	if err != nil { | ||||
| 		return errors.Wrap(err, "failed to setup base OS layer") | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // SetupBaseOSVolume sets up a volume that contains a base OS for a container. | ||||
| // | ||||
| // `layerPath` is a path to a directory containing the layer. | ||||
| // | ||||
| // `volumePath` is the path to the volume to be used for setup. | ||||
| // | ||||
| // `options` are the options applied while processing the layer. | ||||
| func SetupBaseOSVolume(ctx context.Context, layerPath, volumePath string, options OsLayerOptions) (err error) { | ||||
| 	if osversion.Get().Build < 19645 { | ||||
| 		return errors.New("SetupBaseOSVolume is not present on builds older than 19645") | ||||
| 	} | ||||
| 	title := "hcsshim.SetupBaseOSVolume" | ||||
| 	ctx, span := trace.StartSpan(ctx, title) | ||||
| 	defer span.End() | ||||
| 	defer func() { oc.SetSpanStatus(span, err) }() | ||||
| 	span.AddAttributes( | ||||
| 		trace.StringAttribute("layerPath", layerPath), | ||||
| 		trace.StringAttribute("volumePath", volumePath), | ||||
| 	) | ||||
|  | ||||
| 	bytes, err := json.Marshal(options) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	err = hcsSetupBaseOSVolume(layerPath, volumePath, string(bytes)) | ||||
| 	if err != nil { | ||||
| 		return errors.Wrap(err, "failed to setup base OS layer") | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
							
								
								
									
										50
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/storage.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/storage.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,50 @@ | ||||
| // Package computestorage is a wrapper around the HCS storage APIs. These are new storage APIs introduced | ||||
| // separate from the original graphdriver calls intended to give more freedom around creating | ||||
| // and managing container layers and scratch spaces. | ||||
| package computestorage | ||||
|  | ||||
| import ( | ||||
| 	hcsschema "github.com/Microsoft/hcsshim/internal/schema2" | ||||
| ) | ||||
|  | ||||
| //go:generate go run ../mksyscall_windows.go -output zsyscall_windows.go storage.go | ||||
|  | ||||
| //sys hcsImportLayer(layerPath string, sourceFolderPath string, layerData string) (hr error) = computestorage.HcsImportLayer? | ||||
| //sys hcsExportLayer(layerPath string, exportFolderPath string, layerData string, options string) (hr error) = computestorage.HcsExportLayer? | ||||
| //sys hcsDestroyLayer(layerPath string) (hr error) = computestorage.HcsDestoryLayer? | ||||
| //sys hcsSetupBaseOSLayer(layerPath string, handle windows.Handle, options string) (hr error) = computestorage.HcsSetupBaseOSLayer? | ||||
| //sys hcsInitializeWritableLayer(writableLayerPath string, layerData string, options string) (hr error) = computestorage.HcsInitializeWritableLayer? | ||||
| //sys hcsAttachLayerStorageFilter(layerPath string, layerData string) (hr error) = computestorage.HcsAttachLayerStorageFilter? | ||||
| //sys hcsDetachLayerStorageFilter(layerPath string) (hr error) = computestorage.HcsDetachLayerStorageFilter? | ||||
| //sys hcsFormatWritableLayerVhd(handle windows.Handle) (hr error) = computestorage.HcsFormatWritableLayerVhd? | ||||
| //sys hcsGetLayerVhdMountPath(vhdHandle windows.Handle, mountPath **uint16) (hr error) = computestorage.HcsGetLayerVhdMountPath? | ||||
| //sys hcsSetupBaseOSVolume(layerPath string, volumePath string, options string) (hr error) = computestorage.HcsSetupBaseOSVolume? | ||||
|  | ||||
| // LayerData is the data used to describe parent layer information. | ||||
| type LayerData struct { | ||||
| 	SchemaVersion hcsschema.Version `json:"SchemaVersion,omitempty"` | ||||
| 	Layers        []hcsschema.Layer `json:"Layers,omitempty"` | ||||
| } | ||||
|  | ||||
| // ExportLayerOptions are the set of options that are used with the `computestorage.HcsExportLayer` syscall. | ||||
| type ExportLayerOptions struct { | ||||
| 	IsWritableLayer bool `json:"IsWritableLayer,omitempty"` | ||||
| } | ||||
|  | ||||
| // OsLayerType is the type of layer being operated on. | ||||
| type OsLayerType string | ||||
|  | ||||
| const ( | ||||
| 	// OsLayerTypeContainer is a container layer. | ||||
| 	OsLayerTypeContainer OsLayerType = "Container" | ||||
| 	// OsLayerTypeVM is a virtual machine layer. | ||||
| 	OsLayerTypeVM OsLayerType = "Vm" | ||||
| ) | ||||
|  | ||||
| // OsLayerOptions are the set of options that are used with the `SetupBaseOSLayer` and | ||||
| // `SetupBaseOSVolume` calls. | ||||
| type OsLayerOptions struct { | ||||
| 	Type                       OsLayerType `json:"Type,omitempty"` | ||||
| 	DisableCiCacheOptimization bool        `json:"DisableCiCacheOptimization,omitempty"` | ||||
| 	SkipUpdateBcdForBoot       bool        `json:"SkipUpdateBcdForBoot,omitempty"` | ||||
| } | ||||
							
								
								
									
										319
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/zsyscall_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										319
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/zsyscall_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,319 @@ | ||||
| // Code generated mksyscall_windows.exe DO NOT EDIT | ||||
|  | ||||
| package computestorage | ||||
|  | ||||
| import ( | ||||
| 	"syscall" | ||||
| 	"unsafe" | ||||
|  | ||||
| 	"golang.org/x/sys/windows" | ||||
| ) | ||||
|  | ||||
| var _ unsafe.Pointer | ||||
|  | ||||
| // Do the interface allocations only once for common | ||||
| // Errno values. | ||||
| const ( | ||||
| 	errnoERROR_IO_PENDING = 997 | ||||
| ) | ||||
|  | ||||
| var ( | ||||
| 	errERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING) | ||||
| ) | ||||
|  | ||||
| // errnoErr returns common boxed Errno values, to prevent | ||||
| // allocations at runtime. | ||||
| func errnoErr(e syscall.Errno) error { | ||||
| 	switch e { | ||||
| 	case 0: | ||||
| 		return nil | ||||
| 	case errnoERROR_IO_PENDING: | ||||
| 		return errERROR_IO_PENDING | ||||
| 	} | ||||
| 	// TODO: add more here, after collecting data on the common | ||||
| 	// error values see on Windows. (perhaps when running | ||||
| 	// all.bat?) | ||||
| 	return e | ||||
| } | ||||
|  | ||||
| var ( | ||||
| 	modcomputestorage = windows.NewLazySystemDLL("computestorage.dll") | ||||
|  | ||||
| 	procHcsImportLayer              = modcomputestorage.NewProc("HcsImportLayer") | ||||
| 	procHcsExportLayer              = modcomputestorage.NewProc("HcsExportLayer") | ||||
| 	procHcsDestoryLayer             = modcomputestorage.NewProc("HcsDestoryLayer") | ||||
| 	procHcsSetupBaseOSLayer         = modcomputestorage.NewProc("HcsSetupBaseOSLayer") | ||||
| 	procHcsInitializeWritableLayer  = modcomputestorage.NewProc("HcsInitializeWritableLayer") | ||||
| 	procHcsAttachLayerStorageFilter = modcomputestorage.NewProc("HcsAttachLayerStorageFilter") | ||||
| 	procHcsDetachLayerStorageFilter = modcomputestorage.NewProc("HcsDetachLayerStorageFilter") | ||||
| 	procHcsFormatWritableLayerVhd   = modcomputestorage.NewProc("HcsFormatWritableLayerVhd") | ||||
| 	procHcsGetLayerVhdMountPath     = modcomputestorage.NewProc("HcsGetLayerVhdMountPath") | ||||
| 	procHcsSetupBaseOSVolume        = modcomputestorage.NewProc("HcsSetupBaseOSVolume") | ||||
| ) | ||||
|  | ||||
| func hcsImportLayer(layerPath string, sourceFolderPath string, layerData string) (hr error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, hr = syscall.UTF16PtrFromString(layerPath) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	var _p1 *uint16 | ||||
| 	_p1, hr = syscall.UTF16PtrFromString(sourceFolderPath) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	var _p2 *uint16 | ||||
| 	_p2, hr = syscall.UTF16PtrFromString(layerData) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	return _hcsImportLayer(_p0, _p1, _p2) | ||||
| } | ||||
|  | ||||
| func _hcsImportLayer(layerPath *uint16, sourceFolderPath *uint16, layerData *uint16) (hr error) { | ||||
| 	if hr = procHcsImportLayer.Find(); hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	r0, _, _ := syscall.Syscall(procHcsImportLayer.Addr(), 3, uintptr(unsafe.Pointer(layerPath)), uintptr(unsafe.Pointer(sourceFolderPath)), uintptr(unsafe.Pointer(layerData))) | ||||
| 	if int32(r0) < 0 { | ||||
| 		if r0&0x1fff0000 == 0x00070000 { | ||||
| 			r0 &= 0xffff | ||||
| 		} | ||||
| 		hr = syscall.Errno(r0) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func hcsExportLayer(layerPath string, exportFolderPath string, layerData string, options string) (hr error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, hr = syscall.UTF16PtrFromString(layerPath) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	var _p1 *uint16 | ||||
| 	_p1, hr = syscall.UTF16PtrFromString(exportFolderPath) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	var _p2 *uint16 | ||||
| 	_p2, hr = syscall.UTF16PtrFromString(layerData) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	var _p3 *uint16 | ||||
| 	_p3, hr = syscall.UTF16PtrFromString(options) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	return _hcsExportLayer(_p0, _p1, _p2, _p3) | ||||
| } | ||||
|  | ||||
| func _hcsExportLayer(layerPath *uint16, exportFolderPath *uint16, layerData *uint16, options *uint16) (hr error) { | ||||
| 	if hr = procHcsExportLayer.Find(); hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	r0, _, _ := syscall.Syscall6(procHcsExportLayer.Addr(), 4, uintptr(unsafe.Pointer(layerPath)), uintptr(unsafe.Pointer(exportFolderPath)), uintptr(unsafe.Pointer(layerData)), uintptr(unsafe.Pointer(options)), 0, 0) | ||||
| 	if int32(r0) < 0 { | ||||
| 		if r0&0x1fff0000 == 0x00070000 { | ||||
| 			r0 &= 0xffff | ||||
| 		} | ||||
| 		hr = syscall.Errno(r0) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func hcsDestroyLayer(layerPath string) (hr error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, hr = syscall.UTF16PtrFromString(layerPath) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	return _hcsDestroyLayer(_p0) | ||||
| } | ||||
|  | ||||
| func _hcsDestroyLayer(layerPath *uint16) (hr error) { | ||||
| 	if hr = procHcsDestoryLayer.Find(); hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	r0, _, _ := syscall.Syscall(procHcsDestoryLayer.Addr(), 1, uintptr(unsafe.Pointer(layerPath)), 0, 0) | ||||
| 	if int32(r0) < 0 { | ||||
| 		if r0&0x1fff0000 == 0x00070000 { | ||||
| 			r0 &= 0xffff | ||||
| 		} | ||||
| 		hr = syscall.Errno(r0) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func hcsSetupBaseOSLayer(layerPath string, handle windows.Handle, options string) (hr error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, hr = syscall.UTF16PtrFromString(layerPath) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	var _p1 *uint16 | ||||
| 	_p1, hr = syscall.UTF16PtrFromString(options) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	return _hcsSetupBaseOSLayer(_p0, handle, _p1) | ||||
| } | ||||
|  | ||||
| func _hcsSetupBaseOSLayer(layerPath *uint16, handle windows.Handle, options *uint16) (hr error) { | ||||
| 	if hr = procHcsSetupBaseOSLayer.Find(); hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	r0, _, _ := syscall.Syscall(procHcsSetupBaseOSLayer.Addr(), 3, uintptr(unsafe.Pointer(layerPath)), uintptr(handle), uintptr(unsafe.Pointer(options))) | ||||
| 	if int32(r0) < 0 { | ||||
| 		if r0&0x1fff0000 == 0x00070000 { | ||||
| 			r0 &= 0xffff | ||||
| 		} | ||||
| 		hr = syscall.Errno(r0) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func hcsInitializeWritableLayer(writableLayerPath string, layerData string, options string) (hr error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, hr = syscall.UTF16PtrFromString(writableLayerPath) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	var _p1 *uint16 | ||||
| 	_p1, hr = syscall.UTF16PtrFromString(layerData) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	var _p2 *uint16 | ||||
| 	_p2, hr = syscall.UTF16PtrFromString(options) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	return _hcsInitializeWritableLayer(_p0, _p1, _p2) | ||||
| } | ||||
|  | ||||
| func _hcsInitializeWritableLayer(writableLayerPath *uint16, layerData *uint16, options *uint16) (hr error) { | ||||
| 	if hr = procHcsInitializeWritableLayer.Find(); hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	r0, _, _ := syscall.Syscall(procHcsInitializeWritableLayer.Addr(), 3, uintptr(unsafe.Pointer(writableLayerPath)), uintptr(unsafe.Pointer(layerData)), uintptr(unsafe.Pointer(options))) | ||||
| 	if int32(r0) < 0 { | ||||
| 		if r0&0x1fff0000 == 0x00070000 { | ||||
| 			r0 &= 0xffff | ||||
| 		} | ||||
| 		hr = syscall.Errno(r0) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func hcsAttachLayerStorageFilter(layerPath string, layerData string) (hr error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, hr = syscall.UTF16PtrFromString(layerPath) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	var _p1 *uint16 | ||||
| 	_p1, hr = syscall.UTF16PtrFromString(layerData) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	return _hcsAttachLayerStorageFilter(_p0, _p1) | ||||
| } | ||||
|  | ||||
| func _hcsAttachLayerStorageFilter(layerPath *uint16, layerData *uint16) (hr error) { | ||||
| 	if hr = procHcsAttachLayerStorageFilter.Find(); hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	r0, _, _ := syscall.Syscall(procHcsAttachLayerStorageFilter.Addr(), 2, uintptr(unsafe.Pointer(layerPath)), uintptr(unsafe.Pointer(layerData)), 0) | ||||
| 	if int32(r0) < 0 { | ||||
| 		if r0&0x1fff0000 == 0x00070000 { | ||||
| 			r0 &= 0xffff | ||||
| 		} | ||||
| 		hr = syscall.Errno(r0) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func hcsDetachLayerStorageFilter(layerPath string) (hr error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, hr = syscall.UTF16PtrFromString(layerPath) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	return _hcsDetachLayerStorageFilter(_p0) | ||||
| } | ||||
|  | ||||
| func _hcsDetachLayerStorageFilter(layerPath *uint16) (hr error) { | ||||
| 	if hr = procHcsDetachLayerStorageFilter.Find(); hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	r0, _, _ := syscall.Syscall(procHcsDetachLayerStorageFilter.Addr(), 1, uintptr(unsafe.Pointer(layerPath)), 0, 0) | ||||
| 	if int32(r0) < 0 { | ||||
| 		if r0&0x1fff0000 == 0x00070000 { | ||||
| 			r0 &= 0xffff | ||||
| 		} | ||||
| 		hr = syscall.Errno(r0) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func hcsFormatWritableLayerVhd(handle windows.Handle) (hr error) { | ||||
| 	if hr = procHcsFormatWritableLayerVhd.Find(); hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	r0, _, _ := syscall.Syscall(procHcsFormatWritableLayerVhd.Addr(), 1, uintptr(handle), 0, 0) | ||||
| 	if int32(r0) < 0 { | ||||
| 		if r0&0x1fff0000 == 0x00070000 { | ||||
| 			r0 &= 0xffff | ||||
| 		} | ||||
| 		hr = syscall.Errno(r0) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func hcsGetLayerVhdMountPath(vhdHandle windows.Handle, mountPath **uint16) (hr error) { | ||||
| 	if hr = procHcsGetLayerVhdMountPath.Find(); hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	r0, _, _ := syscall.Syscall(procHcsGetLayerVhdMountPath.Addr(), 2, uintptr(vhdHandle), uintptr(unsafe.Pointer(mountPath)), 0) | ||||
| 	if int32(r0) < 0 { | ||||
| 		if r0&0x1fff0000 == 0x00070000 { | ||||
| 			r0 &= 0xffff | ||||
| 		} | ||||
| 		hr = syscall.Errno(r0) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func hcsSetupBaseOSVolume(layerPath string, volumePath string, options string) (hr error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, hr = syscall.UTF16PtrFromString(layerPath) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	var _p1 *uint16 | ||||
| 	_p1, hr = syscall.UTF16PtrFromString(volumePath) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	var _p2 *uint16 | ||||
| 	_p2, hr = syscall.UTF16PtrFromString(options) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	return _hcsSetupBaseOSVolume(_p0, _p1, _p2) | ||||
| } | ||||
|  | ||||
| func _hcsSetupBaseOSVolume(layerPath *uint16, volumePath *uint16, options *uint16) (hr error) { | ||||
| 	if hr = procHcsSetupBaseOSVolume.Find(); hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	r0, _, _ := syscall.Syscall(procHcsSetupBaseOSVolume.Addr(), 3, uintptr(unsafe.Pointer(layerPath)), uintptr(unsafe.Pointer(volumePath)), uintptr(unsafe.Pointer(options))) | ||||
| 	if int32(r0) < 0 { | ||||
| 		if r0&0x1fff0000 == 0x00070000 { | ||||
| 			r0 &= 0xffff | ||||
| 		} | ||||
| 		hr = syscall.Errno(r0) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
							
								
								
									
										12
									
								
								vendor/github.com/Microsoft/hcsshim/errors.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								vendor/github.com/Microsoft/hcsshim/errors.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -230,6 +230,18 @@ func IsNotSupported(err error) bool { | ||||
| 	return hcs.IsNotSupported(getInnerError(err)) | ||||
| } | ||||
|  | ||||
| // IsOperationInvalidState returns true when err is caused by | ||||
| // `ErrVmcomputeOperationInvalidState`. | ||||
| func IsOperationInvalidState(err error) bool { | ||||
| 	return hcs.IsOperationInvalidState(getInnerError(err)) | ||||
| } | ||||
|  | ||||
| // IsAccessIsDenied returns true when err is caused by | ||||
| // `ErrVmcomputeOperationAccessIsDenied`. | ||||
| func IsAccessIsDenied(err error) bool { | ||||
| 	return hcs.IsAccessIsDenied(getInnerError(err)) | ||||
| } | ||||
|  | ||||
| func getInnerError(err error) error { | ||||
| 	switch pe := err.(type) { | ||||
| 	case nil: | ||||
|   | ||||
							
								
								
									
										41
									
								
								vendor/github.com/Microsoft/hcsshim/go.mod
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										41
									
								
								vendor/github.com/Microsoft/hcsshim/go.mod
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -3,33 +3,20 @@ module github.com/Microsoft/hcsshim | ||||
| go 1.13 | ||||
|  | ||||
| require ( | ||||
| 	github.com/Microsoft/go-winio v0.4.15-0.20200908182639-5b44b70ab3ab | ||||
| 	github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59 | ||||
| 	github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1 | ||||
| 	github.com/containerd/containerd v1.3.2 | ||||
| 	github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc // indirect | ||||
| 	github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448 // indirect | ||||
| 	github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3 | ||||
| 	github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de | ||||
| 	github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd | ||||
| 	github.com/gogo/protobuf v1.3.1 | ||||
| 	github.com/golang/protobuf v1.3.2 // indirect | ||||
| 	github.com/kr/pretty v0.1.0 // indirect | ||||
| 	github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2 // indirect | ||||
| 	github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f // indirect | ||||
| 	github.com/opencontainers/runtime-spec v1.0.2 | ||||
| 	github.com/Microsoft/go-winio v0.4.17-0.20210211115548-6eac466e5fa3 | ||||
| 	github.com/containerd/cgroups v0.0.0-20200824123100-0b889c03f102 | ||||
| 	github.com/containerd/console v1.0.1 | ||||
| 	github.com/containerd/containerd v1.5.0-beta.1 | ||||
| 	github.com/containerd/go-runc v0.0.0-20200220073739-7016d3ce2328 | ||||
| 	github.com/containerd/ttrpc v1.0.2 | ||||
| 	github.com/containerd/typeurl v1.0.1 | ||||
| 	github.com/gogo/protobuf v1.3.2 | ||||
| 	github.com/opencontainers/runtime-spec v1.0.3-0.20200929063507-e6143ca7d51d | ||||
| 	github.com/pkg/errors v0.9.1 | ||||
| 	github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7 // indirect | ||||
| 	github.com/sirupsen/logrus v1.4.2 | ||||
| 	github.com/stretchr/testify v1.4.0 // indirect | ||||
| 	github.com/sirupsen/logrus v1.7.0 | ||||
| 	github.com/urfave/cli v1.22.2 | ||||
| 	go.opencensus.io v0.22.0 | ||||
| 	golang.org/x/net v0.0.0-20191004110552-13f9640d40b9 // indirect | ||||
| 	golang.org/x/sync v0.0.0-20190423024810-112230192c58 | ||||
| 	golang.org/x/sys v0.0.0-20200120151820-655fe14d7479 | ||||
| 	google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873 // indirect | ||||
| 	google.golang.org/grpc v1.23.1 | ||||
| 	gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect | ||||
| 	gopkg.in/yaml.v2 v2.2.8 // indirect | ||||
| 	gotest.tools v2.2.0+incompatible // indirect | ||||
| 	go.opencensus.io v0.22.3 | ||||
| 	golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9 | ||||
| 	golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c | ||||
| 	google.golang.org/grpc v1.30.0 | ||||
| ) | ||||
|   | ||||
							
								
								
									
										713
									
								
								vendor/github.com/Microsoft/hcsshim/go.sum
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										713
									
								
								vendor/github.com/Microsoft/hcsshim/go.sum
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,157 +1,866 @@ | ||||
| bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= | ||||
| cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= | ||||
| cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= | ||||
| cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= | ||||
| cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= | ||||
| cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= | ||||
| cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= | ||||
| cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= | ||||
| cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= | ||||
| cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= | ||||
| cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= | ||||
| cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= | ||||
| cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= | ||||
| cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= | ||||
| cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= | ||||
| cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= | ||||
| cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= | ||||
| cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= | ||||
| cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= | ||||
| cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= | ||||
| cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= | ||||
| cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= | ||||
| cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= | ||||
| dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= | ||||
| github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= | ||||
| github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= | ||||
| github.com/Azure/go-autorest v10.8.1+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= | ||||
| github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= | ||||
| github.com/Azure/go-autorest/autorest v0.11.1/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw= | ||||
| github.com/Azure/go-autorest/autorest/adal v0.9.0/go.mod h1:/c022QCutn2P7uY+/oQWWNcK9YU+MH96NgK+jErpbcg= | ||||
| github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= | ||||
| github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= | ||||
| github.com/Azure/go-autorest/autorest/mocks v0.4.0/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= | ||||
| github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= | ||||
| github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= | ||||
| github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= | ||||
| github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= | ||||
| github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= | ||||
| github.com/Microsoft/go-winio v0.4.15-0.20200908182639-5b44b70ab3ab h1:9pygWVFqbY9lPxM0peffumuVDyMuIMzNLyO9uFjJuQo= | ||||
| github.com/Microsoft/go-winio v0.4.15-0.20200908182639-5b44b70ab3ab/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= | ||||
| github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= | ||||
| github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= | ||||
| github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= | ||||
| github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= | ||||
| github.com/Microsoft/go-winio v0.4.16-0.20201130162521-d1ffc52c7331 h1:3YnB7Hpmh1lPecPE8doMOtYCrMdrpedZOvxfuNES/Vk= | ||||
| github.com/Microsoft/go-winio v0.4.16-0.20201130162521-d1ffc52c7331/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= | ||||
| github.com/Microsoft/go-winio v0.4.16 h1:FtSW/jqD+l4ba5iPBj9CODVtgfYAD8w2wS923g/cFDk= | ||||
| github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= | ||||
| github.com/Microsoft/go-winio v0.4.17-0.20210211115548-6eac466e5fa3 h1:mw6pDQqv38/WGF1cO/jF5t/jyAJ2yi7CmtFLLO5tGFI= | ||||
| github.com/Microsoft/go-winio v0.4.17-0.20210211115548-6eac466e5fa3/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= | ||||
| github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= | ||||
| github.com/Microsoft/hcsshim v0.8.7-0.20190325164909-8abdbb8205e4/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= | ||||
| github.com/Microsoft/hcsshim v0.8.7/go.mod h1:OHd7sQqRFrYd3RmSgbgji+ctCwkbq2wbEYNSzOYtcBQ= | ||||
| github.com/Microsoft/hcsshim v0.8.9/go.mod h1:5692vkUqntj1idxauYlpoINNKeqCiG6Sg38RRsjT5y8= | ||||
| github.com/Microsoft/hcsshim v0.8.14/go.mod h1:NtVKoYxQuTLx6gEq0L96c9Ju4JbRJ4nY2ow3VK6a9Lg= | ||||
| github.com/Microsoft/hcsshim/test v0.0.0-20201218223536-d3e5debf77da/go.mod h1:5hlzMzRKMLyo42nCZ9oml8AdTlq/0cvIaBv6tK1RehU= | ||||
| github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= | ||||
| github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= | ||||
| github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= | ||||
| github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= | ||||
| github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= | ||||
| github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= | ||||
| github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= | ||||
| github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= | ||||
| github.com/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae/go.mod h1:CgnQgUtFrFz9mxFNtED3jI5tLDjKlOM+oUF/sTk6ps0= | ||||
| github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= | ||||
| github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= | ||||
| github.com/beorn7/perks v0.0.0-20160804104726-4c0e84591b9a/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= | ||||
| github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= | ||||
| github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= | ||||
| github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= | ||||
| github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= | ||||
| github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= | ||||
| github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= | ||||
| github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= | ||||
| github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= | ||||
| github.com/bshuster-repo/logrus-logstash-hook v0.4.1/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= | ||||
| github.com/buger/jsonparser v0.0.0-20180808090653-f4dd9f5a6b44/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= | ||||
| github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= | ||||
| github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50= | ||||
| github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= | ||||
| github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= | ||||
| github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= | ||||
| github.com/checkpoint-restore/go-criu/v4 v4.1.0/go.mod h1:xUQBLp4RLc5zJtWY++yjOoMoB5lihDt7fai+75m+rGw= | ||||
| github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= | ||||
| github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= | ||||
| github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= | ||||
| github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg= | ||||
| github.com/cilium/ebpf v0.0.0-20200702112145-1c8d4c9ef775/go.mod h1:7cR51M8ViRLIdUjrmSXlK9pkrsDlLHbO8jiB8X8JnOc= | ||||
| github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= | ||||
| github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= | ||||
| github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= | ||||
| github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= | ||||
| github.com/containerd/aufs v0.0.0-20200908144142-dab0cbea06f4/go.mod h1:nukgQABAEopAHvB6j7cnP5zJ+/3aVcE7hCYqvIwAHyE= | ||||
| github.com/containerd/btrfs v0.0.0-20201111183144-404b9149801e/go.mod h1:jg2QkJcsabfHugurUvvPhS3E08Oxiuh5W/g1ybB4e0E= | ||||
| github.com/containerd/cgroups v0.0.0-20190717030353-c4b9ac5c7601/go.mod h1:X9rLEHIqSf/wfK8NsPqxJmeZgW4pcfzdXITDrUSJ6uI= | ||||
| github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko= | ||||
| github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59 h1:qWj4qVYZ95vLWwqyNJCQg7rDsG5wPdze0UaPolH7DUk= | ||||
| github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= | ||||
| github.com/containerd/cgroups v0.0.0-20200710171044-318312a37340/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= | ||||
| github.com/containerd/cgroups v0.0.0-20200824123100-0b889c03f102 h1:Qf4HiqfvmB7zS6scsmNgTLmByHbq8n9RTF39v+TzP7A= | ||||
| github.com/containerd/cgroups v0.0.0-20200824123100-0b889c03f102/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= | ||||
| github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1 h1:uict5mhHFTzKLUCufdSLym7z/J0CbBJT59lYbP9wtbg= | ||||
| github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= | ||||
| github.com/containerd/console v0.0.0-20181022165439-0650fd9eeb50/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= | ||||
| github.com/containerd/console v0.0.0-20191206165004-02ecf6a7291e/go.mod h1:8Pf4gM6VEbTNRIT26AyyU7hxdQU3MvAvxVI0sc00XBE= | ||||
| github.com/containerd/console v1.0.1 h1:u7SFAJyRqWcG6ogaMAx3KjSTy1e3hT9QxqX7Jco7dRc= | ||||
| github.com/containerd/console v1.0.1/go.mod h1:XUsP6YE/mKtz6bxc+I8UiKKTP04qjQL4qcS3XoQ5xkw= | ||||
| github.com/containerd/containerd v1.2.10/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= | ||||
| github.com/containerd/containerd v1.3.0-beta.2.0.20190828155532-0293cbd26c69/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= | ||||
| github.com/containerd/containerd v1.3.0/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= | ||||
| github.com/containerd/containerd v1.3.1-0.20191213020239-082f7e3aed57/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= | ||||
| github.com/containerd/containerd v1.3.2 h1:ForxmXkA6tPIvffbrDAcPUIB32QgXkt2XFj+F0UxetA= | ||||
| github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= | ||||
| github.com/containerd/containerd v1.4.0-beta.2.0.20200729163537-40b22ef07410/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= | ||||
| github.com/containerd/containerd v1.5.0-beta.1 h1:IK6yirB4X7wpKyFSikWiT++nZsyIxGAAgNEv3fEGuls= | ||||
| github.com/containerd/containerd v1.5.0-beta.1/go.mod h1:5HfvG1V2FsKesEGQ17k5/T7V960Tmcumvqn8Mc+pCYQ= | ||||
| github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc h1:TP+534wVlf61smEIq1nwLLAjQVEK2EADoW3CX9AuT+8= | ||||
| github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= | ||||
| github.com/containerd/continuity v0.0.0-20190815185530-f2a389ac0a02/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= | ||||
| github.com/containerd/continuity v0.0.0-20191127005431-f65d91d395eb/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= | ||||
| github.com/containerd/continuity v0.0.0-20200710164510-efbc4488d8fe/go.mod h1:cECdGN1O8G9bgKTlLhuPJimka6Xb/Gg7vYzCTNVxhvo= | ||||
| github.com/containerd/continuity v0.0.0-20201208142359-180525291bb7 h1:6ejg6Lkk8dskcM7wQ28gONkukbQkM4qpj4RnYbpFzrI= | ||||
| github.com/containerd/continuity v0.0.0-20201208142359-180525291bb7/go.mod h1:kR3BEg7bDFaEddKm54WSmrol1fKWDU1nKYkgrcgZT7Y= | ||||
| github.com/containerd/fifo v0.0.0-20180307165137-3d5202aec260/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= | ||||
| github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448 h1:PUD50EuOMkXVcpBIA/R95d56duJR9VxhwncsFbNnxW4= | ||||
| github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= | ||||
| github.com/containerd/fifo v0.0.0-20200410184934-f15a3290365b/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= | ||||
| github.com/containerd/fifo v0.0.0-20201026212402-0724c46b320c h1:1c6xmkNiu6Jnr6AKGM91GGNsfU+nPNFvw9BZFSo0E+c= | ||||
| github.com/containerd/fifo v0.0.0-20201026212402-0724c46b320c/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= | ||||
| github.com/containerd/go-cni v1.0.1/go.mod h1:+vUpYxKvAF72G9i1WoDOiPGRtQpqsNW/ZHtSlv++smU= | ||||
| github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3 h1:esQOJREg8nw8aXj6uCN5dfW5cKUBiEJ/+nni1Q/D/sw= | ||||
| github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= | ||||
| github.com/containerd/go-runc v0.0.0-20190911050354-e029b79d8cda/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= | ||||
| github.com/containerd/go-runc v0.0.0-20200220073739-7016d3ce2328 h1:PRTagVMbJcCezLcHXe8UJvR1oBzp2lG3CEumeFOLOds= | ||||
| github.com/containerd/go-runc v0.0.0-20200220073739-7016d3ce2328/go.mod h1:PpyHrqVs8FTi9vpyHwPwiNEGaACDxT/N/pLcvMSRA9g= | ||||
| github.com/containerd/imgcrypt v1.0.1/go.mod h1:mdd8cEPW7TPgNG4FpuP3sGBiQ7Yi/zak9TYCG3juvb0= | ||||
| github.com/containerd/nri v0.0.0-20201007170849-eb1350a75164/go.mod h1:+2wGSDGFYfE5+So4M5syatU0N0f0LbWpuqyMi4/BE8c= | ||||
| github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de h1:dlfGmNcE3jDAecLqwKPMNX6nk2qh1c1Vg1/YTzpOOF4= | ||||
| github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= | ||||
| github.com/containerd/ttrpc v0.0.0-20190828172938-92c8520ef9f8/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= | ||||
| github.com/containerd/ttrpc v0.0.0-20191028202541-4f1b8fe65a5c/go.mod h1:LPm1u0xBw8r8NOKoOdNMeVHSawSsltak+Ihv+etqsE8= | ||||
| github.com/containerd/ttrpc v1.0.1/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= | ||||
| github.com/containerd/ttrpc v1.0.2 h1:2/O3oTZN36q2xRolk0a2WWGgh7/Vf/liElg5hFYLX9U= | ||||
| github.com/containerd/ttrpc v1.0.2/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= | ||||
| github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd h1:JNn81o/xG+8NEo3bC/vx9pbi/g2WI8mtP2/nXzu297Y= | ||||
| github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= | ||||
| github.com/containerd/typeurl v0.0.0-20190911142611-5eb25027c9fd/go.mod h1:GeKYzf2pQcqv7tJ0AoCuuhtnqhva5LNU3U+OyKxxJpk= | ||||
| github.com/containerd/typeurl v1.0.1 h1:PvuK4E3D5S5q6IqsPDCy928FhP0LUIGcmZ/Yhgp5Djw= | ||||
| github.com/containerd/typeurl v1.0.1/go.mod h1:TB1hUtrpaiO88KEK56ijojHS1+NeF0izUACaJW2mdXg= | ||||
| github.com/containerd/zfs v0.0.0-20200918131355-0a33824f23a2/go.mod h1:8IgZOBdv8fAgXddBT4dBXJPtxyRsejFIpXoklgxgEjw= | ||||
| github.com/containernetworking/cni v0.7.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= | ||||
| github.com/containernetworking/cni v0.8.0/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= | ||||
| github.com/containernetworking/plugins v0.8.6/go.mod h1:qnw5mN19D8fIwkqW7oHHYDHVlzhJpcY6TQxn/fUyDDM= | ||||
| github.com/containers/ocicrypt v1.0.1/go.mod h1:MeJDzk1RJHv89LjsH0Sp5KTY3ZYkjXO/C+bKAeWFIrc= | ||||
| github.com/coreos/go-iptables v0.4.5/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= | ||||
| github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= | ||||
| github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= | ||||
| github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= | ||||
| github.com/coreos/go-systemd v0.0.0-20161114122254-48702e0da86b/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= | ||||
| github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= | ||||
| github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= | ||||
| github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= | ||||
| github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= | ||||
| github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= | ||||
| github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= | ||||
| github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= | ||||
| github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= | ||||
| github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= | ||||
| github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= | ||||
| github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= | ||||
| github.com/d2g/dhcp4 v0.0.0-20170904100407-a1d1b6c41b1c/go.mod h1:Ct2BUK8SB0YC1SMSibvLzxjeJLnrYEVLULFNiHY9YfQ= | ||||
| github.com/d2g/dhcp4client v1.0.0/go.mod h1:j0hNfjhrt2SxUOw55nL0ATM/z4Yt3t2Kd1mW34z5W5s= | ||||
| github.com/d2g/dhcp4server v0.0.0-20181031114812-7d4a0a7f59a5/go.mod h1:Eo87+Kg/IX2hfWJfwxMzLyuSZyxSoAug2nGa1G2QAi8= | ||||
| github.com/d2g/hardwareaddr v0.0.0-20190221164911-e7d9fbe030e4/go.mod h1:bMl4RjIciD2oAxI7DmWRx6gbeqrkoLqv3MV0vzNad+I= | ||||
| github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||
| github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= | ||||
| github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||
| github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0= | ||||
| github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= | ||||
| github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= | ||||
| github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= | ||||
| github.com/docker/distribution v0.0.0-20190905152932-14b96e55d84c/go.mod h1:0+TTO4EOBfRPhZXAeF1Vu+W3hHZ8eLp8PgKVZlcvtFY= | ||||
| github.com/docker/distribution v2.7.1-0.20190205005809-0d3efadf0154+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= | ||||
| github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= | ||||
| github.com/docker/go-events v0.0.0-20170721190031-9461782956ad/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= | ||||
| github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= | ||||
| github.com/docker/go-metrics v0.0.0-20180209012529-399ea8c73916/go.mod h1:/u0gXw0Gay3ceNrsHubL3BtdOL2fHf93USgMTe0W5dI= | ||||
| github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= | ||||
| github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= | ||||
| github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= | ||||
| github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= | ||||
| github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= | ||||
| github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= | ||||
| github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= | ||||
| github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= | ||||
| github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= | ||||
| github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= | ||||
| github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= | ||||
| github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= | ||||
| github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= | ||||
| github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= | ||||
| github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= | ||||
| github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= | ||||
| github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= | ||||
| github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= | ||||
| github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= | ||||
| github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= | ||||
| github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa/go.mod h1:KnogPXtdwXqoenmZCw6S+25EAm2MkxbG0deNDu4cbSA= | ||||
| github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= | ||||
| github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= | ||||
| github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= | ||||
| github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= | ||||
| github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= | ||||
| github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= | ||||
| github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= | ||||
| github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= | ||||
| github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= | ||||
| github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= | ||||
| github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= | ||||
| github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= | ||||
| github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= | ||||
| github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= | ||||
| github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= | ||||
| github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= | ||||
| github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= | ||||
| github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= | ||||
| github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= | ||||
| github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= | ||||
| github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= | ||||
| github.com/godbus/dbus v0.0.0-20151105175453-c7fdd8b5cd55/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= | ||||
| github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= | ||||
| github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= | ||||
| github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= | ||||
| github.com/gogo/googleapis v1.2.0/go.mod h1:Njal3psf3qN6dwBtQfUmBZh2ybovJ0tlu3o/AC7HYjU= | ||||
| github.com/gogo/googleapis v1.4.0/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= | ||||
| github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= | ||||
| github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= | ||||
| github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= | ||||
| github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= | ||||
| github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls= | ||||
| github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= | ||||
| github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= | ||||
| github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= | ||||
| github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= | ||||
| github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= | ||||
| github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= | ||||
| github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= | ||||
| github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= | ||||
| github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= | ||||
| github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= | ||||
| github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= | ||||
| github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= | ||||
| github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= | ||||
| github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= | ||||
| github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= | ||||
| github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= | ||||
| github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= | ||||
| github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg= | ||||
| github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= | ||||
| github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= | ||||
| github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= | ||||
| github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= | ||||
| github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= | ||||
| github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= | ||||
| github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= | ||||
| github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= | ||||
| github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= | ||||
| github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= | ||||
| github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= | ||||
| github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= | ||||
| github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= | ||||
| github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM= | ||||
| github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= | ||||
| github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= | ||||
| github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= | ||||
| github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= | ||||
| github.com/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY= | ||||
| github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= | ||||
| github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= | ||||
| github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= | ||||
| github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= | ||||
| github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= | ||||
| github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM= | ||||
| github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= | ||||
| github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= | ||||
| github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= | ||||
| github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= | ||||
| github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= | ||||
| github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= | ||||
| github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= | ||||
| github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= | ||||
| github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= | ||||
| github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= | ||||
| github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= | ||||
| github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= | ||||
| github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= | ||||
| github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= | ||||
| github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= | ||||
| github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= | ||||
| github.com/gorilla/mux v1.7.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= | ||||
| github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= | ||||
| github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= | ||||
| github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= | ||||
| github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= | ||||
| github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= | ||||
| github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= | ||||
| github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= | ||||
| github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= | ||||
| github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= | ||||
| github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= | ||||
| github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= | ||||
| github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= | ||||
| github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= | ||||
| github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= | ||||
| github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= | ||||
| github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= | ||||
| github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= | ||||
| github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= | ||||
| github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= | ||||
| github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56/go.mod h1:ymszkNOg6tORTn+6F6j+Jc8TOr5osrynvN6ivFWZ2GA= | ||||
| github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= | ||||
| github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= | ||||
| github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= | ||||
| github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= | ||||
| github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= | ||||
| github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= | ||||
| github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= | ||||
| github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= | ||||
| github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= | ||||
| github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= | ||||
| github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= | ||||
| github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= | ||||
| github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= | ||||
| github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= | ||||
| github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= | ||||
| github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= | ||||
| github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= | ||||
| github.com/konsorten/go-windows-terminal-sequences v1.0.2 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s= | ||||
| github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= | ||||
| github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= | ||||
| github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= | ||||
| github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= | ||||
| github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= | ||||
| github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs= | ||||
| github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= | ||||
| github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= | ||||
| github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= | ||||
| github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= | ||||
| github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= | ||||
| github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= | ||||
| github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= | ||||
| github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= | ||||
| github.com/marstr/guid v1.1.0/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho= | ||||
| github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= | ||||
| github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= | ||||
| github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= | ||||
| github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= | ||||
| github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= | ||||
| github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= | ||||
| github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4= | ||||
| github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= | ||||
| github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f/go.mod h1:OkQIRizQZAeMln+1tSwduZz7+Af5oFlKirV/MSYes2A= | ||||
| github.com/moby/sys/mountinfo v0.4.0 h1:1KInV3Huv18akCu58V7lzNlt+jFmqlu1EaErnEHE/VM= | ||||
| github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= | ||||
| github.com/moby/sys/symlink v0.1.0/go.mod h1:GGDODQmbFOjFsXvfLVn3+ZRxkch54RkSiGqsZeMYowQ= | ||||
| github.com/moby/term v0.0.0-20200312100748-672ec06f55cd/go.mod h1:DdlQx2hp0Ss5/fLikoLlEeIYiATotOjgB//nb973jeo= | ||||
| github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= | ||||
| github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= | ||||
| github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= | ||||
| github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= | ||||
| github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= | ||||
| github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= | ||||
| github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= | ||||
| github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= | ||||
| github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= | ||||
| github.com/ncw/swift v1.0.47/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM= | ||||
| github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= | ||||
| github.com/onsi/ginkgo v0.0.0-20151202141238-7f8ab55aaf3b/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= | ||||
| github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= | ||||
| github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= | ||||
| github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= | ||||
| github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= | ||||
| github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= | ||||
| github.com/onsi/gomega v0.0.0-20151007035656-2152b45fa28a/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= | ||||
| github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= | ||||
| github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= | ||||
| github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= | ||||
| github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= | ||||
| github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2 h1:QhPf3A2AZW3tTGvHPg0TA+CR3oHbVLlXUhlghqISp1I= | ||||
| github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= | ||||
| github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= | ||||
| github.com/opencontainers/go-digest v1.0.0-rc1.0.20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= | ||||
| github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= | ||||
| github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= | ||||
| github.com/opencontainers/image-spec v1.0.0/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= | ||||
| github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= | ||||
| github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f h1:a969LJ4IQFwRHYqonHtUDMSh9i54WcKggeEkQ3fZMl4= | ||||
| github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= | ||||
| github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= | ||||
| github.com/opencontainers/runc v1.0.0-rc8.0.20190926000215-3e425f80a8c9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= | ||||
| github.com/opencontainers/runc v1.0.0-rc9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= | ||||
| github.com/opencontainers/runc v1.0.0-rc93/go.mod h1:3NOsor4w32B2tC0Zbl8Knk4Wg84SM2ImC1fxBuqJ/H0= | ||||
| github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= | ||||
| github.com/opencontainers/runtime-spec v1.0.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= | ||||
| github.com/opencontainers/runtime-spec v1.0.2-0.20190207185410-29686dbc5559/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= | ||||
| github.com/opencontainers/runtime-spec v1.0.2 h1:UfAcuLBJB9Coz72x1hgl8O5RVzTdNiaglX6v2DM6FI0= | ||||
| github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= | ||||
| github.com/opencontainers/runtime-spec v1.0.3-0.20200929063507-e6143ca7d51d h1:pNa8metDkwZjb9g4T8s+krQ+HRgZAkqnXml+wNir/+s= | ||||
| github.com/opencontainers/runtime-spec v1.0.3-0.20200929063507-e6143ca7d51d/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= | ||||
| github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39/go.mod h1:r3f7wjNzSs2extwzU3Y+6pKfobzPh+kKFJ3ofN+3nfs= | ||||
| github.com/opencontainers/selinux v1.6.0/go.mod h1:VVGKuOLlE7v4PJyT6h7mNWvq1rzqiriPsEqVhc+svHE= | ||||
| github.com/opencontainers/selinux v1.8.0/go.mod h1:RScLhm78qiWa2gbVCcGkC7tCGdgk3ogry1nUQF8Evvo= | ||||
| github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= | ||||
| github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | ||||
| github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | ||||
| github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= | ||||
| github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | ||||
| github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= | ||||
| github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | ||||
| github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | ||||
| github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||
| github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= | ||||
| github.com/prometheus/client_golang v0.0.0-20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= | ||||
| github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= | ||||
| github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= | ||||
| github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= | ||||
| github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= | ||||
| github.com/prometheus/client_model v0.0.0-20171117100541-99fa1f4be8e5/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= | ||||
| github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= | ||||
| github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= | ||||
| github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= | ||||
| github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= | ||||
| github.com/prometheus/common v0.0.0-20180110214958-89604d197083/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= | ||||
| github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= | ||||
| github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= | ||||
| github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= | ||||
| github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7 h1:hhvfGDVThBnd4kYisSFmYuHYeUhglxcwag7FhVPH9zM= | ||||
| github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= | ||||
| github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= | ||||
| github.com/prometheus/procfs v0.0.0-20190522114515-bc1a522cf7b1/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= | ||||
| github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= | ||||
| github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= | ||||
| github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= | ||||
| github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= | ||||
| github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= | ||||
| github.com/prometheus/procfs v0.2.0 h1:wH4vA7pcjKuZzjF7lM8awk4fnuJO6idemZXoKnULUx4= | ||||
| github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= | ||||
| github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= | ||||
| github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= | ||||
| github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= | ||||
| github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= | ||||
| github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= | ||||
| github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= | ||||
| github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= | ||||
| github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= | ||||
| github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= | ||||
| github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= | ||||
| github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= | ||||
| github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= | ||||
| github.com/sirupsen/logrus v1.4.1 h1:GL2rEmy6nsikmW0r8opw9JIRScdMF5hA8cOYLH7In1k= | ||||
| github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= | ||||
| github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= | ||||
| github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= | ||||
| github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= | ||||
| github.com/sirupsen/logrus v1.7.0 h1:ShrD1U9pZB12TX0cVy0DtePoCH97K8EtX+mg7ZARUtM= | ||||
| github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= | ||||
| github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= | ||||
| github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= | ||||
| github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= | ||||
| github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= | ||||
| github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= | ||||
| github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= | ||||
| github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= | ||||
| github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= | ||||
| github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= | ||||
| github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= | ||||
| github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= | ||||
| github.com/stretchr/objx v0.0.0-20180129172003-8a3f7159479f/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | ||||
| github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | ||||
| github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | ||||
| github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= | ||||
| github.com/stretchr/testify v0.0.0-20180303142811-b89eecf5ca5d/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= | ||||
| github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= | ||||
| github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= | ||||
| github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= | ||||
| github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= | ||||
| github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= | ||||
| github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= | ||||
| github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= | ||||
| github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= | ||||
| github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= | ||||
| github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= | ||||
| github.com/tchap/go-patricia v2.2.6+incompatible/go.mod h1:bmLyhP68RS6kStMGxByiQ23RP/odRBOTVjwp2cDyi6I= | ||||
| github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= | ||||
| github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= | ||||
| github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= | ||||
| github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= | ||||
| github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= | ||||
| github.com/urfave/cli v1.22.2 h1:gsqYFH8bb9ekPA12kRo0hfjngWQjkJPlN9R0N78BoUo= | ||||
| github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= | ||||
| github.com/vishvananda/netlink v0.0.0-20181108222139-023a6dafdcdf/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= | ||||
| github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= | ||||
| github.com/vishvananda/netns v0.0.0-20180720170159-13995c7128cc/go.mod h1:ZjcWmFBXmLKZu9Nxj3WKYEafiSqer2rnvPr0en9UNpI= | ||||
| github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= | ||||
| github.com/willf/bitset v1.1.11-0.20200630133818-d5bec3311243/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= | ||||
| github.com/willf/bitset v1.1.11/go.mod h1:83CECat5yLh5zVOf4P1ErAgKA5UDvKtgyUABdr3+MjI= | ||||
| github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= | ||||
| github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= | ||||
| github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= | ||||
| github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= | ||||
| github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | ||||
| github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | ||||
| github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs= | ||||
| github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA= | ||||
| github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg= | ||||
| go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= | ||||
| go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= | ||||
| go.etcd.io/etcd v0.5.0-alpha.5.0.20200910180754-dd1b699fc489/go.mod h1:yVHk9ub3CSBatqGNg7GRmsnfLWtoW60w4eDYfh7vHDg= | ||||
| go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= | ||||
| go.opencensus.io v0.22.0 h1:C9hSCOW830chIVkdja34wa6Ky+IzWllkUinR+BtRZd4= | ||||
| go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= | ||||
| go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= | ||||
| go.opencensus.io v0.22.3 h1:8sGtKOrtQqkN1bp2AtX+misvLIlOmsEsNd+9NIcPEm8= | ||||
| go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= | ||||
| go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= | ||||
| go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= | ||||
| go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= | ||||
| go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= | ||||
| golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= | ||||
| golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= | ||||
| golang.org/x/crypto v0.0.0-20181009213950-7c1a557ab941/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= | ||||
| golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= | ||||
| golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= | ||||
| golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= | ||||
| golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= | ||||
| golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= | ||||
| golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= | ||||
| golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= | ||||
| golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= | ||||
| golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= | ||||
| golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= | ||||
| golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= | ||||
| golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= | ||||
| golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= | ||||
| golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= | ||||
| golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= | ||||
| golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= | ||||
| golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= | ||||
| golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= | ||||
| golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= | ||||
| golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= | ||||
| golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= | ||||
| golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= | ||||
| golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= | ||||
| golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= | ||||
| golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= | ||||
| golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= | ||||
| golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= | ||||
| golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= | ||||
| golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= | ||||
| golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= | ||||
| golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= | ||||
| golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= | ||||
| golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= | ||||
| golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= | ||||
| golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= | ||||
| golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= | ||||
| golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= | ||||
| golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= | ||||
| golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | ||||
| golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | ||||
| golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | ||||
| golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | ||||
| golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | ||||
| golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | ||||
| golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | ||||
| golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | ||||
| golang.org/x/net v0.0.0-20190311183353-d8887717615a h1:oWX7TPOiFAMXLq8o0ikBYfCJVlRHBcsciT5bXOrH628= | ||||
| golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= | ||||
| golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= | ||||
| golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09 h1:KaQtG+aDELoNmXYas3TVkGNYRuq8JQ1aa7LJt8EXVyo= | ||||
| golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= | ||||
| golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= | ||||
| golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= | ||||
| golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= | ||||
| golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | ||||
| golang.org/x/net v0.0.0-20190619014844-b5b0513f8c1b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | ||||
| golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | ||||
| golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | ||||
| golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | ||||
| golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | ||||
| golang.org/x/net v0.0.0-20191004110552-13f9640d40b9 h1:rjwSpXsdiK0dV8/Naq3kAw9ymfAeJIyd0upUIElB+lI= | ||||
| golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | ||||
| golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | ||||
| golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | ||||
| golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | ||||
| golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | ||||
| golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | ||||
| golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | ||||
| golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= | ||||
| golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= | ||||
| golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= | ||||
| golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= | ||||
| golang.org/x/net v0.0.0-20201224014010-6772e930b67b h1:iFwSg7t5GZmB/Q5TjiEAsdoLDrdJRC1RiF2WhuV29Qw= | ||||
| golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= | ||||
| golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= | ||||
| golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= | ||||
| golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= | ||||
| golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= | ||||
| golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= | ||||
| golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||||
| golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||||
| golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||||
| golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6 h1:bjcUS9ztw9kFmmIxJInhon/0Is3p+EHBKNgquIzo1OI= | ||||
| golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||||
| golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU= | ||||
| golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||||
| golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||||
| golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||||
| golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9 h1:SQFwaSi55rU7vdNs9Yr0Z324VNlrF+0wMqRXT4St8ck= | ||||
| golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||||
| golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | ||||
| golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | ||||
| golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | ||||
| golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | ||||
| golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | ||||
| golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | ||||
| golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20190514135907-3a4b5fb9f71f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20190522044717-8097e1b27ff5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20190602015325-4c4f7f33c9ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20190812073006-9eafafc0a87e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3 h1:7TYNF4UdlohbFwpNH04CoPMp1cHUZgO1Ebq5r2hIjfo= | ||||
| golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20191210023423-ac6580df4449/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20200120151820-655fe14d7479 h1:LhLiKguPgZL+Tglay4GhVtfF0kb8cvOJ0dHTCBO8YNI= | ||||
| golang.org/x/sys v0.0.0-20200120151820-655fe14d7479/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20200728102440-3e129f6d46b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20200916030750-2334cc1a136f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20200922070232-aee5d888a860/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20201112073958-5cba982894dd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3 h1:kzM6+9dur93BcC2kVlYl34cHU+TYZLanmpSJHVMmL64= | ||||
| golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20201202213521-69691e467435 h1:25AvDqqB9PrNqj1FLf2/70I4W0L19qqoaFq3gjNwbKk= | ||||
| golang.org/x/sys v0.0.0-20201202213521-69691e467435/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c h1:VwygUrnw9jn88c4u8GD3rZQbqrP/tgas88tPUbBxQrk= | ||||
| golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= | ||||
| golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= | ||||
| golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= | ||||
| golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= | ||||
| golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= | ||||
| golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= | ||||
| golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= | ||||
| golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | ||||
| golang.org/x/text v0.3.4 h1:0YWbFKbhXG/wIiuHDSKpS0Iy7FSA+u45VtBMfQcFTTc= | ||||
| golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | ||||
| golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= | ||||
| golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= | ||||
| golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= | ||||
| golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= | ||||
| golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= | ||||
| golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | ||||
| golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | ||||
| golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | ||||
| golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | ||||
| golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= | ||||
| golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= | ||||
| golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= | ||||
| golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= | ||||
| golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= | ||||
| golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= | ||||
| golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= | ||||
| golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= | ||||
| golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= | ||||
| golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= | ||||
| golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= | ||||
| golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= | ||||
| golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= | ||||
| golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= | ||||
| golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= | ||||
| golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= | ||||
| golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= | ||||
| golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= | ||||
| golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= | ||||
| golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= | ||||
| golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= | ||||
| golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= | ||||
| golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= | ||||
| golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= | ||||
| golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= | ||||
| golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= | ||||
| golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= | ||||
| golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= | ||||
| golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= | ||||
| golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= | ||||
| golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= | ||||
| golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= | ||||
| golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= | ||||
| golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= | ||||
| golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| google.golang.org/api v0.0.0-20160322025152-9bf6e6e569ff/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= | ||||
| google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= | ||||
| google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= | ||||
| google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= | ||||
| google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= | ||||
| google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= | ||||
| google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= | ||||
| google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= | ||||
| google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= | ||||
| google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= | ||||
| google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= | ||||
| google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= | ||||
| google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= | ||||
| google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= | ||||
| google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= | ||||
| google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= | ||||
| google.golang.org/cloud v0.0.0-20151119220103-975617b05ea8/go.mod h1:0H1ncTHf11KCFhTc/+EFRbzSCOZx+VUbRMk55Yv5MYk= | ||||
| google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 h1:Nw54tB0rB7hY/N0NQvRW8DG4Yk3Q6T9cu9RcFQDu1tc= | ||||
| google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= | ||||
| google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= | ||||
| google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= | ||||
| google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb h1:i1Ppqkc3WQXikh8bXiwHqAN5Rv3/qDCcRk0/Otx73BY= | ||||
| google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= | ||||
| google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873 h1:nfPFGzJkUDX6uBmpN/pSw7MbOAWegH5QDQuoXFHedLg= | ||||
| google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= | ||||
| google.golang.org/genproto v0.0.0-20190522204451-c2c4e71fbf69/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= | ||||
| google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= | ||||
| google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= | ||||
| google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= | ||||
| google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= | ||||
| google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= | ||||
| google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= | ||||
| google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= | ||||
| google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= | ||||
| google.golang.org/genproto v0.0.0-20200117163144-32f20d992d24/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= | ||||
| google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= | ||||
| google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= | ||||
| google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= | ||||
| google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= | ||||
| google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= | ||||
| google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= | ||||
| google.golang.org/genproto v0.0.0-20201110150050-8816d57aaa9a h1:pOwg4OoaRYScjmR4LlLgdtnyoHYTSAVhhqe5uPdpII8= | ||||
| google.golang.org/genproto v0.0.0-20201110150050-8816d57aaa9a/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= | ||||
| google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= | ||||
| google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= | ||||
| google.golang.org/grpc v1.20.1 h1:Hz2g2wirWK7H0qIIhGIqRGTuMwTE8HEKFnDZZ7lm9NU= | ||||
| google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= | ||||
| google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= | ||||
| google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= | ||||
| google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= | ||||
| google.golang.org/grpc v1.23.1 h1:q4XQuHFC6I28BKZpo6IYyb3mNO+l7lSOxRuYTCiDfXk= | ||||
| google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= | ||||
| google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= | ||||
| google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= | ||||
| google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= | ||||
| google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= | ||||
| google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= | ||||
| google.golang.org/grpc v1.30.0 h1:M5a8xTlYTxwMn5ZFkwhRabsygDY5G8TYLyQDBxJNAxE= | ||||
| google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= | ||||
| google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= | ||||
| google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= | ||||
| google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= | ||||
| google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= | ||||
| google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= | ||||
| google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= | ||||
| google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= | ||||
| google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= | ||||
| google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= | ||||
| google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= | ||||
| google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= | ||||
| gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= | ||||
| gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20141024133853-64131543e789/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= | ||||
| gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= | ||||
| gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= | ||||
| gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= | ||||
| gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= | ||||
| gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= | ||||
| gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= | ||||
| gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= | ||||
| gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= | ||||
| gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= | ||||
| gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= | ||||
| gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= | ||||
| gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= | ||||
| gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | ||||
| gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= | ||||
| gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | ||||
| gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | ||||
| gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | ||||
| gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= | ||||
| gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | ||||
| gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | ||||
| gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= | ||||
| gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | ||||
| gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= | ||||
| gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= | ||||
| gotest.tools/v3 v3.0.2 h1:kG1BFyqVHuQoVQiR1bWGnfz/fmHvvuiSPIV7rvl360E= | ||||
| gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= | ||||
| honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= | ||||
| honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= | ||||
| honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= | ||||
| honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= | ||||
| honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= | ||||
| honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= | ||||
| k8s.io/api v0.20.1/go.mod h1:KqwcCVogGxQY3nBlRpwt+wpAMF/KjaCc7RpywacvqUo= | ||||
| k8s.io/apimachinery v0.20.1/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= | ||||
| k8s.io/apiserver v0.20.1/go.mod h1:ro5QHeQkgMS7ZGpvf4tSMx6bBOgPfE+f52KwvXfScaU= | ||||
| k8s.io/client-go v0.20.1/go.mod h1:/zcHdt1TeWSd5HoUe6elJmHSQ6uLLgp4bIJHVEuy+/Y= | ||||
| k8s.io/component-base v0.20.1/go.mod h1:guxkoJnNoh8LNrbtiQOlyp2Y2XFCZQmrcg2n/DeYNLk= | ||||
| k8s.io/cri-api v0.17.3/go.mod h1:X1sbHmuXhwaHs9xxYffLqJogVsnI+f6cPRcgPel7ywM= | ||||
| k8s.io/cri-api v0.20.1/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= | ||||
| k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= | ||||
| k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= | ||||
| k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= | ||||
| k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM= | ||||
| k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= | ||||
| k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= | ||||
| rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= | ||||
| rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= | ||||
| rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= | ||||
| sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.14/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= | ||||
| sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= | ||||
| sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= | ||||
| sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= | ||||
|   | ||||
							
								
								
									
										2
									
								
								vendor/github.com/Microsoft/hcsshim/internal/cow/cow.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/Microsoft/hcsshim/internal/cow/cow.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -80,4 +80,6 @@ type Container interface { | ||||
| 	// container to be terminated by some error condition (including calling | ||||
| 	// Close). | ||||
| 	Wait() error | ||||
| 	// Modify sends a request to modify container resources | ||||
| 	Modify(ctx context.Context, config interface{}) error | ||||
| } | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/callback.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/callback.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -106,6 +106,7 @@ func newSystemChannels() notificationChannels { | ||||
| 		hcsNotificationSystemStartCompleted, | ||||
| 		hcsNotificationSystemPauseCompleted, | ||||
| 		hcsNotificationSystemResumeCompleted, | ||||
| 		hcsNotificationSystemSaveCompleted, | ||||
| 	} { | ||||
| 		channels[notif] = make(notificationChannel, 1) | ||||
| 	} | ||||
|   | ||||
							
								
								
									
										7
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/errors.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/errors.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -312,6 +312,13 @@ func IsOperationInvalidState(err error) bool { | ||||
| 	return err == ErrVmcomputeOperationInvalidState | ||||
| } | ||||
|  | ||||
| // IsAccessIsDenied returns true when err is caused by | ||||
| // `ErrVmcomputeOperationAccessIsDenied`. | ||||
| func IsAccessIsDenied(err error) bool { | ||||
| 	err = getInnerError(err) | ||||
| 	return err == ErrVmcomputeOperationAccessIsDenied | ||||
| } | ||||
|  | ||||
| func getInnerError(err error) error { | ||||
| 	switch pe := err.(type) { | ||||
| 	case nil: | ||||
|   | ||||
							
								
								
									
										5
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/syscall.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/syscall.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,5 +0,0 @@ | ||||
| package hcs | ||||
|  | ||||
| //go:generate go run ../../mksyscall_windows.go -output zsyscall_windows.go syscall.go | ||||
|  | ||||
| //sys hcsFormatWritableLayerVhd(handle uintptr) (hr error) = computestorage.HcsFormatWritableLayerVhd | ||||
							
								
								
									
										32
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/system.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										32
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/system.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -407,6 +407,38 @@ func (computeSystem *System) Resume(ctx context.Context) (err error) { | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // Save the compute system | ||||
| func (computeSystem *System) Save(ctx context.Context, options interface{}) (err error) { | ||||
| 	operation := "hcsshim::System::Save" | ||||
|  | ||||
| 	// hcsSaveComputeSystemContext is an async peration. Start the outer span | ||||
| 	// here to measure the full save time. | ||||
| 	ctx, span := trace.StartSpan(ctx, operation) | ||||
| 	defer span.End() | ||||
| 	defer func() { oc.SetSpanStatus(span, err) }() | ||||
| 	span.AddAttributes(trace.StringAttribute("cid", computeSystem.id)) | ||||
|  | ||||
| 	saveOptions, err := json.Marshal(options) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	computeSystem.handleLock.RLock() | ||||
| 	defer computeSystem.handleLock.RUnlock() | ||||
|  | ||||
| 	if computeSystem.handle == 0 { | ||||
| 		return makeSystemError(computeSystem, operation, "", ErrAlreadyClosed, nil) | ||||
| 	} | ||||
|  | ||||
| 	result, err := vmcompute.HcsSaveComputeSystem(ctx, computeSystem.handle, string(saveOptions)) | ||||
| 	events, err := processAsyncHcsResult(ctx, err, result, computeSystem.callbackNumber, hcsNotificationSystemSaveCompleted, &timeout.SystemSave) | ||||
| 	if err != nil { | ||||
| 		return makeSystemError(computeSystem, operation, "", err, events) | ||||
| 	} | ||||
|  | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func (computeSystem *System) createProcess(ctx context.Context, operation string, c interface{}) (*Process, *vmcompute.HcsProcessInformation, error) { | ||||
| 	computeSystem.handleLock.RLock() | ||||
| 	defer computeSystem.handleLock.RUnlock() | ||||
|   | ||||
							
								
								
									
										5
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/utils.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/utils.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -7,6 +7,7 @@ import ( | ||||
|  | ||||
| 	"github.com/Microsoft/go-winio" | ||||
| 	diskutil "github.com/Microsoft/go-winio/vhd" | ||||
| 	"github.com/Microsoft/hcsshim/computestorage" | ||||
| 	"github.com/pkg/errors" | ||||
| 	"golang.org/x/sys/windows" | ||||
| ) | ||||
| @@ -36,7 +37,7 @@ func makeOpenFiles(hs []syscall.Handle) (_ []io.ReadWriteCloser, err error) { | ||||
| 	return fs, nil | ||||
| } | ||||
|  | ||||
| // creates a VHD formatted with NTFS of size `sizeGB` at the given `vhdPath`. | ||||
| // CreateNTFSVHD creates a VHD formatted with NTFS of size `sizeGB` at the given `vhdPath`. | ||||
| func CreateNTFSVHD(ctx context.Context, vhdPath string, sizeGB uint32) (err error) { | ||||
| 	if err := diskutil.CreateVhdx(vhdPath, sizeGB, 1); err != nil { | ||||
| 		return errors.Wrap(err, "failed to create VHD") | ||||
| @@ -53,7 +54,7 @@ func CreateNTFSVHD(ctx context.Context, vhdPath string, sizeGB uint32) (err erro | ||||
| 		} | ||||
| 	}() | ||||
|  | ||||
| 	if err := hcsFormatWritableLayerVhd(uintptr(vhd)); err != nil { | ||||
| 	if err := computestorage.FormatWritableLayerVhd(ctx, windows.Handle(vhd)); err != nil { | ||||
| 		return errors.Wrap(err, "failed to format VHD") | ||||
| 	} | ||||
|  | ||||
|   | ||||
							
								
								
									
										54
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/zsyscall_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										54
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/zsyscall_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,54 +0,0 @@ | ||||
| // Code generated mksyscall_windows.exe DO NOT EDIT | ||||
|  | ||||
| package hcs | ||||
|  | ||||
| import ( | ||||
| 	"syscall" | ||||
| 	"unsafe" | ||||
|  | ||||
| 	"golang.org/x/sys/windows" | ||||
| ) | ||||
|  | ||||
| var _ unsafe.Pointer | ||||
|  | ||||
| // Do the interface allocations only once for common | ||||
| // Errno values. | ||||
| const ( | ||||
| 	errnoERROR_IO_PENDING = 997 | ||||
| ) | ||||
|  | ||||
| var ( | ||||
| 	errERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING) | ||||
| ) | ||||
|  | ||||
| // errnoErr returns common boxed Errno values, to prevent | ||||
| // allocations at runtime. | ||||
| func errnoErr(e syscall.Errno) error { | ||||
| 	switch e { | ||||
| 	case 0: | ||||
| 		return nil | ||||
| 	case errnoERROR_IO_PENDING: | ||||
| 		return errERROR_IO_PENDING | ||||
| 	} | ||||
| 	// TODO: add more here, after collecting data on the common | ||||
| 	// error values see on Windows. (perhaps when running | ||||
| 	// all.bat?) | ||||
| 	return e | ||||
| } | ||||
|  | ||||
| var ( | ||||
| 	modcomputestorage = windows.NewLazySystemDLL("computestorage.dll") | ||||
|  | ||||
| 	procHcsFormatWritableLayerVhd = modcomputestorage.NewProc("HcsFormatWritableLayerVhd") | ||||
| ) | ||||
|  | ||||
| func hcsFormatWritableLayerVhd(handle uintptr) (hr error) { | ||||
| 	r0, _, _ := syscall.Syscall(procHcsFormatWritableLayerVhd.Addr(), 1, uintptr(handle), 0, 0) | ||||
| 	if int32(r0) < 0 { | ||||
| 		if r0&0x1fff0000 == 0x00070000 { | ||||
| 			r0 &= 0xffff | ||||
| 		} | ||||
| 		hr = syscall.Errno(r0) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
							
								
								
									
										7
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hns/namespace.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hns/namespace.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -27,9 +27,10 @@ type namespaceResourceRequest struct { | ||||
| } | ||||
|  | ||||
| type Namespace struct { | ||||
| 	ID           string | ||||
| 	IsDefault    bool                `json:",omitempty"` | ||||
| 	ResourceList []NamespaceResource `json:",omitempty"` | ||||
| 	ID            string | ||||
| 	IsDefault     bool                `json:",omitempty"` | ||||
| 	ResourceList  []NamespaceResource `json:",omitempty"` | ||||
| 	CompartmentId uint32              `json:",omitempty"` | ||||
| } | ||||
|  | ||||
| func issueNamespaceRequest(id *string, method, subpath string, request interface{}) (*Namespace, error) { | ||||
|   | ||||
							
								
								
									
										4
									
								
								vendor/github.com/Microsoft/hcsshim/internal/safefile/safeopen.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/Microsoft/hcsshim/internal/safefile/safeopen.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -76,7 +76,7 @@ func openRelativeInternal(path string, root *os.File, accessMask uint32, shareFl | ||||
| 	} | ||||
|  | ||||
| 	oa.Length = unsafe.Sizeof(oa) | ||||
| 	oa.ObjectName = uintptr(unsafe.Pointer(pathUnicode)) | ||||
| 	oa.ObjectName = pathUnicode | ||||
| 	oa.RootDirectory = uintptr(root.Fd()) | ||||
| 	oa.Attributes = winapi.OBJ_DONT_REPARSE | ||||
| 	status := winapi.NtCreateFile( | ||||
| @@ -177,7 +177,7 @@ func LinkRelative(oldname string, oldroot *os.File, newname string, newroot *os. | ||||
| 	linkinfo := (*winapi.FileLinkInformation)(unsafe.Pointer(linkinfoBuffer)) | ||||
| 	linkinfo.RootDirectory = parent.Fd() | ||||
| 	linkinfo.FileNameLength = uint32(len(newbase16) * 2) | ||||
| 	copy((*[32768]uint16)(unsafe.Pointer(&linkinfo.FileName[0]))[:], newbase16) | ||||
| 	copy(winapi.Uint16BufferToSlice(&linkinfo.FileName[0], len(newbase16)), newbase16) | ||||
|  | ||||
| 	var iosb winapi.IOStatusBlock | ||||
| 	status := winapi.NtSetInformationFile( | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema1/schema1.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema1/schema1.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -218,6 +218,7 @@ type GuestDefinedCapabilities struct { | ||||
| 	SignalProcessSupported        bool `json:",omitempty"` | ||||
| 	DumpStacksSupported           bool `json:",omitempty"` | ||||
| 	DeleteContainerStateSupported bool `json:",omitempty"` | ||||
| 	UpdateContainerSupported      bool `json:",omitempty"` | ||||
| } | ||||
|  | ||||
| // GuestConnectionInfo is the structure of an iterm return by a GuestConnection call on a utility VM | ||||
|   | ||||
							
								
								
									
										15
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/cpu_group.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/cpu_group.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| /* | ||||
|  * HCS API | ||||
|  * | ||||
|  * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) | ||||
|  * | ||||
|  * API version: 2.4 | ||||
|  * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) | ||||
|  */ | ||||
|  | ||||
| package hcsschema | ||||
|  | ||||
| // CPU groups allow Hyper-V administrators to better manage and allocate the host's CPU resources across guest virtual machines | ||||
| type CpuGroup struct { | ||||
| 	Id string `json:"Id,omitempty"` | ||||
| } | ||||
							
								
								
									
										15
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/cpu_group_affinity.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/cpu_group_affinity.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| /* | ||||
|  * HCS API | ||||
|  * | ||||
|  * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) | ||||
|  * | ||||
|  * API version: 2.4 | ||||
|  * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) | ||||
|  */ | ||||
|  | ||||
| package hcsschema | ||||
|  | ||||
| type CpuGroupAffinity struct { | ||||
| 	LogicalProcessorCount int32   `json:"LogicalProcessorCount,omitempty"` | ||||
| 	LogicalProcessors     []int32 `json:"LogicalProcessors,omitempty"` | ||||
| } | ||||
							
								
								
									
										18
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/cpu_group_config.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/cpu_group_config.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| /* | ||||
|  * HCS API | ||||
|  * | ||||
|  * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) | ||||
|  * | ||||
|  * API version: 2.4 | ||||
|  * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) | ||||
|  */ | ||||
|  | ||||
| package hcsschema | ||||
|  | ||||
| type CpuGroupConfig struct { | ||||
| 	GroupId         string             `json:"GroupId,omitempty"` | ||||
| 	Affinity        *CpuGroupAffinity  `json:"Affinity,omitempty"` | ||||
| 	GroupProperties []CpuGroupProperty `json:"GroupProperties,omitempty"` | ||||
| 	// Hypervisor CPU group IDs exposed to clients | ||||
| 	HypervisorGroupId int32 `json:"HypervisorGroupId,omitempty"` | ||||
| } | ||||
							
								
								
									
										15
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/cpu_group_configurations.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/cpu_group_configurations.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| /* | ||||
|  * HCS API | ||||
|  * | ||||
|  * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) | ||||
|  * | ||||
|  * API version: 2.4 | ||||
|  * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) | ||||
|  */ | ||||
|  | ||||
| package hcsschema | ||||
|  | ||||
| // Structure used to return cpu groups for a Service property query | ||||
| type CpuGroupConfigurations struct { | ||||
| 	CpuGroups []CpuGroupConfig `json:"CpuGroups,omitempty"` | ||||
| } | ||||
							
								
								
									
										18
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/cpu_group_operations.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/cpu_group_operations.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| /* | ||||
|  * HCS API | ||||
|  * | ||||
|  * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) | ||||
|  * | ||||
|  * API version: 2.4 | ||||
|  * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) | ||||
|  */ | ||||
|  | ||||
| package hcsschema | ||||
|  | ||||
| type CPUGroupOperation string | ||||
|  | ||||
| const ( | ||||
| 	CreateGroup CPUGroupOperation = "CreateGroup" | ||||
| 	DeleteGroup CPUGroupOperation = "DeleteGroup" | ||||
| 	SetProperty CPUGroupOperation = "SetProperty" | ||||
| ) | ||||
							
								
								
									
										15
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/cpu_group_property.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/cpu_group_property.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| /* | ||||
|  * HCS API | ||||
|  * | ||||
|  * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) | ||||
|  * | ||||
|  * API version: 2.4 | ||||
|  * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) | ||||
|  */ | ||||
|  | ||||
| package hcsschema | ||||
|  | ||||
| type CpuGroupProperty struct { | ||||
| 	PropertyCode  uint32 `json:"PropertyCode,omitempty"` | ||||
| 	PropertyValue uint32 `json:"PropertyValue,omitempty"` | ||||
| } | ||||
							
								
								
									
										17
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/create_group_operation.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/create_group_operation.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,17 @@ | ||||
| /* | ||||
|  * HCS API | ||||
|  * | ||||
|  * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) | ||||
|  * | ||||
|  * API version: 2.4 | ||||
|  * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) | ||||
|  */ | ||||
|  | ||||
| package hcsschema | ||||
|  | ||||
| // Create group operation settings | ||||
| type CreateGroupOperation struct { | ||||
| 	GroupId               string   `json:"GroupId,omitempty"` | ||||
| 	LogicalProcessorCount uint32   `json:"LogicalProcessorCount,omitempty"` | ||||
| 	LogicalProcessors     []uint32 `json:"LogicalProcessors,omitempty"` | ||||
| } | ||||
							
								
								
									
										15
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/delete_group_operation.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/delete_group_operation.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| /* | ||||
|  * HCS API | ||||
|  * | ||||
|  * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) | ||||
|  * | ||||
|  * API version: 2.4 | ||||
|  * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) | ||||
|  */ | ||||
|  | ||||
| package hcsschema | ||||
|  | ||||
| // Delete group operation settings | ||||
| type DeleteGroupOperation struct { | ||||
| 	GroupId string `json:"GroupId,omitempty"` | ||||
| } | ||||
							
								
								
									
										16
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/host_processor_modify_request.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/host_processor_modify_request.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | ||||
| /* | ||||
|  * HCS API | ||||
|  * | ||||
|  * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) | ||||
|  * | ||||
|  * API version: 2.4 | ||||
|  * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) | ||||
|  */ | ||||
|  | ||||
| package hcsschema | ||||
|  | ||||
| // Structure used to request a service processor modification | ||||
| type HostProcessorModificationRequest struct { | ||||
| 	Operation        CPUGroupOperation `json:"Operation,omitempty"` | ||||
| 	OperationDetails interface{}       `json:"OperationDetails,omitempty"` | ||||
| } | ||||
							
								
								
									
										6
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/hv_socket_service_config.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/hv_socket_service_config.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -19,4 +19,10 @@ type HvSocketServiceConfig struct { | ||||
|  | ||||
| 	//  If true, HvSocket will process wildcard binds for this service/system combination.  Wildcard binds are secured in the registry at  SOFTWARE/Microsoft/Windows NT/CurrentVersion/Virtualization/HvSocket/WildcardDescriptors | ||||
| 	AllowWildcardBinds bool `json:"AllowWildcardBinds,omitempty"` | ||||
|  | ||||
| 	// Disabled controls whether the HvSocket service is accepting connection requests. | ||||
| 	// This set to true will make the service refuse all incoming connections as well as cancel | ||||
| 	// any connections already established. The service itself will still be active however | ||||
| 	// and can be re-enabled at a future time. | ||||
| 	Disabled bool `json:"Disabled,omitempty"` | ||||
| } | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/property_type.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/property_type.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -22,4 +22,5 @@ const ( | ||||
| 	PTGuestConnection             PropertyType = "GuestConnection" | ||||
| 	PTICHeartbeatStatus           PropertyType = "ICHeartbeatStatus" | ||||
| 	PTProcessorTopology           PropertyType = "ProcessorTopology" | ||||
| 	PTCPUGroup                    PropertyType = "CpuGroup" | ||||
| ) | ||||
|   | ||||
							
								
								
									
										22
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/vm_processor_limits.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/vm_processor_limits.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | ||||
| /* | ||||
|  * HCS API | ||||
|  * | ||||
|  * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) | ||||
|  * | ||||
|  * API version: 2.4 | ||||
|  * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) | ||||
|  */ | ||||
|  | ||||
| package hcsschema | ||||
|  | ||||
| // ProcessorLimits is used when modifying processor scheduling limits of a virtual machine. | ||||
| type ProcessorLimits struct { | ||||
| 	// Maximum amount of host CPU resources that the virtual machine can use. | ||||
| 	Limit uint64 `json:"Limit,omitempty"` | ||||
| 	// Value describing the relative priority of this virtual machine compared to other virtual machines. | ||||
| 	Weight uint64 `json:"Weight,omitempty"` | ||||
| 	// Minimum amount of host CPU resources that the virtual machine is guaranteed. | ||||
| 	Reservation uint64 `json:"Reservation,omitempty"` | ||||
| 	// Provides the target maximum CPU frequency, in MHz, for a virtual machine. | ||||
| 	MaximumFrequencyMHz uint32 `json:"MaximumFrequencyMHz,omitempty"` | ||||
| } | ||||
							
								
								
									
										4
									
								
								vendor/github.com/Microsoft/hcsshim/internal/timeout/timeout.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/Microsoft/hcsshim/internal/timeout/timeout.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -29,6 +29,9 @@ var ( | ||||
| 	// SystemResume is the timeout for resuming a compute system | ||||
| 	SystemResume time.Duration = defaultTimeout | ||||
|  | ||||
| 	// SystemSave is the timeout for saving a compute system | ||||
| 	SystemSave time.Duration = defaultTimeout | ||||
|  | ||||
| 	// SyscallWatcher is the timeout before warning of a potential stuck platform syscall. | ||||
| 	SyscallWatcher time.Duration = defaultTimeout | ||||
|  | ||||
| @@ -51,6 +54,7 @@ func init() { | ||||
| 	SystemStart = durationFromEnvironment("HCSSHIM_TIMEOUT_SYSTEMSTART", SystemStart) | ||||
| 	SystemPause = durationFromEnvironment("HCSSHIM_TIMEOUT_SYSTEMPAUSE", SystemPause) | ||||
| 	SystemResume = durationFromEnvironment("HCSSHIM_TIMEOUT_SYSTEMRESUME", SystemResume) | ||||
| 	SystemSave = durationFromEnvironment("HCSSHIM_TIMEOUT_SYSTEMSAVE", SystemSave) | ||||
| 	SyscallWatcher = durationFromEnvironment("HCSSHIM_TIMEOUT_SYSCALLWATCHER", SyscallWatcher) | ||||
| 	Tar2VHD = durationFromEnvironment("HCSSHIM_TIMEOUT_TAR2VHD", Tar2VHD) | ||||
| 	ExternalCommandToStart = durationFromEnvironment("HCSSHIM_TIMEOUT_EXTERNALCOMMANDSTART", ExternalCommandToStart) | ||||
|   | ||||
							
								
								
									
										23
									
								
								vendor/github.com/Microsoft/hcsshim/internal/vmcompute/vmcompute.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										23
									
								
								vendor/github.com/Microsoft/hcsshim/internal/vmcompute/vmcompute.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -29,6 +29,7 @@ import ( | ||||
| //sys hcsModifyServiceSettings(settings string, result **uint16) (hr error) = vmcompute.HcsModifyServiceSettings? | ||||
| //sys hcsRegisterComputeSystemCallback(computeSystem HcsSystem, callback uintptr, context uintptr, callbackHandle *HcsCallback) (hr error) = vmcompute.HcsRegisterComputeSystemCallback? | ||||
| //sys hcsUnregisterComputeSystemCallback(callbackHandle HcsCallback) (hr error) = vmcompute.HcsUnregisterComputeSystemCallback? | ||||
| //sys hcsSaveComputeSystem(computeSystem HcsSystem, options string, result **uint16) (hr error) = vmcompute.HcsSaveComputeSystem? | ||||
|  | ||||
| //sys hcsCreateProcess(computeSystem HcsSystem, processParameters string, processInformation *HcsProcessInformation, process *HcsProcess, result **uint16) (hr error) = vmcompute.HcsCreateProcess? | ||||
| //sys hcsOpenProcess(computeSystem HcsSystem, pid uint32, process *HcsProcess, result **uint16) (hr error) = vmcompute.HcsOpenProcess? | ||||
| @@ -585,3 +586,25 @@ func HcsUnregisterProcessCallback(ctx gcontext.Context, callbackHandle HcsCallba | ||||
| 		return hcsUnregisterProcessCallback(callbackHandle) | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| func HcsSaveComputeSystem(ctx gcontext.Context, computeSystem HcsSystem, options string) (result string, hr error) { | ||||
| 	ctx, span := trace.StartSpan(ctx, "HcsSaveComputeSystem") | ||||
| 	defer span.End() | ||||
| 	defer func() { | ||||
| 		if result != "" { | ||||
| 			span.AddAttributes(trace.StringAttribute("result", result)) | ||||
| 		} | ||||
| 		if hr != errVmcomputeOperationPending { | ||||
| 			oc.SetSpanStatus(span, hr) | ||||
| 		} | ||||
| 	}() | ||||
|  | ||||
| 	return result, execute(ctx, timeout.SyscallWatcher, func() error { | ||||
| 		var resultp *uint16 | ||||
| 		err := hcsSaveComputeSystem(computeSystem, options, &resultp) | ||||
| 		if resultp != nil { | ||||
| 			result = interop.ConvertAndFreeCoTaskMemString(resultp) | ||||
| 		} | ||||
| 		return err | ||||
| 	}) | ||||
| } | ||||
|   | ||||
							
								
								
									
										24
									
								
								vendor/github.com/Microsoft/hcsshim/internal/vmcompute/zsyscall_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										24
									
								
								vendor/github.com/Microsoft/hcsshim/internal/vmcompute/zsyscall_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -53,6 +53,7 @@ var ( | ||||
| 	procHcsModifyServiceSettings           = modvmcompute.NewProc("HcsModifyServiceSettings") | ||||
| 	procHcsRegisterComputeSystemCallback   = modvmcompute.NewProc("HcsRegisterComputeSystemCallback") | ||||
| 	procHcsUnregisterComputeSystemCallback = modvmcompute.NewProc("HcsUnregisterComputeSystemCallback") | ||||
| 	procHcsSaveComputeSystem               = modvmcompute.NewProc("HcsSaveComputeSystem") | ||||
| 	procHcsCreateProcess                   = modvmcompute.NewProc("HcsCreateProcess") | ||||
| 	procHcsOpenProcess                     = modvmcompute.NewProc("HcsOpenProcess") | ||||
| 	procHcsCloseProcess                    = modvmcompute.NewProc("HcsCloseProcess") | ||||
| @@ -366,6 +367,29 @@ func hcsUnregisterComputeSystemCallback(callbackHandle HcsCallback) (hr error) { | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func hcsSaveComputeSystem(computeSystem HcsSystem, options string, result **uint16) (hr error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, hr = syscall.UTF16PtrFromString(options) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	return _hcsSaveComputeSystem(computeSystem, _p0, result) | ||||
| } | ||||
|  | ||||
| func _hcsSaveComputeSystem(computeSystem HcsSystem, options *uint16, result **uint16) (hr error) { | ||||
| 	if hr = procHcsSaveComputeSystem.Find(); hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	r0, _, _ := syscall.Syscall(procHcsSaveComputeSystem.Addr(), 3, uintptr(computeSystem), uintptr(unsafe.Pointer(options)), uintptr(unsafe.Pointer(result))) | ||||
| 	if int32(r0) < 0 { | ||||
| 		if r0&0x1fff0000 == 0x00070000 { | ||||
| 			r0 &= 0xffff | ||||
| 		} | ||||
| 		hr = syscall.Errno(r0) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func hcsCreateProcess(computeSystem HcsSystem, processParameters string, processInformation *HcsProcessInformation, process *HcsProcess, result **uint16) (hr error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, hr = syscall.UTF16PtrFromString(processParameters) | ||||
|   | ||||
							
								
								
									
										51
									
								
								vendor/github.com/Microsoft/hcsshim/internal/winapi/filesystem.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										51
									
								
								vendor/github.com/Microsoft/hcsshim/internal/winapi/filesystem.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -31,6 +31,43 @@ const ( | ||||
| 	STATUS_NO_MORE_ENTRIES = 0x8000001a | ||||
| ) | ||||
|  | ||||
| // Select entries from FILE_INFO_BY_HANDLE_CLASS. | ||||
| // | ||||
| // C declaration: | ||||
| //   typedef enum _FILE_INFO_BY_HANDLE_CLASS { | ||||
| //       FileBasicInfo, | ||||
| //       FileStandardInfo, | ||||
| //       FileNameInfo, | ||||
| //       FileRenameInfo, | ||||
| //       FileDispositionInfo, | ||||
| //       FileAllocationInfo, | ||||
| //       FileEndOfFileInfo, | ||||
| //       FileStreamInfo, | ||||
| //       FileCompressionInfo, | ||||
| //       FileAttributeTagInfo, | ||||
| //       FileIdBothDirectoryInfo, | ||||
| //       FileIdBothDirectoryRestartInfo, | ||||
| //       FileIoPriorityHintInfo, | ||||
| //       FileRemoteProtocolInfo, | ||||
| //       FileFullDirectoryInfo, | ||||
| //       FileFullDirectoryRestartInfo, | ||||
| //       FileStorageInfo, | ||||
| //       FileAlignmentInfo, | ||||
| //       FileIdInfo, | ||||
| //       FileIdExtdDirectoryInfo, | ||||
| //       FileIdExtdDirectoryRestartInfo, | ||||
| //       FileDispositionInfoEx, | ||||
| //       FileRenameInfoEx, | ||||
| //       FileCaseSensitiveInfo, | ||||
| //       FileNormalizedNameInfo, | ||||
| //       MaximumFileInfoByHandleClass | ||||
| //   } FILE_INFO_BY_HANDLE_CLASS, *PFILE_INFO_BY_HANDLE_CLASS; | ||||
| // | ||||
| // Documentation: https://docs.microsoft.com/en-us/windows/win32/api/minwinbase/ne-minwinbase-file_info_by_handle_class | ||||
| const ( | ||||
| 	FileIdInfo = 18 | ||||
| ) | ||||
|  | ||||
| type FileDispositionInformationEx struct { | ||||
| 	Flags uintptr | ||||
| } | ||||
| @@ -42,7 +79,7 @@ type IOStatusBlock struct { | ||||
| type ObjectAttributes struct { | ||||
| 	Length             uintptr | ||||
| 	RootDirectory      uintptr | ||||
| 	ObjectName         uintptr | ||||
| 	ObjectName         *UnicodeString | ||||
| 	Attributes         uintptr | ||||
| 	SecurityDescriptor uintptr | ||||
| 	SecurityQoS        uintptr | ||||
| @@ -59,3 +96,15 @@ type FileLinkInformation struct { | ||||
| 	FileNameLength  uint32 | ||||
| 	FileName        [1]uint16 | ||||
| } | ||||
|  | ||||
| // C declaration: | ||||
| //   typedef struct _FILE_ID_INFO { | ||||
| //       ULONGLONG   VolumeSerialNumber; | ||||
| //       FILE_ID_128 FileId; | ||||
| //   } FILE_ID_INFO, *PFILE_ID_INFO; | ||||
| // | ||||
| // Documentation: https://docs.microsoft.com/en-us/windows/win32/api/winbase/ns-winbase-file_id_info | ||||
| type FILE_ID_INFO struct { | ||||
| 	VolumeSerialNumber uint64 | ||||
| 	FileID             [16]byte | ||||
| } | ||||
|   | ||||
							
								
								
									
										3
									
								
								vendor/github.com/Microsoft/hcsshim/internal/winapi/iocp.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								vendor/github.com/Microsoft/hcsshim/internal/winapi/iocp.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| package winapi | ||||
|  | ||||
| //sys GetQueuedCompletionStatus(cphandle windows.Handle, qty *uint32, key *uintptr, overlapped **windows.Overlapped, timeout uint32) (err error) | ||||
							
								
								
									
										121
									
								
								vendor/github.com/Microsoft/hcsshim/internal/winapi/jobobject.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										121
									
								
								vendor/github.com/Microsoft/hcsshim/internal/winapi/jobobject.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,32 +1,41 @@ | ||||
| package winapi | ||||
|  | ||||
| import ( | ||||
| 	"unsafe" | ||||
|  | ||||
| 	"golang.org/x/sys/windows" | ||||
| ) | ||||
|  | ||||
| // Messages that can be received from an assigned io completion port. | ||||
| // https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-jobobject_associate_completion_port | ||||
| const ( | ||||
| 	JOB_OBJECT_MSG_END_OF_JOB_TIME       = 1 | ||||
| 	JOB_OBJECT_MSG_END_OF_PROCESS_TIME   = 2 | ||||
| 	JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT  = 3 | ||||
| 	JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO   = 4 | ||||
| 	JOB_OBJECT_MSG_NEW_PROCESS           = 6 | ||||
| 	JOB_OBJECT_MSG_EXIT_PROCESS          = 7 | ||||
| 	JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS = 8 | ||||
| 	JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT  = 9 | ||||
| 	JOB_OBJECT_MSG_JOB_MEMORY_LIMIT      = 10 | ||||
| 	JOB_OBJECT_MSG_NOTIFICATION_LIMIT    = 11 | ||||
| 	JOB_OBJECT_MSG_END_OF_JOB_TIME       uint32 = 1 | ||||
| 	JOB_OBJECT_MSG_END_OF_PROCESS_TIME   uint32 = 2 | ||||
| 	JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT  uint32 = 3 | ||||
| 	JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO   uint32 = 4 | ||||
| 	JOB_OBJECT_MSG_NEW_PROCESS           uint32 = 6 | ||||
| 	JOB_OBJECT_MSG_EXIT_PROCESS          uint32 = 7 | ||||
| 	JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS uint32 = 8 | ||||
| 	JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT  uint32 = 9 | ||||
| 	JOB_OBJECT_MSG_JOB_MEMORY_LIMIT      uint32 = 10 | ||||
| 	JOB_OBJECT_MSG_NOTIFICATION_LIMIT    uint32 = 11 | ||||
| ) | ||||
|  | ||||
| // Access rights for creating or opening job objects. | ||||
| // | ||||
| // https://docs.microsoft.com/en-us/windows/win32/procthread/job-object-security-and-access-rights | ||||
| const JOB_OBJECT_ALL_ACCESS = 0x1F001F | ||||
|  | ||||
| // IO limit flags | ||||
| // | ||||
| // https://docs.microsoft.com/en-us/windows/win32/api/jobapi2/ns-jobapi2-jobobject_io_rate_control_information | ||||
| const JOB_OBJECT_IO_RATE_CONTROL_ENABLE = 0x1 | ||||
|  | ||||
| const JOBOBJECT_IO_ATTRIBUTION_CONTROL_ENABLE uint32 = 0x1 | ||||
|  | ||||
| // https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-jobobject_cpu_rate_control_information | ||||
| const ( | ||||
| 	JOB_OBJECT_CPU_RATE_CONTROL_ENABLE = 1 << iota | ||||
| 	JOB_OBJECT_CPU_RATE_CONTROL_ENABLE uint32 = 1 << iota | ||||
| 	JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED | ||||
| 	JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP | ||||
| 	JOB_OBJECT_CPU_RATE_CONTROL_NOTIFY | ||||
| @@ -41,7 +50,9 @@ const ( | ||||
| 	JobObjectBasicProcessIdList              uint32 = 3 | ||||
| 	JobObjectBasicAndIoAccountingInformation uint32 = 8 | ||||
| 	JobObjectLimitViolationInformation       uint32 = 13 | ||||
| 	JobObjectMemoryUsageInformation          uint32 = 28 | ||||
| 	JobObjectNotificationLimitInformation2   uint32 = 33 | ||||
| 	JobObjectIoAttribution                   uint32 = 42 | ||||
| ) | ||||
|  | ||||
| // https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-jobobject_basic_limit_information | ||||
| @@ -60,7 +71,7 @@ type JOBOBJECT_BASIC_LIMIT_INFORMATION struct { | ||||
| // https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-jobobject_cpu_rate_control_information | ||||
| type JOBOBJECT_CPU_RATE_CONTROL_INFORMATION struct { | ||||
| 	ControlFlags uint32 | ||||
| 	Rate         uint32 | ||||
| 	Value        uint32 | ||||
| } | ||||
|  | ||||
| // https://docs.microsoft.com/en-us/windows/win32/api/jobapi2/ns-jobapi2-jobobject_io_rate_control_information | ||||
| @@ -80,9 +91,68 @@ type JOBOBJECT_BASIC_PROCESS_ID_LIST struct { | ||||
| 	ProcessIdList             [1]uintptr | ||||
| } | ||||
|  | ||||
| // AllPids returns all the process Ids in the job object. | ||||
| func (p *JOBOBJECT_BASIC_PROCESS_ID_LIST) AllPids() []uintptr { | ||||
| 	return (*[(1 << 27) - 1]uintptr)(unsafe.Pointer(&p.ProcessIdList[0]))[:p.NumberOfProcessIdsInList] | ||||
| } | ||||
|  | ||||
| // https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-jobobject_basic_accounting_information | ||||
| type JOBOBJECT_BASIC_ACCOUNTING_INFORMATION struct { | ||||
| 	TotalUserTime             int64 | ||||
| 	TotalKernelTime           int64 | ||||
| 	ThisPeriodTotalUserTime   int64 | ||||
| 	ThisPeriodTotalKernelTime int64 | ||||
| 	TotalPageFaultCount       uint32 | ||||
| 	TotalProcesses            uint32 | ||||
| 	ActiveProcesses           uint32 | ||||
| 	TotalTerminateProcesses   uint32 | ||||
| } | ||||
|  | ||||
| //https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-jobobject_basic_and_io_accounting_information | ||||
| type JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION struct { | ||||
| 	BasicInfo JOBOBJECT_BASIC_ACCOUNTING_INFORMATION | ||||
| 	IoInfo    windows.IO_COUNTERS | ||||
| } | ||||
|  | ||||
| // typedef struct _JOBOBJECT_MEMORY_USAGE_INFORMATION { | ||||
| //     ULONG64 JobMemory; | ||||
| //     ULONG64 PeakJobMemoryUsed; | ||||
| // } JOBOBJECT_MEMORY_USAGE_INFORMATION, *PJOBOBJECT_MEMORY_USAGE_INFORMATION; | ||||
| // | ||||
| type JOBOBJECT_MEMORY_USAGE_INFORMATION struct { | ||||
| 	JobMemory         uint64 | ||||
| 	PeakJobMemoryUsed uint64 | ||||
| } | ||||
|  | ||||
| // typedef struct _JOBOBJECT_IO_ATTRIBUTION_STATS { | ||||
| //     ULONG_PTR IoCount; | ||||
| //     ULONGLONG TotalNonOverlappedQueueTime; | ||||
| //     ULONGLONG TotalNonOverlappedServiceTime; | ||||
| //     ULONGLONG TotalSize; | ||||
| // } JOBOBJECT_IO_ATTRIBUTION_STATS, *PJOBOBJECT_IO_ATTRIBUTION_STATS; | ||||
| // | ||||
| type JOBOBJECT_IO_ATTRIBUTION_STATS struct { | ||||
| 	IoCount                       uintptr | ||||
| 	TotalNonOverlappedQueueTime   uint64 | ||||
| 	TotalNonOverlappedServiceTime uint64 | ||||
| 	TotalSize                     uint64 | ||||
| } | ||||
|  | ||||
| // typedef struct _JOBOBJECT_IO_ATTRIBUTION_INFORMATION { | ||||
| //     ULONG ControlFlags; | ||||
| //     JOBOBJECT_IO_ATTRIBUTION_STATS ReadStats; | ||||
| //     JOBOBJECT_IO_ATTRIBUTION_STATS WriteStats; | ||||
| // } JOBOBJECT_IO_ATTRIBUTION_INFORMATION, *PJOBOBJECT_IO_ATTRIBUTION_INFORMATION; | ||||
| // | ||||
| type JOBOBJECT_IO_ATTRIBUTION_INFORMATION struct { | ||||
| 	ControlFlags uint32 | ||||
| 	ReadStats    JOBOBJECT_IO_ATTRIBUTION_STATS | ||||
| 	WriteStats   JOBOBJECT_IO_ATTRIBUTION_STATS | ||||
| } | ||||
|  | ||||
| // https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-jobobject_associate_completion_port | ||||
| type JOBOBJECT_ASSOCIATE_COMPLETION_PORT struct { | ||||
| 	CompletionKey  uintptr | ||||
| 	CompletionKey  windows.Handle | ||||
| 	CompletionPort windows.Handle | ||||
| } | ||||
|  | ||||
| @@ -118,3 +188,28 @@ type JOBOBJECT_ASSOCIATE_COMPLETION_PORT struct { | ||||
| // ); | ||||
| // | ||||
| //sys SetIoRateControlInformationJobObject(jobHandle windows.Handle, ioRateControlInfo *JOBOBJECT_IO_RATE_CONTROL_INFORMATION) (ret uint32, err error) = kernel32.SetIoRateControlInformationJobObject | ||||
|  | ||||
| // DWORD QueryIoRateControlInformationJobObject( | ||||
| // 		HANDLE                                hJob, | ||||
| // 		PCWSTR                                VolumeName, | ||||
| //		JOBOBJECT_IO_RATE_CONTROL_INFORMATION **InfoBlocks, | ||||
| // 		ULONG                                 *InfoBlockCount | ||||
| // ); | ||||
| //sys QueryIoRateControlInformationJobObject(jobHandle windows.Handle, volumeName *uint16, ioRateControlInfo **JOBOBJECT_IO_RATE_CONTROL_INFORMATION, infoBlockCount *uint32) (ret uint32, err error) = kernel32.QueryIoRateControlInformationJobObject | ||||
|  | ||||
| // NTSTATUS | ||||
| // NtOpenJobObject ( | ||||
| //     _Out_ PHANDLE JobHandle, | ||||
| //     _In_ ACCESS_MASK DesiredAccess, | ||||
| //     _In_ POBJECT_ATTRIBUTES ObjectAttributes | ||||
| // ); | ||||
| //sys NtOpenJobObject(jobHandle *windows.Handle, desiredAccess uint32, objAttributes *ObjectAttributes) (status uint32) = ntdll.NtOpenJobObject | ||||
|  | ||||
| // NTSTATUS | ||||
| // NTAPI | ||||
| // NtCreateJobObject ( | ||||
| //     _Out_ PHANDLE JobHandle, | ||||
| //     _In_ ACCESS_MASK DesiredAccess, | ||||
| //     _In_opt_ POBJECT_ATTRIBUTES ObjectAttributes | ||||
| // ); | ||||
| //sys NtCreateJobObject(jobHandle *windows.Handle, desiredAccess uint32, objAttributes *ObjectAttributes) (status uint32) = ntdll.NtCreateJobObject | ||||
|   | ||||
							
								
								
									
										3
									
								
								vendor/github.com/Microsoft/hcsshim/internal/winapi/net.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								vendor/github.com/Microsoft/hcsshim/internal/winapi/net.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| package winapi | ||||
|  | ||||
| //sys SetJobCompartmentId(handle windows.Handle, compartmentId uint32) (win32Err error) = iphlpapi.SetJobCompartmentId | ||||
							
								
								
									
										39
									
								
								vendor/github.com/Microsoft/hcsshim/internal/winapi/utils.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										39
									
								
								vendor/github.com/Microsoft/hcsshim/internal/winapi/utils.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -2,11 +2,24 @@ package winapi | ||||
|  | ||||
| import ( | ||||
| 	"errors" | ||||
| 	"reflect" | ||||
| 	"syscall" | ||||
| 	"unicode/utf16" | ||||
| 	"unsafe" | ||||
|  | ||||
| 	"golang.org/x/sys/windows" | ||||
| ) | ||||
|  | ||||
| // Uint16BufferToSlice wraps a uint16 pointer-and-length into a slice | ||||
| // for easier interop with Go APIs | ||||
| func Uint16BufferToSlice(buffer *uint16, bufferLength int) (result []uint16) { | ||||
| 	hdr := (*reflect.SliceHeader)(unsafe.Pointer(&result)) | ||||
| 	hdr.Data = uintptr(unsafe.Pointer(buffer)) | ||||
| 	hdr.Cap = bufferLength | ||||
| 	hdr.Len = bufferLength | ||||
|  | ||||
| 	return | ||||
| } | ||||
|  | ||||
| type UnicodeString struct { | ||||
| 	Length        uint16 | ||||
| 	MaximumLength uint16 | ||||
| @@ -15,28 +28,30 @@ type UnicodeString struct { | ||||
|  | ||||
| //String converts a UnicodeString to a golang string | ||||
| func (uni UnicodeString) String() string { | ||||
| 	p := (*[0xffff]uint16)(unsafe.Pointer(uni.Buffer)) | ||||
|  | ||||
| 	// UnicodeString is not guaranteed to be null terminated, therefore | ||||
| 	// use the UnicodeString's Length field | ||||
| 	lengthInChars := uni.Length / 2 | ||||
| 	return syscall.UTF16ToString(p[:lengthInChars]) | ||||
| 	return syscall.UTF16ToString(Uint16BufferToSlice(uni.Buffer, int(uni.Length/2))) | ||||
| } | ||||
|  | ||||
| // NewUnicodeString allocates a new UnicodeString and copies `s` into | ||||
| // the buffer of the new UnicodeString. | ||||
| func NewUnicodeString(s string) (*UnicodeString, error) { | ||||
| 	ws := utf16.Encode(([]rune)(s)) | ||||
| 	if len(ws) > 32767 { | ||||
| 	// Get length of original `s` to use in the UnicodeString since the `buf` | ||||
| 	// created later will have an additional trailing null character | ||||
| 	length := len(s) | ||||
| 	if length > 32767 { | ||||
| 		return nil, syscall.ENAMETOOLONG | ||||
| 	} | ||||
|  | ||||
| 	uni := &UnicodeString{ | ||||
| 		Length:        uint16(len(ws) * 2), | ||||
| 		MaximumLength: uint16(len(ws) * 2), | ||||
| 		Buffer:        &make([]uint16, len(ws))[0], | ||||
| 	buf, err := windows.UTF16FromString(s) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	uni := &UnicodeString{ | ||||
| 		Length:        uint16(length * 2), | ||||
| 		MaximumLength: uint16(length * 2), | ||||
| 		Buffer:        &buf[0], | ||||
| 	} | ||||
| 	copy((*[32768]uint16)(unsafe.Pointer(uni.Buffer))[:], ws) | ||||
| 	return uni, nil | ||||
| } | ||||
|  | ||||
|   | ||||
							
								
								
									
										2
									
								
								vendor/github.com/Microsoft/hcsshim/internal/winapi/winapi.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/Microsoft/hcsshim/internal/winapi/winapi.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -2,4 +2,4 @@ | ||||
| // be thought of as an extension to golang.org/x/sys/windows. | ||||
| package winapi | ||||
|  | ||||
| //go:generate go run ..\..\mksyscall_windows.go -output zsyscall_windows.go jobobject.go path.go logon.go memory.go processor.go devices.go filesystem.go errors.go | ||||
| //go:generate go run ..\..\mksyscall_windows.go -output zsyscall_windows.go net.go iocp.go jobobject.go path.go logon.go memory.go processor.go devices.go filesystem.go errors.go | ||||
|   | ||||
							
								
								
									
										91
									
								
								vendor/github.com/Microsoft/hcsshim/internal/winapi/zsyscall_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										91
									
								
								vendor/github.com/Microsoft/hcsshim/internal/winapi/zsyscall_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -37,32 +37,58 @@ func errnoErr(e syscall.Errno) error { | ||||
| } | ||||
|  | ||||
| var ( | ||||
| 	modiphlpapi = windows.NewLazySystemDLL("iphlpapi.dll") | ||||
| 	modkernel32 = windows.NewLazySystemDLL("kernel32.dll") | ||||
| 	modntdll    = windows.NewLazySystemDLL("ntdll.dll") | ||||
| 	modadvapi32 = windows.NewLazySystemDLL("advapi32.dll") | ||||
| 	modcfgmgr32 = windows.NewLazySystemDLL("cfgmgr32.dll") | ||||
| 	modntdll    = windows.NewLazySystemDLL("ntdll.dll") | ||||
|  | ||||
| 	procIsProcessInJob                       = modkernel32.NewProc("IsProcessInJob") | ||||
| 	procQueryInformationJobObject            = modkernel32.NewProc("QueryInformationJobObject") | ||||
| 	procOpenJobObjectW                       = modkernel32.NewProc("OpenJobObjectW") | ||||
| 	procSetIoRateControlInformationJobObject = modkernel32.NewProc("SetIoRateControlInformationJobObject") | ||||
| 	procSearchPathW                          = modkernel32.NewProc("SearchPathW") | ||||
| 	procLogonUserW                           = modadvapi32.NewProc("LogonUserW") | ||||
| 	procRtlMoveMemory                        = modkernel32.NewProc("RtlMoveMemory") | ||||
| 	procLocalAlloc                           = modkernel32.NewProc("LocalAlloc") | ||||
| 	procLocalFree                            = modkernel32.NewProc("LocalFree") | ||||
| 	procGetActiveProcessorCount              = modkernel32.NewProc("GetActiveProcessorCount") | ||||
| 	procCM_Get_Device_ID_List_SizeA          = modcfgmgr32.NewProc("CM_Get_Device_ID_List_SizeA") | ||||
| 	procCM_Get_Device_ID_ListA               = modcfgmgr32.NewProc("CM_Get_Device_ID_ListA") | ||||
| 	procCM_Locate_DevNodeW                   = modcfgmgr32.NewProc("CM_Locate_DevNodeW") | ||||
| 	procCM_Get_DevNode_PropertyW             = modcfgmgr32.NewProc("CM_Get_DevNode_PropertyW") | ||||
| 	procNtCreateFile                         = modntdll.NewProc("NtCreateFile") | ||||
| 	procNtSetInformationFile                 = modntdll.NewProc("NtSetInformationFile") | ||||
| 	procNtOpenDirectoryObject                = modntdll.NewProc("NtOpenDirectoryObject") | ||||
| 	procNtQueryDirectoryObject               = modntdll.NewProc("NtQueryDirectoryObject") | ||||
| 	procRtlNtStatusToDosError                = modntdll.NewProc("RtlNtStatusToDosError") | ||||
| 	procSetJobCompartmentId                    = modiphlpapi.NewProc("SetJobCompartmentId") | ||||
| 	procGetQueuedCompletionStatus              = modkernel32.NewProc("GetQueuedCompletionStatus") | ||||
| 	procIsProcessInJob                         = modkernel32.NewProc("IsProcessInJob") | ||||
| 	procQueryInformationJobObject              = modkernel32.NewProc("QueryInformationJobObject") | ||||
| 	procOpenJobObjectW                         = modkernel32.NewProc("OpenJobObjectW") | ||||
| 	procSetIoRateControlInformationJobObject   = modkernel32.NewProc("SetIoRateControlInformationJobObject") | ||||
| 	procQueryIoRateControlInformationJobObject = modkernel32.NewProc("QueryIoRateControlInformationJobObject") | ||||
| 	procNtOpenJobObject                        = modntdll.NewProc("NtOpenJobObject") | ||||
| 	procNtCreateJobObject                      = modntdll.NewProc("NtCreateJobObject") | ||||
| 	procSearchPathW                            = modkernel32.NewProc("SearchPathW") | ||||
| 	procLogonUserW                             = modadvapi32.NewProc("LogonUserW") | ||||
| 	procRtlMoveMemory                          = modkernel32.NewProc("RtlMoveMemory") | ||||
| 	procLocalAlloc                             = modkernel32.NewProc("LocalAlloc") | ||||
| 	procLocalFree                              = modkernel32.NewProc("LocalFree") | ||||
| 	procGetActiveProcessorCount                = modkernel32.NewProc("GetActiveProcessorCount") | ||||
| 	procCM_Get_Device_ID_List_SizeA            = modcfgmgr32.NewProc("CM_Get_Device_ID_List_SizeA") | ||||
| 	procCM_Get_Device_ID_ListA                 = modcfgmgr32.NewProc("CM_Get_Device_ID_ListA") | ||||
| 	procCM_Locate_DevNodeW                     = modcfgmgr32.NewProc("CM_Locate_DevNodeW") | ||||
| 	procCM_Get_DevNode_PropertyW               = modcfgmgr32.NewProc("CM_Get_DevNode_PropertyW") | ||||
| 	procNtCreateFile                           = modntdll.NewProc("NtCreateFile") | ||||
| 	procNtSetInformationFile                   = modntdll.NewProc("NtSetInformationFile") | ||||
| 	procNtOpenDirectoryObject                  = modntdll.NewProc("NtOpenDirectoryObject") | ||||
| 	procNtQueryDirectoryObject                 = modntdll.NewProc("NtQueryDirectoryObject") | ||||
| 	procRtlNtStatusToDosError                  = modntdll.NewProc("RtlNtStatusToDosError") | ||||
| ) | ||||
|  | ||||
| func SetJobCompartmentId(handle windows.Handle, compartmentId uint32) (win32Err error) { | ||||
| 	r0, _, _ := syscall.Syscall(procSetJobCompartmentId.Addr(), 2, uintptr(handle), uintptr(compartmentId), 0) | ||||
| 	if r0 != 0 { | ||||
| 		win32Err = syscall.Errno(r0) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func GetQueuedCompletionStatus(cphandle windows.Handle, qty *uint32, key *uintptr, overlapped **windows.Overlapped, timeout uint32) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall6(procGetQueuedCompletionStatus.Addr(), 5, uintptr(cphandle), uintptr(unsafe.Pointer(qty)), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(overlapped)), uintptr(timeout), 0) | ||||
| 	if r1 == 0 { | ||||
| 		if e1 != 0 { | ||||
| 			err = errnoErr(e1) | ||||
| 		} else { | ||||
| 			err = syscall.EINVAL | ||||
| 		} | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func IsProcessInJob(procHandle windows.Handle, jobHandle windows.Handle, result *bool) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall(procIsProcessInJob.Addr(), 3, uintptr(procHandle), uintptr(jobHandle), uintptr(unsafe.Pointer(result))) | ||||
| 	if r1 == 0 { | ||||
| @@ -119,6 +145,31 @@ func SetIoRateControlInformationJobObject(jobHandle windows.Handle, ioRateContro | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func QueryIoRateControlInformationJobObject(jobHandle windows.Handle, volumeName *uint16, ioRateControlInfo **JOBOBJECT_IO_RATE_CONTROL_INFORMATION, infoBlockCount *uint32) (ret uint32, err error) { | ||||
| 	r0, _, e1 := syscall.Syscall6(procQueryIoRateControlInformationJobObject.Addr(), 4, uintptr(jobHandle), uintptr(unsafe.Pointer(volumeName)), uintptr(unsafe.Pointer(ioRateControlInfo)), uintptr(unsafe.Pointer(infoBlockCount)), 0, 0) | ||||
| 	ret = uint32(r0) | ||||
| 	if ret == 0 { | ||||
| 		if e1 != 0 { | ||||
| 			err = errnoErr(e1) | ||||
| 		} else { | ||||
| 			err = syscall.EINVAL | ||||
| 		} | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func NtOpenJobObject(jobHandle *windows.Handle, desiredAccess uint32, objAttributes *ObjectAttributes) (status uint32) { | ||||
| 	r0, _, _ := syscall.Syscall(procNtOpenJobObject.Addr(), 3, uintptr(unsafe.Pointer(jobHandle)), uintptr(desiredAccess), uintptr(unsafe.Pointer(objAttributes))) | ||||
| 	status = uint32(r0) | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func NtCreateJobObject(jobHandle *windows.Handle, desiredAccess uint32, objAttributes *ObjectAttributes) (status uint32) { | ||||
| 	r0, _, _ := syscall.Syscall(procNtCreateJobObject.Addr(), 3, uintptr(unsafe.Pointer(jobHandle)), uintptr(desiredAccess), uintptr(unsafe.Pointer(objAttributes))) | ||||
| 	status = uint32(r0) | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func SearchPath(lpPath *uint16, lpFileName *uint16, lpExtension *uint16, nBufferLength uint32, lpBuffer *uint16, lpFilePath **uint16) (size uint32, err error) { | ||||
| 	r0, _, e1 := syscall.Syscall6(procSearchPathW.Addr(), 6, uintptr(unsafe.Pointer(lpPath)), uintptr(unsafe.Pointer(lpFileName)), uintptr(unsafe.Pointer(lpExtension)), uintptr(nBufferLength), uintptr(unsafe.Pointer(lpBuffer)), uintptr(unsafe.Pointer(lpFilePath))) | ||||
| 	size = uint32(r0) | ||||
|   | ||||
							
								
								
									
										3
									
								
								vendor/github.com/Microsoft/hcsshim/osversion/windowsbuilds.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/github.com/Microsoft/hcsshim/osversion/windowsbuilds.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -32,4 +32,7 @@ const ( | ||||
| 	// V20H1 (version 2004) corresponds to Windows Server 2004 (semi-annual | ||||
| 	// channel). | ||||
| 	V20H1 = 19041 | ||||
|  | ||||
| 	// V20H2 corresponds to Windows Server 20H2 (semi-annual channel). | ||||
| 	V20H2 = 19042 | ||||
| ) | ||||
|   | ||||
							
								
								
									
										283
									
								
								vendor/github.com/containerd/cgroups/stats/v1/metrics.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										283
									
								
								vendor/github.com/containerd/cgroups/stats/v1/metrics.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -33,6 +33,7 @@ type Metrics struct { | ||||
| 	Rdma                 *RdmaStat      `protobuf:"bytes,6,opt,name=rdma,proto3" json:"rdma,omitempty"` | ||||
| 	Network              []*NetworkStat `protobuf:"bytes,7,rep,name=network,proto3" json:"network,omitempty"` | ||||
| 	CgroupStats          *CgroupStats   `protobuf:"bytes,8,opt,name=cgroup_stats,json=cgroupStats,proto3" json:"cgroup_stats,omitempty"` | ||||
| 	MemoryOomControl     *MemoryOomControl `protobuf:"bytes,9,opt,name=memory_oom_control,json=MemoryOomControl,proto3" json:"memory_oom_control,omitempty"` | ||||
| 	XXX_NoUnkeyedLiteral struct{}       `json:"-"` | ||||
| 	XXX_unrecognized     []byte         `json:"-"` | ||||
| 	XXX_sizecache        int32          `json:"-"` | ||||
| @@ -392,6 +393,47 @@ func (m *MemoryEntry) XXX_DiscardUnknown() { | ||||
|  | ||||
| var xxx_messageInfo_MemoryEntry proto.InternalMessageInfo | ||||
|  | ||||
| type MemoryOomControl struct { | ||||
| 	OomKillDisable   uint64   `protobuf:"varint,1,opt,name=oom_kill_disable,proto3" json:oom_kill_disable",omitempty"` | ||||
| 	UnderOom         uint64   `protobuf:"varint,2,opt,name=under_oom,proto3" json:"under_oom,omitempty"` | ||||
| 	OomKill          uint64   `protobuf:"varint,3,opt,name=oom_kill,proto3" json:"oom_kill,omitempty"` | ||||
| 	XXX_NoUnkeyedLiteral struct{} `json:"-"` | ||||
| 	XXX_unrecognized     []byte   `json:"-"` | ||||
| 	XXX_sizecache        int32    `json:"-"` | ||||
| } | ||||
|  | ||||
| func (m *MemoryOomControl) Reset()  { *m = MemoryOomControl{} } | ||||
| func (*MemoryOomControl) ProtoMessage() {} | ||||
| func (*MemoryOomControl) Descriptor() ([]byte, []int) { | ||||
| 	return fileDescriptor_a17b2d87c332bfaa, []int{8} | ||||
| } | ||||
| func (m *MemoryOomControl) XXX_Unmarshal(b []byte) error { | ||||
| 	return m.Unmarshal(b) | ||||
| } | ||||
| func (m *MemoryOomControl) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { | ||||
| 	if deterministic { | ||||
| 		return xxx_messageInfo_MemoryOomControl.Marshal(b, m, deterministic) | ||||
| 	} else { | ||||
| 		b = b[:cap(b)] | ||||
| 		n, err := m.MarshalTo(b) | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| 		return b[:n], nil | ||||
| 	} | ||||
| } | ||||
| func (m *MemoryOomControl) XXX_Merge(src proto.Message) { | ||||
| 	xxx_messageInfo_MemoryOomControl.Merge(m, src) | ||||
| } | ||||
| func (m *MemoryOomControl) XXX_Size() int { | ||||
| 	return m.Size() | ||||
| } | ||||
| func (m *MemoryOomControl) XXX_DiscardUnknown() { | ||||
| 	xxx_messageInfo_MemoryOomControl.DiscardUnknown(m) | ||||
| } | ||||
|  | ||||
| var xxx_messageInfo_MemoryOomControl proto.InternalMessageInfo | ||||
|  | ||||
| type BlkIOStat struct { | ||||
| 	IoServiceBytesRecursive []*BlkIOEntry `protobuf:"bytes,1,rep,name=io_service_bytes_recursive,json=ioServiceBytesRecursive,proto3" json:"io_service_bytes_recursive,omitempty"` | ||||
| 	IoServicedRecursive     []*BlkIOEntry `protobuf:"bytes,2,rep,name=io_serviced_recursive,json=ioServicedRecursive,proto3" json:"io_serviced_recursive,omitempty"` | ||||
| @@ -409,7 +451,7 @@ type BlkIOStat struct { | ||||
| func (m *BlkIOStat) Reset()      { *m = BlkIOStat{} } | ||||
| func (*BlkIOStat) ProtoMessage() {} | ||||
| func (*BlkIOStat) Descriptor() ([]byte, []int) { | ||||
| 	return fileDescriptor_a17b2d87c332bfaa, []int{8} | ||||
| 	return fileDescriptor_a17b2d87c332bfaa, []int{9} | ||||
| } | ||||
| func (m *BlkIOStat) XXX_Unmarshal(b []byte) error { | ||||
| 	return m.Unmarshal(b) | ||||
| @@ -452,7 +494,7 @@ type BlkIOEntry struct { | ||||
| func (m *BlkIOEntry) Reset()      { *m = BlkIOEntry{} } | ||||
| func (*BlkIOEntry) ProtoMessage() {} | ||||
| func (*BlkIOEntry) Descriptor() ([]byte, []int) { | ||||
| 	return fileDescriptor_a17b2d87c332bfaa, []int{9} | ||||
| 	return fileDescriptor_a17b2d87c332bfaa, []int{10} | ||||
| } | ||||
| func (m *BlkIOEntry) XXX_Unmarshal(b []byte) error { | ||||
| 	return m.Unmarshal(b) | ||||
| @@ -492,7 +534,7 @@ type RdmaStat struct { | ||||
| func (m *RdmaStat) Reset()      { *m = RdmaStat{} } | ||||
| func (*RdmaStat) ProtoMessage() {} | ||||
| func (*RdmaStat) Descriptor() ([]byte, []int) { | ||||
| 	return fileDescriptor_a17b2d87c332bfaa, []int{10} | ||||
| 	return fileDescriptor_a17b2d87c332bfaa, []int{11} | ||||
| } | ||||
| func (m *RdmaStat) XXX_Unmarshal(b []byte) error { | ||||
| 	return m.Unmarshal(b) | ||||
| @@ -533,7 +575,7 @@ type RdmaEntry struct { | ||||
| func (m *RdmaEntry) Reset()      { *m = RdmaEntry{} } | ||||
| func (*RdmaEntry) ProtoMessage() {} | ||||
| func (*RdmaEntry) Descriptor() ([]byte, []int) { | ||||
| 	return fileDescriptor_a17b2d87c332bfaa, []int{11} | ||||
| 	return fileDescriptor_a17b2d87c332bfaa, []int{12} | ||||
| } | ||||
| func (m *RdmaEntry) XXX_Unmarshal(b []byte) error { | ||||
| 	return m.Unmarshal(b) | ||||
| @@ -580,7 +622,7 @@ type NetworkStat struct { | ||||
| func (m *NetworkStat) Reset()      { *m = NetworkStat{} } | ||||
| func (*NetworkStat) ProtoMessage() {} | ||||
| func (*NetworkStat) Descriptor() ([]byte, []int) { | ||||
| 	return fileDescriptor_a17b2d87c332bfaa, []int{12} | ||||
| 	return fileDescriptor_a17b2d87c332bfaa, []int{13} | ||||
| } | ||||
| func (m *NetworkStat) XXX_Unmarshal(b []byte) error { | ||||
| 	return m.Unmarshal(b) | ||||
| @@ -629,7 +671,7 @@ type CgroupStats struct { | ||||
| func (m *CgroupStats) Reset()      { *m = CgroupStats{} } | ||||
| func (*CgroupStats) ProtoMessage() {} | ||||
| func (*CgroupStats) Descriptor() ([]byte, []int) { | ||||
| 	return fileDescriptor_a17b2d87c332bfaa, []int{13} | ||||
| 	return fileDescriptor_a17b2d87c332bfaa, []int{14} | ||||
| } | ||||
| func (m *CgroupStats) XXX_Unmarshal(b []byte) error { | ||||
| 	return m.Unmarshal(b) | ||||
| @@ -667,6 +709,7 @@ func init() { | ||||
| 	proto.RegisterType((*Throttle)(nil), "io.containerd.cgroups.v1.Throttle") | ||||
| 	proto.RegisterType((*MemoryStat)(nil), "io.containerd.cgroups.v1.MemoryStat") | ||||
| 	proto.RegisterType((*MemoryEntry)(nil), "io.containerd.cgroups.v1.MemoryEntry") | ||||
| 	proto.RegisterType((*MemoryOomControl)(nil), "io.containerd.cgroups.v1.MemoryOomControl") | ||||
| 	proto.RegisterType((*BlkIOStat)(nil), "io.containerd.cgroups.v1.BlkIOStat") | ||||
| 	proto.RegisterType((*BlkIOEntry)(nil), "io.containerd.cgroups.v1.BlkIOEntry") | ||||
| 	proto.RegisterType((*RdmaStat)(nil), "io.containerd.cgroups.v1.RdmaStat") | ||||
| @@ -887,6 +930,16 @@ func (m *Metrics) MarshalTo(dAtA []byte) (int, error) { | ||||
| 		} | ||||
| 		i += n6 | ||||
| 	} | ||||
| 	if m.MemoryOomControl != nil { | ||||
| 		dAtA[i] = 0x4a | ||||
| 		i++ | ||||
| 		i = encodeVarintMetrics(dAtA, i, uint64(m.MemoryOomControl.Size())) | ||||
| 		n7, err := m.MemoryOomControl.MarshalTo(dAtA[i:]) | ||||
| 		if err != nil { | ||||
| 			return 0, err | ||||
| 		} | ||||
| 		i += n7 | ||||
| 	} | ||||
| 	if m.XXX_unrecognized != nil { | ||||
| 		i += copy(dAtA[i:], m.XXX_unrecognized) | ||||
| 	} | ||||
| @@ -1400,6 +1453,39 @@ func (m *MemoryEntry) MarshalTo(dAtA []byte) (int, error) { | ||||
| 	return i, nil | ||||
| } | ||||
|  | ||||
| func (m *MemoryOomControl) Marshal() (dAtA []byte, err error) { | ||||
| 	size := m.Size() | ||||
| 	dAtA = make([]byte, size) | ||||
| 	n, err := m.MarshalTo(dAtA) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return dAtA[:n], nil | ||||
| } | ||||
|  | ||||
| func (m *MemoryOomControl) MarshalTo(dAtA []byte) (int, error) { | ||||
| 	var i int | ||||
| 	_ = i | ||||
| 	var l int | ||||
| 	_ = l | ||||
| 	if m.OomKillDisable != 0 { | ||||
| 		dAtA[i] = 0x8 | ||||
| 		i++ | ||||
| 		i = encodeVarintMetrics(dAtA, i, uint64(m.OomKillDisable)) | ||||
| 	} | ||||
| 	if m.UnderOom != 0 { | ||||
| 		dAtA[i] = 0x10 | ||||
| 		i++ | ||||
| 		i = encodeVarintMetrics(dAtA, i, uint64(m.UnderOom)) | ||||
| 	} | ||||
| 	if m.OomKill != 0 { | ||||
| 		dAtA[i] = 0x18 | ||||
| 		i++ | ||||
| 		i = encodeVarintMetrics(dAtA, i, uint64(m.OomKill)) | ||||
| 	} | ||||
| 	return i, nil | ||||
| } | ||||
|  | ||||
| func (m *BlkIOStat) Marshal() (dAtA []byte, err error) { | ||||
| 	size := m.Size() | ||||
| 	dAtA = make([]byte, size) | ||||
| @@ -1811,6 +1897,10 @@ func (m *Metrics) Size() (n int) { | ||||
| 		l = m.CgroupStats.Size() | ||||
| 		n += 1 + l + sovMetrics(uint64(l)) | ||||
| 	} | ||||
| 	if m.MemoryOomControl != nil { | ||||
| 		l = m.MemoryOomControl.Size() | ||||
| 		n += 1 + l + sovMetrics(uint64(l)) | ||||
| 	} | ||||
| 	if m.XXX_unrecognized != nil { | ||||
| 		n += len(m.XXX_unrecognized) | ||||
| 	} | ||||
| @@ -2077,6 +2167,27 @@ func (m *MemoryEntry) Size() (n int) { | ||||
| 	return n | ||||
| } | ||||
|  | ||||
| func (m *MemoryOomControl) Size() (n int) { | ||||
| 	if m == nil { | ||||
| 		return 0 | ||||
| 	} | ||||
| 	var l int | ||||
| 	_ = l | ||||
| 	if m.OomKillDisable != 0 { | ||||
| 		n += 1 + sovMetrics(uint64(m.OomKillDisable)) | ||||
| 	} | ||||
| 	if m.UnderOom != 0 { | ||||
| 		n += 1 + sovMetrics(uint64(m.UnderOom)) | ||||
| 	} | ||||
| 	if m.OomKill != 0 { | ||||
| 		n += 1 + sovMetrics(uint64(m.OomKill)) | ||||
| 	} | ||||
| 	if m.XXX_unrecognized != nil { | ||||
| 		n += len(m.XXX_unrecognized) | ||||
| 	} | ||||
| 	return n | ||||
| } | ||||
|  | ||||
| func (m *BlkIOStat) Size() (n int) { | ||||
| 	if m == nil { | ||||
| 		return 0 | ||||
| @@ -2301,6 +2412,7 @@ func (this *Metrics) String() string { | ||||
| 		`Pids:` + strings.Replace(fmt.Sprintf("%v", this.Pids), "PidsStat", "PidsStat", 1) + `,`, | ||||
| 		`CPU:` + strings.Replace(fmt.Sprintf("%v", this.CPU), "CPUStat", "CPUStat", 1) + `,`, | ||||
| 		`Memory:` + strings.Replace(fmt.Sprintf("%v", this.Memory), "MemoryStat", "MemoryStat", 1) + `,`, | ||||
| 		`MemoryOomControl:` + strings.Replace(fmt.Sprintf("%v", this.MemoryOomControl), "MemoryOomControl", "MemoryOomControl", 1) + `,`, | ||||
| 		`Blkio:` + strings.Replace(fmt.Sprintf("%v", this.Blkio), "BlkIOStat", "BlkIOStat", 1) + `,`, | ||||
| 		`Rdma:` + strings.Replace(fmt.Sprintf("%v", this.Rdma), "RdmaStat", "RdmaStat", 1) + `,`, | ||||
| 		`Network:` + strings.Replace(fmt.Sprintf("%v", this.Network), "NetworkStat", "NetworkStat", 1) + `,`, | ||||
| @@ -2435,6 +2547,19 @@ func (this *MemoryEntry) String() string { | ||||
| 	}, "") | ||||
| 	return s | ||||
| } | ||||
| func (this *MemoryOomControl) String() string { | ||||
| 	if this == nil { | ||||
| 		return "nil" | ||||
| 	} | ||||
| 	s := strings.Join([]string{`&MemoryOomControl{`, | ||||
| 		`OomKillDisable:` + fmt.Sprintf("%v", this.OomKillDisable) + `,`, | ||||
| 		`UnderOom:` + fmt.Sprintf("%v", this.UnderOom) + `,`, | ||||
| 		`OomKill:` + fmt.Sprintf("%v", this.OomKill) + `,`, | ||||
| 		`XXX_unrecognized:` + fmt.Sprintf("%v", this.XXX_unrecognized) + `,`, | ||||
| 		`}`, | ||||
| 	}, "") | ||||
| 	return s | ||||
| } | ||||
| func (this *BlkIOStat) String() string { | ||||
| 	if this == nil { | ||||
| 		return "nil" | ||||
| @@ -2848,6 +2973,41 @@ func (m *Metrics) Unmarshal(dAtA []byte) error { | ||||
| 				return err | ||||
| 			} | ||||
| 			iNdEx = postIndex | ||||
| 		case 9: | ||||
| 			if wireType != 2 { | ||||
| 				return fmt.Errorf("proto: wrong wireType = %d for field MemoryOomControl", wireType) | ||||
| 			} | ||||
| 			var msglen int | ||||
| 			for shift := uint(0); ; shift += 7 { | ||||
| 				if shift >= 64 { | ||||
| 					return ErrIntOverflowMetrics | ||||
| 				} | ||||
| 				if iNdEx >= l { | ||||
| 					return io.ErrUnexpectedEOF | ||||
| 				} | ||||
| 				b := dAtA[iNdEx] | ||||
| 				iNdEx++ | ||||
| 				msglen |= int(b&0x7F) << shift | ||||
| 				if b < 0x80 { | ||||
| 					break | ||||
| 				} | ||||
| 			} | ||||
| 			if msglen < 0 { | ||||
| 				return ErrInvalidLengthMetrics | ||||
| 			} | ||||
| 			postIndex := iNdEx + msglen | ||||
| 			if postIndex < 0 { | ||||
| 				return ErrInvalidLengthMetrics | ||||
| 			} | ||||
| 			if postIndex > l { | ||||
| 				return io.ErrUnexpectedEOF | ||||
| 			} | ||||
| 			if m.MemoryOomControl == nil { | ||||
| 				m.MemoryOomControl = &MemoryOomControl{} | ||||
| 			} | ||||
| 			if err := m.MemoryOomControl.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 		default: | ||||
| 			iNdEx = preIndex | ||||
| 			skippy, err := skipMetrics(dAtA[iNdEx:]) | ||||
| @@ -4468,6 +4628,117 @@ func (m *MemoryEntry) Unmarshal(dAtA []byte) error { | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
| func (m *MemoryOomControl) Unmarshal(dAtA []byte) error { | ||||
| 	l := len(dAtA) | ||||
| 	iNdEx := 0 | ||||
| 	for iNdEx < l { | ||||
| 		preIndex := iNdEx | ||||
| 		var wire uint64 | ||||
| 		for shift := uint(0); ; shift += 7 { | ||||
| 			if shift >= 64 { | ||||
| 				return ErrIntOverflowMetrics | ||||
| 			} | ||||
| 			if iNdEx >= l { | ||||
| 				return io.ErrUnexpectedEOF | ||||
| 			} | ||||
| 			b := dAtA[iNdEx] | ||||
| 			iNdEx++ | ||||
| 			wire |= uint64(b&0x7F) << shift | ||||
| 			if b < 0x80 { | ||||
| 				break | ||||
| 			} | ||||
| 		} | ||||
| 		fieldNum := int32(wire >> 3) | ||||
| 		wireType := int(wire & 0x7) | ||||
| 		if wireType == 4 { | ||||
| 			return fmt.Errorf("proto: MemoryOomControl: wiretype end group for non-group") | ||||
| 		} | ||||
| 		if fieldNum <= 0 { | ||||
| 			return fmt.Errorf("proto: MemoryOomControl: illegal tag %d (wire type %d)", fieldNum, wire) | ||||
| 		} | ||||
| 		switch fieldNum { | ||||
| 		case 1: | ||||
| 			if wireType != 0 { | ||||
| 				return fmt.Errorf("proto: wrong wireType = %d for field OomKillDisable", wireType) | ||||
| 			} | ||||
| 			m.OomKillDisable = 0 | ||||
| 			for shift := uint(0); ; shift += 7 { | ||||
| 				if shift >= 64 { | ||||
| 					return ErrIntOverflowMetrics | ||||
| 				} | ||||
| 				if iNdEx >= l { | ||||
| 					return io.ErrUnexpectedEOF | ||||
| 				} | ||||
| 				b := dAtA[iNdEx] | ||||
| 				iNdEx++ | ||||
| 				m.OomKillDisable |= uint64(b&0x7F) << shift | ||||
| 				if b < 0x80 { | ||||
| 					break | ||||
| 				} | ||||
| 			} | ||||
| 		case 2: | ||||
| 			if wireType != 0 { | ||||
| 				return fmt.Errorf("proto: wrong wireType = %d for field UnderOom", wireType) | ||||
| 			} | ||||
| 			m.UnderOom = 0 | ||||
| 			for shift := uint(0); ; shift += 7 { | ||||
| 				if shift >= 64 { | ||||
| 					return ErrIntOverflowMetrics | ||||
| 				} | ||||
| 				if iNdEx >= l { | ||||
| 					return io.ErrUnexpectedEOF | ||||
| 				} | ||||
| 				b := dAtA[iNdEx] | ||||
| 				iNdEx++ | ||||
| 				m.UnderOom |= uint64(b&0x7F) << shift | ||||
| 				if b < 0x80 { | ||||
| 					break | ||||
| 				} | ||||
| 			} | ||||
| 		case 3: | ||||
| 			if wireType != 0 { | ||||
| 				return fmt.Errorf("proto: wrong wireType = %d for field OomKill", wireType) | ||||
| 			} | ||||
| 			m.OomKill = 0 | ||||
| 			for shift := uint(0); ; shift += 7 { | ||||
| 				if shift >= 64 { | ||||
| 					return ErrIntOverflowMetrics | ||||
| 				} | ||||
| 				if iNdEx >= l { | ||||
| 					return io.ErrUnexpectedEOF | ||||
| 				} | ||||
| 				b := dAtA[iNdEx] | ||||
| 				iNdEx++ | ||||
| 				m.OomKill |= uint64(b&0x7F) << shift | ||||
| 				if b < 0x80 { | ||||
| 					break | ||||
| 				} | ||||
| 			} | ||||
| 		default: | ||||
| 			iNdEx = preIndex | ||||
| 			skippy, err := skipMetrics(dAtA[iNdEx:]) | ||||
| 			if err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 			if skippy < 0 { | ||||
| 				return ErrInvalidLengthMetrics | ||||
| 			} | ||||
| 			if (iNdEx + skippy) < 0 { | ||||
| 				return ErrInvalidLengthMetrics | ||||
| 			} | ||||
| 			if (iNdEx + skippy) > l { | ||||
| 				return io.ErrUnexpectedEOF | ||||
| 			} | ||||
| 			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) | ||||
| 			iNdEx += skippy | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	if iNdEx > l { | ||||
| 		return io.ErrUnexpectedEOF | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
| func (m *BlkIOStat) Unmarshal(dAtA []byte) error { | ||||
| 	l := len(dAtA) | ||||
| 	iNdEx := 0 | ||||
|   | ||||
							
								
								
									
										32
									
								
								vendor/github.com/containerd/cgroups/stats/v1/metrics.pb.txt
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										32
									
								
								vendor/github.com/containerd/cgroups/stats/v1/metrics.pb.txt
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -71,6 +71,14 @@ file { | ||||
|       type_name: ".io.containerd.cgroups.v1.CgroupStats" | ||||
|       json_name: "cgroupStats" | ||||
|     } | ||||
|     field { | ||||
|       name: "memory_oom_control" | ||||
|       number: 9 | ||||
|       label: LABEL_OPTIONAL | ||||
|       type: TYPE_MESSAGE | ||||
|       type_name: ".io.containerd.cgroups.v1.MemoryOomControl" | ||||
|       json_name: "memoryOomControl" | ||||
|     } | ||||
|   } | ||||
|   message_type { | ||||
|     name: "HugetlbStat" | ||||
| @@ -502,6 +510,30 @@ file { | ||||
|       json_name: "failcnt" | ||||
|     } | ||||
|   } | ||||
|   message_type { | ||||
|     name: "MemoryOomControl" | ||||
|     field { | ||||
|       name: "oom_kill_disable" | ||||
|       number: 1 | ||||
|       label: LABEL_OPTIONAL | ||||
|       type: TYPE_UINT64 | ||||
|       json_name: "oom_kill_disable" | ||||
|     } | ||||
|     field { | ||||
|       name: "under_oom" | ||||
|       number: 2 | ||||
|       label: LABEL_OPTIONAL | ||||
|       type: TYPE_UINT64 | ||||
|       json_name: "under_oom" | ||||
|     } | ||||
|     field { | ||||
|       name: "oom_kill" | ||||
|       number: 3 | ||||
|       label: LABEL_OPTIONAL | ||||
|       type: TYPE_UINT64 | ||||
|       json_name: "oom_kill" | ||||
|     } | ||||
|   } | ||||
|   message_type { | ||||
|     name: "BlkIOStat" | ||||
|     field { | ||||
|   | ||||
							
								
								
									
										7
									
								
								vendor/github.com/containerd/cgroups/stats/v1/metrics.proto
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								vendor/github.com/containerd/cgroups/stats/v1/metrics.proto
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -13,6 +13,7 @@ message Metrics { | ||||
| 	RdmaStat rdma = 6; | ||||
| 	repeated NetworkStat network = 7; | ||||
| 	CgroupStats cgroup_stats = 8; | ||||
| 	MemoryOomControl memory_oom_control = 9; | ||||
| } | ||||
|  | ||||
| message HugetlbStat { | ||||
| @@ -94,6 +95,12 @@ message MemoryEntry { | ||||
| 	uint64 failcnt = 4; | ||||
| } | ||||
|  | ||||
| message MemoryOomControl { | ||||
| 	uint64 oom_kill_disable = 1; | ||||
| 	uint64 under_oom = 2; | ||||
| 	uint64 oom_kill = 3; | ||||
| } | ||||
|  | ||||
| message BlkIOStat { | ||||
| 	repeated BlkIOEntry io_service_bytes_recursive = 1; | ||||
| 	repeated BlkIOEntry io_serviced_recursive = 2; | ||||
|   | ||||
							
								
								
									
										94
									
								
								vendor/github.com/containerd/containerd/api/services/content/v1/content.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										94
									
								
								vendor/github.com/containerd/containerd/api/services/content/v1/content.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -3280,7 +3280,7 @@ func (m *Info) Unmarshal(dAtA []byte) error { | ||||
| 					if err != nil { | ||||
| 						return err | ||||
| 					} | ||||
| 					if skippy < 0 { | ||||
| 					if (skippy < 0) || (iNdEx+skippy) < 0 { | ||||
| 						return ErrInvalidLengthContent | ||||
| 					} | ||||
| 					if (iNdEx + skippy) > postIndex { | ||||
| @@ -3297,10 +3297,7 @@ func (m *Info) Unmarshal(dAtA []byte) error { | ||||
| 			if err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 			if skippy < 0 { | ||||
| 				return ErrInvalidLengthContent | ||||
| 			} | ||||
| 			if (iNdEx + skippy) < 0 { | ||||
| 			if (skippy < 0) || (iNdEx+skippy) < 0 { | ||||
| 				return ErrInvalidLengthContent | ||||
| 			} | ||||
| 			if (iNdEx + skippy) > l { | ||||
| @@ -3383,10 +3380,7 @@ func (m *InfoRequest) Unmarshal(dAtA []byte) error { | ||||
| 			if err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 			if skippy < 0 { | ||||
| 				return ErrInvalidLengthContent | ||||
| 			} | ||||
| 			if (iNdEx + skippy) < 0 { | ||||
| 			if (skippy < 0) || (iNdEx+skippy) < 0 { | ||||
| 				return ErrInvalidLengthContent | ||||
| 			} | ||||
| 			if (iNdEx + skippy) > l { | ||||
| @@ -3470,10 +3464,7 @@ func (m *InfoResponse) Unmarshal(dAtA []byte) error { | ||||
| 			if err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 			if skippy < 0 { | ||||
| 				return ErrInvalidLengthContent | ||||
| 			} | ||||
| 			if (iNdEx + skippy) < 0 { | ||||
| 			if (skippy < 0) || (iNdEx+skippy) < 0 { | ||||
| 				return ErrInvalidLengthContent | ||||
| 			} | ||||
| 			if (iNdEx + skippy) > l { | ||||
| @@ -3593,10 +3584,7 @@ func (m *UpdateRequest) Unmarshal(dAtA []byte) error { | ||||
| 			if err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 			if skippy < 0 { | ||||
| 				return ErrInvalidLengthContent | ||||
| 			} | ||||
| 			if (iNdEx + skippy) < 0 { | ||||
| 			if (skippy < 0) || (iNdEx+skippy) < 0 { | ||||
| 				return ErrInvalidLengthContent | ||||
| 			} | ||||
| 			if (iNdEx + skippy) > l { | ||||
| @@ -3680,10 +3668,7 @@ func (m *UpdateResponse) Unmarshal(dAtA []byte) error { | ||||
| 			if err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 			if skippy < 0 { | ||||
| 				return ErrInvalidLengthContent | ||||
| 			} | ||||
| 			if (iNdEx + skippy) < 0 { | ||||
| 			if (skippy < 0) || (iNdEx+skippy) < 0 { | ||||
| 				return ErrInvalidLengthContent | ||||
| 			} | ||||
| 			if (iNdEx + skippy) > l { | ||||
| @@ -3766,10 +3751,7 @@ func (m *ListContentRequest) Unmarshal(dAtA []byte) error { | ||||
| 			if err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 			if skippy < 0 { | ||||
| 				return ErrInvalidLengthContent | ||||
| 			} | ||||
| 			if (iNdEx + skippy) < 0 { | ||||
| 			if (skippy < 0) || (iNdEx+skippy) < 0 { | ||||
| 				return ErrInvalidLengthContent | ||||
| 			} | ||||
| 			if (iNdEx + skippy) > l { | ||||
| @@ -3854,10 +3836,7 @@ func (m *ListContentResponse) Unmarshal(dAtA []byte) error { | ||||
| 			if err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 			if skippy < 0 { | ||||
| 				return ErrInvalidLengthContent | ||||
| 			} | ||||
| 			if (iNdEx + skippy) < 0 { | ||||
| 			if (skippy < 0) || (iNdEx+skippy) < 0 { | ||||
| 				return ErrInvalidLengthContent | ||||
| 			} | ||||
| 			if (iNdEx + skippy) > l { | ||||
| @@ -3940,10 +3919,7 @@ func (m *DeleteContentRequest) Unmarshal(dAtA []byte) error { | ||||
| 			if err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 			if skippy < 0 { | ||||
| 				return ErrInvalidLengthContent | ||||
| 			} | ||||
| 			if (iNdEx + skippy) < 0 { | ||||
| 			if (skippy < 0) || (iNdEx+skippy) < 0 { | ||||
| 				return ErrInvalidLengthContent | ||||
| 			} | ||||
| 			if (iNdEx + skippy) > l { | ||||
| @@ -4064,10 +4040,7 @@ func (m *ReadContentRequest) Unmarshal(dAtA []byte) error { | ||||
| 			if err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 			if skippy < 0 { | ||||
| 				return ErrInvalidLengthContent | ||||
| 			} | ||||
| 			if (iNdEx + skippy) < 0 { | ||||
| 			if (skippy < 0) || (iNdEx+skippy) < 0 { | ||||
| 				return ErrInvalidLengthContent | ||||
| 			} | ||||
| 			if (iNdEx + skippy) > l { | ||||
| @@ -4171,10 +4144,7 @@ func (m *ReadContentResponse) Unmarshal(dAtA []byte) error { | ||||
| 			if err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 			if skippy < 0 { | ||||
| 				return ErrInvalidLengthContent | ||||
| 			} | ||||
| 			if (iNdEx + skippy) < 0 { | ||||
| 			if (skippy < 0) || (iNdEx+skippy) < 0 { | ||||
| 				return ErrInvalidLengthContent | ||||
| 			} | ||||
| 			if (iNdEx + skippy) > l { | ||||
| @@ -4393,10 +4363,7 @@ func (m *Status) Unmarshal(dAtA []byte) error { | ||||
| 			if err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 			if skippy < 0 { | ||||
| 				return ErrInvalidLengthContent | ||||
| 			} | ||||
| 			if (iNdEx + skippy) < 0 { | ||||
| 			if (skippy < 0) || (iNdEx+skippy) < 0 { | ||||
| 				return ErrInvalidLengthContent | ||||
| 			} | ||||
| 			if (iNdEx + skippy) > l { | ||||
| @@ -4479,10 +4446,7 @@ func (m *StatusRequest) Unmarshal(dAtA []byte) error { | ||||
| 			if err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 			if skippy < 0 { | ||||
| 				return ErrInvalidLengthContent | ||||
| 			} | ||||
| 			if (iNdEx + skippy) < 0 { | ||||
| 			if (skippy < 0) || (iNdEx+skippy) < 0 { | ||||
| 				return ErrInvalidLengthContent | ||||
| 			} | ||||
| 			if (iNdEx + skippy) > l { | ||||
| @@ -4569,10 +4533,7 @@ func (m *StatusResponse) Unmarshal(dAtA []byte) error { | ||||
| 			if err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 			if skippy < 0 { | ||||
| 				return ErrInvalidLengthContent | ||||
| 			} | ||||
| 			if (iNdEx + skippy) < 0 { | ||||
| 			if (skippy < 0) || (iNdEx+skippy) < 0 { | ||||
| 				return ErrInvalidLengthContent | ||||
| 			} | ||||
| 			if (iNdEx + skippy) > l { | ||||
| @@ -4655,10 +4616,7 @@ func (m *ListStatusesRequest) Unmarshal(dAtA []byte) error { | ||||
| 			if err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 			if skippy < 0 { | ||||
| 				return ErrInvalidLengthContent | ||||
| 			} | ||||
| 			if (iNdEx + skippy) < 0 { | ||||
| 			if (skippy < 0) || (iNdEx+skippy) < 0 { | ||||
| 				return ErrInvalidLengthContent | ||||
| 			} | ||||
| 			if (iNdEx + skippy) > l { | ||||
| @@ -4743,10 +4701,7 @@ func (m *ListStatusesResponse) Unmarshal(dAtA []byte) error { | ||||
| 			if err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 			if skippy < 0 { | ||||
| 				return ErrInvalidLengthContent | ||||
| 			} | ||||
| 			if (iNdEx + skippy) < 0 { | ||||
| 			if (skippy < 0) || (iNdEx+skippy) < 0 { | ||||
| 				return ErrInvalidLengthContent | ||||
| 			} | ||||
| 			if (iNdEx + skippy) > l { | ||||
| @@ -5062,7 +5017,7 @@ func (m *WriteContentRequest) Unmarshal(dAtA []byte) error { | ||||
| 					if err != nil { | ||||
| 						return err | ||||
| 					} | ||||
| 					if skippy < 0 { | ||||
| 					if (skippy < 0) || (iNdEx+skippy) < 0 { | ||||
| 						return ErrInvalidLengthContent | ||||
| 					} | ||||
| 					if (iNdEx + skippy) > postIndex { | ||||
| @@ -5079,10 +5034,7 @@ func (m *WriteContentRequest) Unmarshal(dAtA []byte) error { | ||||
| 			if err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 			if skippy < 0 { | ||||
| 				return ErrInvalidLengthContent | ||||
| 			} | ||||
| 			if (iNdEx + skippy) < 0 { | ||||
| 			if (skippy < 0) || (iNdEx+skippy) < 0 { | ||||
| 				return ErrInvalidLengthContent | ||||
| 			} | ||||
| 			if (iNdEx + skippy) > l { | ||||
| @@ -5288,10 +5240,7 @@ func (m *WriteContentResponse) Unmarshal(dAtA []byte) error { | ||||
| 			if err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 			if skippy < 0 { | ||||
| 				return ErrInvalidLengthContent | ||||
| 			} | ||||
| 			if (iNdEx + skippy) < 0 { | ||||
| 			if (skippy < 0) || (iNdEx+skippy) < 0 { | ||||
| 				return ErrInvalidLengthContent | ||||
| 			} | ||||
| 			if (iNdEx + skippy) > l { | ||||
| @@ -5374,10 +5323,7 @@ func (m *AbortRequest) Unmarshal(dAtA []byte) error { | ||||
| 			if err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 			if skippy < 0 { | ||||
| 				return ErrInvalidLengthContent | ||||
| 			} | ||||
| 			if (iNdEx + skippy) < 0 { | ||||
| 			if (skippy < 0) || (iNdEx+skippy) < 0 { | ||||
| 				return ErrInvalidLengthContent | ||||
| 			} | ||||
| 			if (iNdEx + skippy) > l { | ||||
|   | ||||
							
								
								
									
										16
									
								
								vendor/github.com/containerd/containerd/api/services/content/v1/content.proto
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										16
									
								
								vendor/github.com/containerd/containerd/api/services/content/v1/content.proto
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,3 +1,19 @@ | ||||
| /* | ||||
| 	Copyright The containerd Authors. | ||||
|  | ||||
| 	Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| 	you may not use this file except in compliance with the License. | ||||
| 	You may obtain a copy of the License at | ||||
|  | ||||
| 		http://www.apache.org/licenses/LICENSE-2.0 | ||||
|  | ||||
| 	Unless required by applicable law or agreed to in writing, software | ||||
| 	distributed under the License is distributed on an "AS IS" BASIS, | ||||
| 	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| 	See the License for the specific language governing permissions and | ||||
| 	limitations under the License. | ||||
| */ | ||||
|  | ||||
| syntax = "proto3"; | ||||
|  | ||||
| package containerd.services.content.v1; | ||||
|   | ||||
							
								
								
									
										21
									
								
								vendor/github.com/containerd/containerd/archive/compression/compression.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										21
									
								
								vendor/github.com/containerd/containerd/archive/compression/compression.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -29,6 +29,7 @@ import ( | ||||
| 	"sync" | ||||
|  | ||||
| 	"github.com/containerd/containerd/log" | ||||
| 	"github.com/klauspost/compress/zstd" | ||||
| ) | ||||
|  | ||||
| type ( | ||||
| @@ -41,6 +42,8 @@ const ( | ||||
| 	Uncompressed Compression = iota | ||||
| 	// Gzip is gzip compression algorithm. | ||||
| 	Gzip | ||||
| 	// Zstd is zstd compression algorithm. | ||||
| 	Zstd | ||||
| ) | ||||
|  | ||||
| const disablePigzEnv = "CONTAINERD_DISABLE_PIGZ" | ||||
| @@ -126,6 +129,7 @@ func (r *bufferedReader) Peek(n int) ([]byte, error) { | ||||
| func DetectCompression(source []byte) Compression { | ||||
| 	for compression, m := range map[Compression][]byte{ | ||||
| 		Gzip: {0x1F, 0x8B, 0x08}, | ||||
| 		Zstd: {0x28, 0xb5, 0x2f, 0xfd}, | ||||
| 	} { | ||||
| 		if len(source) < len(m) { | ||||
| 			// Len too short | ||||
| @@ -174,6 +178,19 @@ func DecompressStream(archive io.Reader) (DecompressReadCloser, error) { | ||||
| 				return gzReader.Close() | ||||
| 			}, | ||||
| 		}, nil | ||||
| 	case Zstd: | ||||
| 		zstdReader, err := zstd.NewReader(buf) | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| 		return &readCloserWrapper{ | ||||
| 			Reader:      zstdReader, | ||||
| 			compression: compression, | ||||
| 			closer: func() error { | ||||
| 				zstdReader.Close() | ||||
| 				return nil | ||||
| 			}, | ||||
| 		}, nil | ||||
|  | ||||
| 	default: | ||||
| 		return nil, fmt.Errorf("unsupported compression format %s", (&compression).Extension()) | ||||
| @@ -187,6 +204,8 @@ func CompressStream(dest io.Writer, compression Compression) (io.WriteCloser, er | ||||
| 		return &writeCloserWrapper{dest, nil}, nil | ||||
| 	case Gzip: | ||||
| 		return gzip.NewWriter(dest), nil | ||||
| 	case Zstd: | ||||
| 		return zstd.NewWriter(dest) | ||||
| 	default: | ||||
| 		return nil, fmt.Errorf("unsupported compression format %s", (&compression).Extension()) | ||||
| 	} | ||||
| @@ -197,6 +216,8 @@ func (compression *Compression) Extension() string { | ||||
| 	switch *compression { | ||||
| 	case Gzip: | ||||
| 		return "gz" | ||||
| 	case Zstd: | ||||
| 		return "zst" | ||||
| 	} | ||||
| 	return "" | ||||
| } | ||||
|   | ||||
							
								
								
									
										52
									
								
								vendor/github.com/containerd/containerd/content/adaptor.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								vendor/github.com/containerd/containerd/content/adaptor.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,52 @@ | ||||
| /* | ||||
|    Copyright The containerd Authors. | ||||
|  | ||||
|    Licensed under the Apache License, Version 2.0 (the "License"); | ||||
|    you may not use this file except in compliance with the License. | ||||
|    You may obtain a copy of the License at | ||||
|  | ||||
|        http://www.apache.org/licenses/LICENSE-2.0 | ||||
|  | ||||
|    Unless required by applicable law or agreed to in writing, software | ||||
|    distributed under the License is distributed on an "AS IS" BASIS, | ||||
|    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
|    See the License for the specific language governing permissions and | ||||
|    limitations under the License. | ||||
| */ | ||||
|  | ||||
| package content | ||||
|  | ||||
| import ( | ||||
| 	"strings" | ||||
|  | ||||
| 	"github.com/containerd/containerd/filters" | ||||
| ) | ||||
|  | ||||
| // AdoptInfo returns `filters.Adaptor` that handles `content.Info`. | ||||
| func AdaptInfo(info Info) filters.Adaptor { | ||||
| 	return filters.AdapterFunc(func(fieldpath []string) (string, bool) { | ||||
| 		if len(fieldpath) == 0 { | ||||
| 			return "", false | ||||
| 		} | ||||
|  | ||||
| 		switch fieldpath[0] { | ||||
| 		case "digest": | ||||
| 			return info.Digest.String(), true | ||||
| 		case "size": | ||||
| 			// TODO: support size based filtering | ||||
| 		case "labels": | ||||
| 			return checkMap(fieldpath[1:], info.Labels) | ||||
| 		} | ||||
|  | ||||
| 		return "", false | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| func checkMap(fieldpath []string, m map[string]string) (string, bool) { | ||||
| 	if len(m) == 0 { | ||||
| 		return "", false | ||||
| 	} | ||||
|  | ||||
| 	value, ok := m[strings.Join(fieldpath, ".")] | ||||
| 	return value, ok | ||||
| } | ||||
							
								
								
									
										2
									
								
								vendor/github.com/containerd/containerd/content/content.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/containerd/containerd/content/content.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -37,7 +37,7 @@ type Provider interface { | ||||
| 	// ReaderAt only requires desc.Digest to be set. | ||||
| 	// Other fields in the descriptor may be used internally for resolving | ||||
| 	// the location of the actual data. | ||||
| 	ReaderAt(ctx context.Context, dec ocispec.Descriptor) (ReaderAt, error) | ||||
| 	ReaderAt(ctx context.Context, desc ocispec.Descriptor) (ReaderAt, error) | ||||
| } | ||||
|  | ||||
| // Ingester writes content | ||||
|   | ||||
							
								
								
									
										13
									
								
								vendor/github.com/containerd/containerd/content/local/locks.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										13
									
								
								vendor/github.com/containerd/containerd/content/local/locks.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -18,6 +18,7 @@ package local | ||||
|  | ||||
| import ( | ||||
| 	"sync" | ||||
| 	"time" | ||||
|  | ||||
| 	"github.com/containerd/containerd/errdefs" | ||||
| 	"github.com/pkg/errors" | ||||
| @@ -25,9 +26,13 @@ import ( | ||||
|  | ||||
| // Handles locking references | ||||
|  | ||||
| type lock struct { | ||||
| 	since time.Time | ||||
| } | ||||
|  | ||||
| var ( | ||||
| 	// locks lets us lock in process | ||||
| 	locks   = map[string]struct{}{} | ||||
| 	locks   = make(map[string]*lock) | ||||
| 	locksMu sync.Mutex | ||||
| ) | ||||
|  | ||||
| @@ -35,11 +40,11 @@ func tryLock(ref string) error { | ||||
| 	locksMu.Lock() | ||||
| 	defer locksMu.Unlock() | ||||
|  | ||||
| 	if _, ok := locks[ref]; ok { | ||||
| 		return errors.Wrapf(errdefs.ErrUnavailable, "ref %s locked", ref) | ||||
| 	if v, ok := locks[ref]; ok { | ||||
| 		return errors.Wrapf(errdefs.ErrUnavailable, "ref %s locked since %s", ref, v.since) | ||||
| 	} | ||||
|  | ||||
| 	locks[ref] = struct{}{} | ||||
| 	locks[ref] = &lock{time.Now()} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
|   | ||||
							
								
								
									
										28
									
								
								vendor/github.com/containerd/containerd/content/local/readerat.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										28
									
								
								vendor/github.com/containerd/containerd/content/local/readerat.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -18,6 +18,11 @@ package local | ||||
|  | ||||
| import ( | ||||
| 	"os" | ||||
|  | ||||
| 	"github.com/pkg/errors" | ||||
|  | ||||
| 	"github.com/containerd/containerd/content" | ||||
| 	"github.com/containerd/containerd/errdefs" | ||||
| ) | ||||
|  | ||||
| // readerat implements io.ReaderAt in a completely stateless manner by opening | ||||
| @@ -27,6 +32,29 @@ type sizeReaderAt struct { | ||||
| 	fp   *os.File | ||||
| } | ||||
|  | ||||
| // OpenReader creates ReaderAt from a file | ||||
| func OpenReader(p string) (content.ReaderAt, error) { | ||||
| 	fi, err := os.Stat(p) | ||||
| 	if err != nil { | ||||
| 		if !os.IsNotExist(err) { | ||||
| 			return nil, err | ||||
| 		} | ||||
|  | ||||
| 		return nil, errors.Wrap(errdefs.ErrNotFound, "blob not found") | ||||
| 	} | ||||
|  | ||||
| 	fp, err := os.Open(p) | ||||
| 	if err != nil { | ||||
| 		if !os.IsNotExist(err) { | ||||
| 			return nil, err | ||||
| 		} | ||||
|  | ||||
| 		return nil, errors.Wrap(errdefs.ErrNotFound, "blob not found") | ||||
| 	} | ||||
|  | ||||
| 	return sizeReaderAt{size: fi.Size(), fp: fp}, nil | ||||
| } | ||||
|  | ||||
| func (ra sizeReaderAt) ReadAt(p []byte, offset int64) (int, error) { | ||||
| 	return ra.fp.ReadAt(p, offset) | ||||
| } | ||||
|   | ||||
							
								
								
									
										36
									
								
								vendor/github.com/containerd/containerd/content/local/store.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										36
									
								
								vendor/github.com/containerd/containerd/content/local/store.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -131,25 +131,13 @@ func (s *store) ReaderAt(ctx context.Context, desc ocispec.Descriptor) (content. | ||||
| 	if err != nil { | ||||
| 		return nil, errors.Wrapf(err, "calculating blob path for ReaderAt") | ||||
| 	} | ||||
| 	fi, err := os.Stat(p) | ||||
| 	if err != nil { | ||||
| 		if !os.IsNotExist(err) { | ||||
| 			return nil, err | ||||
| 		} | ||||
|  | ||||
| 		return nil, errors.Wrapf(errdefs.ErrNotFound, "blob %s expected at %s", desc.Digest, p) | ||||
| 	reader, err := OpenReader(p) | ||||
| 	if err != nil { | ||||
| 		return nil, errors.Wrapf(err, "blob %s expected at %s", desc.Digest, p) | ||||
| 	} | ||||
|  | ||||
| 	fp, err := os.Open(p) | ||||
| 	if err != nil { | ||||
| 		if !os.IsNotExist(err) { | ||||
| 			return nil, err | ||||
| 		} | ||||
|  | ||||
| 		return nil, errors.Wrapf(errdefs.ErrNotFound, "blob %s expected at %s", desc.Digest, p) | ||||
| 	} | ||||
|  | ||||
| 	return sizeReaderAt{size: fi.Size(), fp: fp}, nil | ||||
| 	return reader, nil | ||||
| } | ||||
|  | ||||
| // Delete removes a blob by its digest. | ||||
| @@ -240,9 +228,14 @@ func (s *store) Update(ctx context.Context, info content.Info, fieldpaths ...str | ||||
| 	return info, nil | ||||
| } | ||||
|  | ||||
| func (s *store) Walk(ctx context.Context, fn content.WalkFunc, filters ...string) error { | ||||
| 	// TODO: Support filters | ||||
| func (s *store) Walk(ctx context.Context, fn content.WalkFunc, fs ...string) error { | ||||
| 	root := filepath.Join(s.root, "blobs") | ||||
|  | ||||
| 	filter, err := filters.ParseAll(fs...) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	var alg digest.Algorithm | ||||
| 	return filepath.Walk(root, func(path string, fi os.FileInfo, err error) error { | ||||
| 		if err != nil { | ||||
| @@ -286,7 +279,12 @@ func (s *store) Walk(ctx context.Context, fn content.WalkFunc, filters ...string | ||||
| 				return err | ||||
| 			} | ||||
| 		} | ||||
| 		return fn(s.info(dgst, fi, labels)) | ||||
|  | ||||
| 		info := s.info(dgst, fi, labels) | ||||
| 		if !filter.Match(content.AdaptInfo(info)) { | ||||
| 			return nil | ||||
| 		} | ||||
| 		return fn(info) | ||||
| 	}) | ||||
| } | ||||
|  | ||||
|   | ||||
							
								
								
									
										2
									
								
								vendor/github.com/containerd/containerd/content/local/store_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/containerd/containerd/content/local/store_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,4 +1,4 @@ | ||||
| // +build linux solaris darwin freebsd netbsd | ||||
| // +build linux solaris darwin freebsd netbsd openbsd | ||||
|  | ||||
| /* | ||||
|    Copyright The containerd Authors. | ||||
|   | ||||
							
								
								
									
										80
									
								
								vendor/github.com/containerd/containerd/images/diffid.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								vendor/github.com/containerd/containerd/images/diffid.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,80 @@ | ||||
| /* | ||||
|    Copyright The containerd Authors. | ||||
|  | ||||
|    Licensed under the Apache License, Version 2.0 (the "License"); | ||||
|    you may not use this file except in compliance with the License. | ||||
|    You may obtain a copy of the License at | ||||
|  | ||||
|        http://www.apache.org/licenses/LICENSE-2.0 | ||||
|  | ||||
|    Unless required by applicable law or agreed to in writing, software | ||||
|    distributed under the License is distributed on an "AS IS" BASIS, | ||||
|    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
|    See the License for the specific language governing permissions and | ||||
|    limitations under the License. | ||||
| */ | ||||
|  | ||||
| package images | ||||
|  | ||||
| import ( | ||||
| 	"compress/gzip" | ||||
| 	"context" | ||||
| 	"io" | ||||
|  | ||||
| 	"github.com/containerd/containerd/content" | ||||
| 	"github.com/containerd/containerd/labels" | ||||
| 	"github.com/opencontainers/go-digest" | ||||
| 	ocispec "github.com/opencontainers/image-spec/specs-go/v1" | ||||
| 	"github.com/sirupsen/logrus" | ||||
| ) | ||||
|  | ||||
| // GetDiffID gets the diff ID of the layer blob descriptor. | ||||
| func GetDiffID(ctx context.Context, cs content.Store, desc ocispec.Descriptor) (digest.Digest, error) { | ||||
| 	switch desc.MediaType { | ||||
| 	case | ||||
| 		// If the layer is already uncompressed, we can just return its digest | ||||
| 		MediaTypeDockerSchema2Layer, | ||||
| 		ocispec.MediaTypeImageLayer, | ||||
| 		MediaTypeDockerSchema2LayerForeign, | ||||
| 		ocispec.MediaTypeImageLayerNonDistributable: | ||||
| 		return desc.Digest, nil | ||||
| 	} | ||||
| 	info, err := cs.Info(ctx, desc.Digest) | ||||
| 	if err != nil { | ||||
| 		return "", err | ||||
| 	} | ||||
| 	v, ok := info.Labels[labels.LabelUncompressed] | ||||
| 	if ok { | ||||
| 		// Fast path: if the image is already unpacked, we can use the label value | ||||
| 		return digest.Parse(v) | ||||
| 	} | ||||
| 	// if the image is not unpacked, we may not have the label | ||||
| 	ra, err := cs.ReaderAt(ctx, desc) | ||||
| 	if err != nil { | ||||
| 		return "", err | ||||
| 	} | ||||
| 	defer ra.Close() | ||||
| 	r := content.NewReader(ra) | ||||
| 	gzR, err := gzip.NewReader(r) | ||||
| 	if err != nil { | ||||
| 		return "", err | ||||
| 	} | ||||
| 	digester := digest.Canonical.Digester() | ||||
| 	hashW := digester.Hash() | ||||
| 	if _, err := io.Copy(hashW, gzR); err != nil { | ||||
| 		return "", err | ||||
| 	} | ||||
| 	if err := ra.Close(); err != nil { | ||||
| 		return "", err | ||||
| 	} | ||||
| 	digest := digester.Digest() | ||||
| 	// memorize the computed value | ||||
| 	if info.Labels == nil { | ||||
| 		info.Labels = make(map[string]string) | ||||
| 	} | ||||
| 	info.Labels[labels.LabelUncompressed] = digest.String() | ||||
| 	if _, err := cs.Update(ctx, info, "labels"); err != nil { | ||||
| 		logrus.WithError(err).Warnf("failed to set %s label for %s", labels.LabelUncompressed, desc.Digest) | ||||
| 	} | ||||
| 	return digest, nil | ||||
| } | ||||
							
								
								
									
										2
									
								
								vendor/github.com/containerd/containerd/images/image.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/containerd/containerd/images/image.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -289,7 +289,7 @@ func Platforms(ctx context.Context, provider content.Provider, image ocispec.Des | ||||
| // If available is true, the caller can assume that required represents the | ||||
| // complete set of content required for the image. | ||||
| // | ||||
| // missing will have the components that are part of required but not avaiiable | ||||
| // missing will have the components that are part of required but not available | ||||
| // in the provider. | ||||
| // | ||||
| // If there is a problem resolving content, an error will be returned. | ||||
|   | ||||
							
								
								
									
										50
									
								
								vendor/github.com/containerd/containerd/images/mediatypes.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										50
									
								
								vendor/github.com/containerd/containerd/images/mediatypes.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -78,6 +78,8 @@ func DiffCompression(ctx context.Context, mediaType string) (string, error) { | ||||
| 			switch ext[len(ext)-1] { | ||||
| 			case "gzip": | ||||
| 				return "gzip", nil | ||||
| 			case "zstd": | ||||
| 				return "zstd", nil | ||||
| 			} | ||||
| 		} | ||||
| 		return "", nil | ||||
| @@ -100,7 +102,13 @@ func parseMediaTypes(mt string) (string, []string) { | ||||
| 	return s[0], ext | ||||
| } | ||||
|  | ||||
| // IsLayerTypes returns true if the media type is a layer | ||||
| // IsNonDistributable returns true if the media type is non-distributable. | ||||
| func IsNonDistributable(mt string) bool { | ||||
| 	return strings.HasPrefix(mt, "application/vnd.oci.image.layer.nondistributable.") || | ||||
| 		strings.HasPrefix(mt, "application/vnd.docker.image.rootfs.foreign.") | ||||
| } | ||||
|  | ||||
| // IsLayerType returns true if the media type is a layer | ||||
| func IsLayerType(mt string) bool { | ||||
| 	if strings.HasPrefix(mt, "application/vnd.oci.image.layer.") { | ||||
| 		return true | ||||
| @@ -116,7 +124,45 @@ func IsLayerType(mt string) bool { | ||||
| 	return false | ||||
| } | ||||
|  | ||||
| // IsKnownConfig returns true if the media type is a known config type | ||||
| // IsDockerType returns true if the media type has "application/vnd.docker." prefix | ||||
| func IsDockerType(mt string) bool { | ||||
| 	return strings.HasPrefix(mt, "application/vnd.docker.") | ||||
| } | ||||
|  | ||||
| // IsManifestType returns true if the media type is an OCI-compatible manifest. | ||||
| // No support for schema1 manifest. | ||||
| func IsManifestType(mt string) bool { | ||||
| 	switch mt { | ||||
| 	case MediaTypeDockerSchema2Manifest, ocispec.MediaTypeImageManifest: | ||||
| 		return true | ||||
| 	default: | ||||
| 		return false | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // IsIndexType returns true if the media type is an OCI-compatible index. | ||||
| func IsIndexType(mt string) bool { | ||||
| 	switch mt { | ||||
| 	case ocispec.MediaTypeImageIndex, MediaTypeDockerSchema2ManifestList: | ||||
| 		return true | ||||
| 	default: | ||||
| 		return false | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // IsConfigType returns true if the media type is an OCI-compatible image config. | ||||
| // No support for containerd checkpoint configs. | ||||
| func IsConfigType(mt string) bool { | ||||
| 	switch mt { | ||||
| 	case MediaTypeDockerSchema2Config, ocispec.MediaTypeImageConfig: | ||||
| 		return true | ||||
| 	default: | ||||
| 		return false | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // IsKnownConfig returns true if the media type is a known config type, | ||||
| // including containerd checkpoint configs | ||||
| func IsKnownConfig(mt string) bool { | ||||
| 	switch mt { | ||||
| 	case MediaTypeDockerSchema2Config, ocispec.MediaTypeImageConfig, | ||||
|   | ||||
							
								
								
									
										21
									
								
								vendor/github.com/containerd/containerd/labels/labels.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								vendor/github.com/containerd/containerd/labels/labels.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| /* | ||||
|    Copyright The containerd Authors. | ||||
|  | ||||
|    Licensed under the Apache License, Version 2.0 (the "License"); | ||||
|    you may not use this file except in compliance with the License. | ||||
|    You may obtain a copy of the License at | ||||
|  | ||||
|        http://www.apache.org/licenses/LICENSE-2.0 | ||||
|  | ||||
|    Unless required by applicable law or agreed to in writing, software | ||||
|    distributed under the License is distributed on an "AS IS" BASIS, | ||||
|    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
|    See the License for the specific language governing permissions and | ||||
|    limitations under the License. | ||||
| */ | ||||
|  | ||||
| package labels | ||||
|  | ||||
| // LabelUncompressed is added to compressed layer contents. | ||||
| // The value is digest of the uncompressed content. | ||||
| const LabelUncompressed = "containerd.io/uncompressed" | ||||
							
								
								
									
										14
									
								
								vendor/github.com/containerd/containerd/log/context.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								vendor/github.com/containerd/containerd/log/context.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -37,9 +37,17 @@ type ( | ||||
| 	loggerKey struct{} | ||||
| ) | ||||
|  | ||||
| // RFC3339NanoFixed is time.RFC3339Nano with nanoseconds padded using zeros to | ||||
| // ensure the formatted time is always the same number of characters. | ||||
| const RFC3339NanoFixed = "2006-01-02T15:04:05.000000000Z07:00" | ||||
| const ( | ||||
| 	// RFC3339NanoFixed is time.RFC3339Nano with nanoseconds padded using zeros to | ||||
| 	// ensure the formatted time is always the same number of characters. | ||||
| 	RFC3339NanoFixed = "2006-01-02T15:04:05.000000000Z07:00" | ||||
|  | ||||
| 	// TextFormat represents the text logging format | ||||
| 	TextFormat = "text" | ||||
|  | ||||
| 	// JSONFormat represents the JSON logging format | ||||
| 	JSONFormat = "json" | ||||
| ) | ||||
|  | ||||
| // WithLogger returns a new context with the provided logger. Use in | ||||
| // combination with logger.WithField(s) for great effect. | ||||
|   | ||||
							
								
								
									
										166
									
								
								vendor/github.com/containerd/containerd/platforms/compare.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										166
									
								
								vendor/github.com/containerd/containerd/platforms/compare.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -16,7 +16,12 @@ | ||||
|  | ||||
| package platforms | ||||
|  | ||||
| import specs "github.com/opencontainers/image-spec/specs-go/v1" | ||||
| import ( | ||||
| 	"strconv" | ||||
| 	"strings" | ||||
|  | ||||
| 	specs "github.com/opencontainers/image-spec/specs-go/v1" | ||||
| ) | ||||
|  | ||||
| // MatchComparer is able to match and compare platforms to | ||||
| // filter and sort platforms. | ||||
| @@ -26,103 +31,70 @@ type MatchComparer interface { | ||||
| 	Less(specs.Platform, specs.Platform) bool | ||||
| } | ||||
|  | ||||
| // platformVector returns an (ordered) vector of appropriate specs.Platform | ||||
| // objects to try matching for the given platform object (see platforms.Only). | ||||
| func platformVector(platform specs.Platform) []specs.Platform { | ||||
| 	vector := []specs.Platform{platform} | ||||
|  | ||||
| 	switch platform.Architecture { | ||||
| 	case "amd64": | ||||
| 		vector = append(vector, specs.Platform{ | ||||
| 			Architecture: "386", | ||||
| 			OS:           platform.OS, | ||||
| 			OSVersion:    platform.OSVersion, | ||||
| 			OSFeatures:   platform.OSFeatures, | ||||
| 			Variant:      platform.Variant, | ||||
| 		}) | ||||
| 	case "arm": | ||||
| 		if armVersion, err := strconv.Atoi(strings.TrimPrefix(platform.Variant, "v")); err == nil && armVersion > 5 { | ||||
| 			for armVersion--; armVersion >= 5; armVersion-- { | ||||
| 				vector = append(vector, specs.Platform{ | ||||
| 					Architecture: platform.Architecture, | ||||
| 					OS:           platform.OS, | ||||
| 					OSVersion:    platform.OSVersion, | ||||
| 					OSFeatures:   platform.OSFeatures, | ||||
| 					Variant:      "v" + strconv.Itoa(armVersion), | ||||
| 				}) | ||||
| 			} | ||||
| 		} | ||||
| 	case "arm64": | ||||
| 		variant := platform.Variant | ||||
| 		if variant == "" { | ||||
| 			variant = "v8" | ||||
| 		} | ||||
| 		vector = append(vector, platformVector(specs.Platform{ | ||||
| 			Architecture: "arm", | ||||
| 			OS:           platform.OS, | ||||
| 			OSVersion:    platform.OSVersion, | ||||
| 			OSFeatures:   platform.OSFeatures, | ||||
| 			Variant:      variant, | ||||
| 		})...) | ||||
| 	} | ||||
|  | ||||
| 	return vector | ||||
| } | ||||
|  | ||||
| // Only returns a match comparer for a single platform | ||||
| // using default resolution logic for the platform. | ||||
| // | ||||
| // For ARMv8, will also match ARMv7, ARMv6 and ARMv5 (for 32bit runtimes) | ||||
| // For ARMv7, will also match ARMv6 and ARMv5 | ||||
| // For ARMv6, will also match ARMv5 | ||||
| // For arm/v8, will also match arm/v7, arm/v6 and arm/v5 | ||||
| // For arm/v7, will also match arm/v6 and arm/v5 | ||||
| // For arm/v6, will also match arm/v5 | ||||
| // For amd64, will also match 386 | ||||
| func Only(platform specs.Platform) MatchComparer { | ||||
| 	platform = Normalize(platform) | ||||
| 	if platform.Architecture == "arm" { | ||||
| 		if platform.Variant == "v8" { | ||||
| 			return orderedPlatformComparer{ | ||||
| 				matchers: []Matcher{ | ||||
| 					&matcher{ | ||||
| 						Platform: platform, | ||||
| 					}, | ||||
| 					&matcher{ | ||||
| 						Platform: specs.Platform{ | ||||
| 							Architecture: platform.Architecture, | ||||
| 							OS:           platform.OS, | ||||
| 							OSVersion:    platform.OSVersion, | ||||
| 							OSFeatures:   platform.OSFeatures, | ||||
| 							Variant:      "v7", | ||||
| 						}, | ||||
| 					}, | ||||
| 					&matcher{ | ||||
| 						Platform: specs.Platform{ | ||||
| 							Architecture: platform.Architecture, | ||||
| 							OS:           platform.OS, | ||||
| 							OSVersion:    platform.OSVersion, | ||||
| 							OSFeatures:   platform.OSFeatures, | ||||
| 							Variant:      "v6", | ||||
| 						}, | ||||
| 					}, | ||||
| 					&matcher{ | ||||
| 						Platform: specs.Platform{ | ||||
| 							Architecture: platform.Architecture, | ||||
| 							OS:           platform.OS, | ||||
| 							OSVersion:    platform.OSVersion, | ||||
| 							OSFeatures:   platform.OSFeatures, | ||||
| 							Variant:      "v5", | ||||
| 						}, | ||||
| 					}, | ||||
| 				}, | ||||
| 			} | ||||
| 		} | ||||
| 		if platform.Variant == "v7" { | ||||
| 			return orderedPlatformComparer{ | ||||
| 				matchers: []Matcher{ | ||||
| 					&matcher{ | ||||
| 						Platform: platform, | ||||
| 					}, | ||||
| 					&matcher{ | ||||
| 						Platform: specs.Platform{ | ||||
| 							Architecture: platform.Architecture, | ||||
| 							OS:           platform.OS, | ||||
| 							OSVersion:    platform.OSVersion, | ||||
| 							OSFeatures:   platform.OSFeatures, | ||||
| 							Variant:      "v6", | ||||
| 						}, | ||||
| 					}, | ||||
| 					&matcher{ | ||||
| 						Platform: specs.Platform{ | ||||
| 							Architecture: platform.Architecture, | ||||
| 							OS:           platform.OS, | ||||
| 							OSVersion:    platform.OSVersion, | ||||
| 							OSFeatures:   platform.OSFeatures, | ||||
| 							Variant:      "v5", | ||||
| 						}, | ||||
| 					}, | ||||
| 				}, | ||||
| 			} | ||||
| 		} | ||||
| 		if platform.Variant == "v6" { | ||||
| 			return orderedPlatformComparer{ | ||||
| 				matchers: []Matcher{ | ||||
| 					&matcher{ | ||||
| 						Platform: platform, | ||||
| 					}, | ||||
| 					&matcher{ | ||||
| 						Platform: specs.Platform{ | ||||
| 							Architecture: platform.Architecture, | ||||
| 							OS:           platform.OS, | ||||
| 							OSVersion:    platform.OSVersion, | ||||
| 							OSFeatures:   platform.OSFeatures, | ||||
| 							Variant:      "v5", | ||||
| 						}, | ||||
| 					}, | ||||
| 				}, | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	return Ordered(platformVector(Normalize(platform))...) | ||||
| } | ||||
|  | ||||
| 	return singlePlatformComparer{ | ||||
| 		Matcher: &matcher{ | ||||
| 			Platform: platform, | ||||
| 		}, | ||||
| 	} | ||||
| // OnlyStrict returns a match comparer for a single platform. | ||||
| // | ||||
| // Unlike Only, OnlyStrict does not match sub platforms. | ||||
| // So, "arm/vN" will not match "arm/vM" where M < N, | ||||
| // and "amd64" will not also match "386". | ||||
| // | ||||
| // OnlyStrict matches non-canonical forms. | ||||
| // So, "arm64" matches "arm/64/v8". | ||||
| func OnlyStrict(platform specs.Platform) MatchComparer { | ||||
| 	return Ordered(Normalize(platform)) | ||||
| } | ||||
|  | ||||
| // Ordered returns a platform MatchComparer which matches any of the platforms | ||||
| @@ -153,14 +125,6 @@ func Any(platforms ...specs.Platform) MatchComparer { | ||||
| // with preference for ordering. | ||||
| var All MatchComparer = allPlatformComparer{} | ||||
|  | ||||
| type singlePlatformComparer struct { | ||||
| 	Matcher | ||||
| } | ||||
|  | ||||
| func (c singlePlatformComparer) Less(p1, p2 specs.Platform) bool { | ||||
| 	return c.Match(p1) && !c.Match(p2) | ||||
| } | ||||
|  | ||||
| type orderedPlatformComparer struct { | ||||
| 	matchers []Matcher | ||||
| } | ||||
|   | ||||
							
								
								
									
										26
									
								
								vendor/github.com/containerd/containerd/platforms/cpuinfo.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										26
									
								
								vendor/github.com/containerd/containerd/platforms/cpuinfo.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -21,6 +21,7 @@ import ( | ||||
| 	"os" | ||||
| 	"runtime" | ||||
| 	"strings" | ||||
| 	"sync" | ||||
|  | ||||
| 	"github.com/containerd/containerd/errdefs" | ||||
| 	"github.com/containerd/containerd/log" | ||||
| @@ -28,14 +29,18 @@ import ( | ||||
| ) | ||||
|  | ||||
| // Present the ARM instruction set architecture, eg: v7, v8 | ||||
| var cpuVariant string | ||||
| // Don't use this value directly; call cpuVariant() instead. | ||||
| var cpuVariantValue string | ||||
|  | ||||
| func init() { | ||||
| 	if isArmArch(runtime.GOARCH) { | ||||
| 		cpuVariant = getCPUVariant() | ||||
| 	} else { | ||||
| 		cpuVariant = "" | ||||
| 	} | ||||
| var cpuVariantOnce sync.Once | ||||
|  | ||||
| func cpuVariant() string { | ||||
| 	cpuVariantOnce.Do(func() { | ||||
| 		if isArmArch(runtime.GOARCH) { | ||||
| 			cpuVariantValue = getCPUVariant() | ||||
| 		} | ||||
| 	}) | ||||
| 	return cpuVariantValue | ||||
| } | ||||
|  | ||||
| // For Linux, the kernel has already detected the ABI, ISA and Features. | ||||
| @@ -107,12 +112,7 @@ func getCPUVariant() string { | ||||
|  | ||||
| 	switch strings.ToLower(variant) { | ||||
| 	case "8", "aarch64": | ||||
| 		// special case: if running a 32-bit userspace on aarch64, the variant should be "v7" | ||||
| 		if runtime.GOARCH == "arm" { | ||||
| 			variant = "v7" | ||||
| 		} else { | ||||
| 			variant = "v8" | ||||
| 		} | ||||
| 		variant = "v8" | ||||
| 	case "7", "7m", "?(12)", "?(13)", "?(14)", "?(15)", "?(16)", "?(17)": | ||||
| 		variant = "v7" | ||||
| 	case "6", "6tej": | ||||
|   | ||||
							
								
								
									
										7
									
								
								vendor/github.com/containerd/containerd/platforms/defaults.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								vendor/github.com/containerd/containerd/platforms/defaults.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -33,6 +33,11 @@ func DefaultSpec() specs.Platform { | ||||
| 		OS:           runtime.GOOS, | ||||
| 		Architecture: runtime.GOARCH, | ||||
| 		// The Variant field will be empty if arch != ARM. | ||||
| 		Variant: cpuVariant, | ||||
| 		Variant: cpuVariant(), | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // DefaultStrict returns strict form of Default. | ||||
| func DefaultStrict() MatchComparer { | ||||
| 	return OnlyStrict(DefaultSpec()) | ||||
| } | ||||
|   | ||||
							
								
								
									
										4
									
								
								vendor/github.com/containerd/containerd/platforms/defaults_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/containerd/containerd/platforms/defaults_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -19,6 +19,8 @@ | ||||
| package platforms | ||||
|  | ||||
| import ( | ||||
| 	"runtime" | ||||
|  | ||||
| 	specs "github.com/opencontainers/image-spec/specs-go/v1" | ||||
| ) | ||||
|  | ||||
| @@ -26,6 +28,6 @@ import ( | ||||
| func Default() MatchComparer { | ||||
| 	return Ordered(DefaultSpec(), specs.Platform{ | ||||
| 		OS:           "linux", | ||||
| 		Architecture: "amd64", | ||||
| 		Architecture: runtime.GOARCH, | ||||
| 	}) | ||||
| } | ||||
|   | ||||
							
								
								
									
										4
									
								
								vendor/github.com/containerd/containerd/platforms/platforms.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/containerd/containerd/platforms/platforms.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -189,8 +189,8 @@ func Parse(specifier string) (specs.Platform, error) { | ||||
| 		if isKnownOS(p.OS) { | ||||
| 			// picks a default architecture | ||||
| 			p.Architecture = runtime.GOARCH | ||||
| 			if p.Architecture == "arm" && cpuVariant != "v7" { | ||||
| 				p.Variant = cpuVariant | ||||
| 			if p.Architecture == "arm" && cpuVariant() != "v7" { | ||||
| 				p.Variant = cpuVariant() | ||||
| 			} | ||||
|  | ||||
| 			return p, nil | ||||
|   | ||||
							
								
								
									
										4
									
								
								vendor/github.com/containerd/containerd/reference/reference.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/containerd/containerd/reference/reference.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -85,6 +85,10 @@ var splitRe = regexp.MustCompile(`[:@]`) | ||||
|  | ||||
| // Parse parses the string into a structured ref. | ||||
| func Parse(s string) (Spec, error) { | ||||
| 	if strings.Contains(s, "://") { | ||||
| 		return Spec{}, ErrInvalid | ||||
| 	} | ||||
|  | ||||
| 	u, err := url.Parse("dummy://" + s) | ||||
| 	if err != nil { | ||||
| 		return Spec{}, err | ||||
|   | ||||
							
								
								
									
										2
									
								
								vendor/github.com/containerd/containerd/remotes/docker/auth/fetch.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/containerd/containerd/remotes/docker/auth/fetch.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -65,7 +65,7 @@ func GenerateTokenOptions(ctx context.Context, host, username, secret string, c | ||||
| 	return to, nil | ||||
| } | ||||
|  | ||||
| // TokenOptions are optios for requesting a token | ||||
| // TokenOptions are options for requesting a token | ||||
| type TokenOptions struct { | ||||
| 	Realm    string | ||||
| 	Service  string | ||||
|   | ||||
							
								
								
									
										2
									
								
								vendor/github.com/containerd/containerd/remotes/docker/errcode.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/containerd/containerd/remotes/docker/errcode.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -163,7 +163,7 @@ type ErrorDescriptor struct { | ||||
| 	// keyed value when serializing api errors. | ||||
| 	Value string | ||||
|  | ||||
| 	// Message is a short, human readable decription of the error condition | ||||
| 	// Message is a short, human readable description of the error condition | ||||
| 	// included in API responses. | ||||
| 	Message string | ||||
|  | ||||
|   | ||||
							
								
								
									
										4
									
								
								vendor/github.com/containerd/containerd/remotes/docker/pusher.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/containerd/containerd/remotes/docker/pusher.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -138,7 +138,7 @@ func (p dockerPusher) Push(ctx context.Context, desc ocispec.Descriptor) (conten | ||||
| 			// | ||||
| 			// for the private repo, we should remove mount-from | ||||
| 			// query and send the request again. | ||||
| 			resp, err = preq.do(pctx) | ||||
| 			resp, err = preq.doWithRetries(pctx, nil) | ||||
| 			if err != nil { | ||||
| 				return nil, err | ||||
| 			} | ||||
| @@ -238,7 +238,7 @@ func (p dockerPusher) Push(ctx context.Context, desc ocispec.Descriptor) (conten | ||||
|  | ||||
| 	go func() { | ||||
| 		defer close(respC) | ||||
| 		resp, err := req.do(ctx) | ||||
| 		resp, err := req.doWithRetries(ctx, nil) | ||||
| 		if err != nil { | ||||
| 			respC <- response{err: err} | ||||
| 			pr.CloseWithError(err) | ||||
|   | ||||
							
								
								
									
										46
									
								
								vendor/github.com/containerd/containerd/remotes/docker/resolver.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										46
									
								
								vendor/github.com/containerd/containerd/remotes/docker/resolver.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -219,20 +219,15 @@ func (r *countingReader) Read(p []byte) (int, error) { | ||||
| var _ remotes.Resolver = &dockerResolver{} | ||||
|  | ||||
| func (r *dockerResolver) Resolve(ctx context.Context, ref string) (string, ocispec.Descriptor, error) { | ||||
| 	refspec, err := reference.Parse(ref) | ||||
| 	base, err := r.resolveDockerBase(ref) | ||||
| 	if err != nil { | ||||
| 		return "", ocispec.Descriptor{}, err | ||||
| 	} | ||||
|  | ||||
| 	refspec := base.refspec | ||||
| 	if refspec.Object == "" { | ||||
| 		return "", ocispec.Descriptor{}, reference.ErrObjectRequired | ||||
| 	} | ||||
|  | ||||
| 	base, err := r.base(refspec) | ||||
| 	if err != nil { | ||||
| 		return "", ocispec.Descriptor{}, err | ||||
| 	} | ||||
|  | ||||
| 	var ( | ||||
| 		lastErr error | ||||
| 		paths   [][]string | ||||
| @@ -387,12 +382,7 @@ func (r *dockerResolver) Resolve(ctx context.Context, ref string) (string, ocisp | ||||
| } | ||||
|  | ||||
| func (r *dockerResolver) Fetcher(ctx context.Context, ref string) (remotes.Fetcher, error) { | ||||
| 	refspec, err := reference.Parse(ref) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	base, err := r.base(refspec) | ||||
| 	base, err := r.resolveDockerBase(ref) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| @@ -403,23 +393,27 @@ func (r *dockerResolver) Fetcher(ctx context.Context, ref string) (remotes.Fetch | ||||
| } | ||||
|  | ||||
| func (r *dockerResolver) Pusher(ctx context.Context, ref string) (remotes.Pusher, error) { | ||||
| 	refspec, err := reference.Parse(ref) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	base, err := r.base(refspec) | ||||
| 	base, err := r.resolveDockerBase(ref) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	return dockerPusher{ | ||||
| 		dockerBase: base, | ||||
| 		object:     refspec.Object, | ||||
| 		object:     base.refspec.Object, | ||||
| 		tracker:    r.tracker, | ||||
| 	}, nil | ||||
| } | ||||
|  | ||||
| func (r *dockerResolver) resolveDockerBase(ref string) (*dockerBase, error) { | ||||
| 	refspec, err := reference.Parse(ref) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	return r.base(refspec) | ||||
| } | ||||
|  | ||||
| type dockerBase struct { | ||||
| 	refspec    reference.Spec | ||||
| 	repository string | ||||
| @@ -451,10 +445,11 @@ func (r *dockerBase) filterHosts(caps HostCapabilities) (hosts []RegistryHost) { | ||||
| } | ||||
|  | ||||
| func (r *dockerBase) request(host RegistryHost, method string, ps ...string) *request { | ||||
| 	header := http.Header{} | ||||
| 	for key, value := range r.header { | ||||
| 		header[key] = append(header[key], value...) | ||||
| 	header := r.header.Clone() | ||||
| 	if header == nil { | ||||
| 		header = http.Header{} | ||||
| 	} | ||||
|  | ||||
| 	for key, value := range host.Header { | ||||
| 		header[key] = append(header[key], value...) | ||||
| 	} | ||||
| @@ -521,7 +516,10 @@ func (r *request) do(ctx context.Context) (*http.Response, error) { | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	req.Header = r.header | ||||
| 	req.Header = http.Header{} // headers need to be copied to avoid concurrent map access | ||||
| 	for k, v := range r.header { | ||||
| 		req.Header[k] = v | ||||
| 	} | ||||
| 	if r.body != nil { | ||||
| 		body, err := r.body() | ||||
| 		if err != nil { | ||||
|   | ||||
							
								
								
									
										8
									
								
								vendor/github.com/containerd/containerd/sys/oom_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								vendor/github.com/containerd/containerd/sys/oom_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -26,8 +26,12 @@ import ( | ||||
| 	"strings" | ||||
| ) | ||||
|  | ||||
| // OOMScoreMaxKillable is the maximum score keeping the process killable by the oom killer | ||||
| const OOMScoreMaxKillable = -999 | ||||
| const ( | ||||
| 	// OOMScoreMaxKillable is the maximum score keeping the process killable by the oom killer | ||||
| 	OOMScoreMaxKillable = -999 | ||||
| 	// OOMScoreAdjMax is from OOM_SCORE_ADJ_MAX https://github.com/torvalds/linux/blob/master/include/uapi/linux/oom.h | ||||
| 	OOMScoreAdjMax = 1000 | ||||
| ) | ||||
|  | ||||
| // SetOOMScore sets the oom score for the provided pid | ||||
| func SetOOMScore(pid, score int) error { | ||||
|   | ||||
							
								
								
									
										5
									
								
								vendor/github.com/containerd/containerd/sys/oom_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/github.com/containerd/containerd/sys/oom_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -16,6 +16,11 @@ | ||||
|  | ||||
| package sys | ||||
|  | ||||
| const ( | ||||
| 	// OOMScoreAdjMax is not implemented on Windows | ||||
| 	OOMScoreAdjMax = 0 | ||||
| ) | ||||
|  | ||||
| // SetOOMScore sets the oom score for the process | ||||
| // | ||||
| // Not implemented on Windows | ||||
|   | ||||
							
								
								
									
										45
									
								
								vendor/github.com/containerd/containerd/sys/stat_openbsd.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								vendor/github.com/containerd/containerd/sys/stat_openbsd.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,45 @@ | ||||
| // +build openbsd | ||||
|  | ||||
| /* | ||||
|    Copyright The containerd Authors. | ||||
|  | ||||
|    Licensed under the Apache License, Version 2.0 (the "License"); | ||||
|    you may not use this file except in compliance with the License. | ||||
|    You may obtain a copy of the License at | ||||
|  | ||||
|        http://www.apache.org/licenses/LICENSE-2.0 | ||||
|  | ||||
|    Unless required by applicable law or agreed to in writing, software | ||||
|    distributed under the License is distributed on an "AS IS" BASIS, | ||||
|    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
|    See the License for the specific language governing permissions and | ||||
|    limitations under the License. | ||||
| */ | ||||
|  | ||||
| package sys | ||||
|  | ||||
| import ( | ||||
| 	"syscall" | ||||
| 	"time" | ||||
| ) | ||||
|  | ||||
| // StatAtime returns the Atim | ||||
| func StatAtime(st *syscall.Stat_t) syscall.Timespec { | ||||
| 	return st.Atim | ||||
| } | ||||
|  | ||||
| // StatCtime returns the Ctim | ||||
| func StatCtime(st *syscall.Stat_t) syscall.Timespec { | ||||
| 	return st.Ctim | ||||
| } | ||||
|  | ||||
| // StatMtime returns the Mtim | ||||
| func StatMtime(st *syscall.Stat_t) syscall.Timespec { | ||||
| 	return st.Mtim | ||||
| } | ||||
|  | ||||
| // StatATimeAsTime returns st.Atim as a time.Time | ||||
| func StatATimeAsTime(st *syscall.Stat_t) time.Time { | ||||
| 	// The int64 conversions ensure the line compiles for 32-bit systems as well. | ||||
| 	return time.Unix(int64(st.Atim.Sec), int64(st.Atim.Nsec)) // nolint: unconvert | ||||
| } | ||||
							
								
								
									
										2
									
								
								vendor/github.com/containerd/containerd/version/version.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/containerd/containerd/version/version.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -23,7 +23,7 @@ var ( | ||||
| 	Package = "github.com/containerd/containerd" | ||||
|  | ||||
| 	// Version holds the complete version number. Filled in at linking time. | ||||
| 	Version = "1.4.0+unknown" | ||||
| 	Version = "1.5.0-beta.3+unknown" | ||||
|  | ||||
| 	// Revision is filled with the VCS (e.g. git) revision being used to build | ||||
| 	// the program at linking time. | ||||
|   | ||||
							
								
								
									
										4
									
								
								vendor/github.com/containerd/continuity/AUTHORS
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/containerd/continuity/AUTHORS
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -19,11 +19,15 @@ Justin Cummins <sul3n3t@gmail.com> | ||||
| Kasper Fabæch Brandt <poizan@poizan.dk> | ||||
| Kir Kolyshkin <kolyshkin@gmail.com> | ||||
| Michael Crosby <crosbymichael@gmail.com> | ||||
| Michael Crosby <michael@thepasture.io> | ||||
| Michael Wan <zirenwan@gmail.com> | ||||
| Mike Brown <brownwm@us.ibm.com> | ||||
| Niels de Vos <ndevos@redhat.com> | ||||
| Phil Estes <estesp@gmail.com> | ||||
| Phil Estes <estesp@linux.vnet.ibm.com> | ||||
| Samuel Karp <me@samuelkarp.com> | ||||
| Sam Whited <sam@samwhited.com> | ||||
| Sebastiaan van Stijn <github@gone.nl> | ||||
| Shengjing Zhu <zhsj@debian.org> | ||||
| Stephen J Day <stephen.day@docker.com> | ||||
| Tibor Vass <tibor@docker.com> | ||||
|   | ||||
							
								
								
									
										5
									
								
								vendor/github.com/gogo/googleapis/google/rpc/code.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/github.com/gogo/googleapis/google/rpc/code.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -21,7 +21,7 @@ var _ = math.Inf | ||||
| // proto package needs to be updated. | ||||
| const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package | ||||
|  | ||||
| // The canonical error codes for Google APIs. | ||||
| // The canonical error codes for gRPC APIs. | ||||
| // | ||||
| // | ||||
| // Sometimes multiple error codes may apply.  Services should return | ||||
| @@ -156,7 +156,8 @@ const ( | ||||
| 	INTERNAL Code = 13 | ||||
| 	// The service is currently unavailable.  This is most likely a | ||||
| 	// transient condition, which can be corrected by retrying with | ||||
| 	// a backoff. | ||||
| 	// a backoff. Note that it is not always safe to retry | ||||
| 	// non-idempotent operations. | ||||
| 	// | ||||
| 	// See the guidelines above for deciding between `FAILED_PRECONDITION`, | ||||
| 	// `ABORTED`, and `UNAVAILABLE`. | ||||
|   | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user
	 Tonis Tiigi
					Tonis Tiigi