1// +build linux,cgo
2
3package loopback // import "github.com/docker/docker/pkg/loopback"
4
5/*
6#include <linux/loop.h> // FIXME: present only for defines, maybe we can remove it?
7
8#ifndef LOOP_CTL_GET_FREE
9  #define LOOP_CTL_GET_FREE 0x4C82
10#endif
11
12#ifndef LO_FLAGS_PARTSCAN
13  #define LO_FLAGS_PARTSCAN 8
14#endif
15
16*/
17import "C"
18
19type loopInfo64 struct {
20	loDevice         uint64 /* ioctl r/o */
21	loInode          uint64 /* ioctl r/o */
22	loRdevice        uint64 /* ioctl r/o */
23	loOffset         uint64
24	loSizelimit      uint64 /* bytes, 0 == max available */
25	loNumber         uint32 /* ioctl r/o */
26	loEncryptType    uint32
27	loEncryptKeySize uint32 /* ioctl w/o */
28	loFlags          uint32 /* ioctl r/o */
29	loFileName       [LoNameSize]uint8
30	loCryptName      [LoNameSize]uint8
31	loEncryptKey     [LoKeySize]uint8 /* ioctl w/o */
32	loInit           [2]uint64
33}
34
35// IOCTL consts
36const (
37	LoopSetFd       = C.LOOP_SET_FD
38	LoopCtlGetFree  = C.LOOP_CTL_GET_FREE
39	LoopGetStatus64 = C.LOOP_GET_STATUS64
40	LoopSetStatus64 = C.LOOP_SET_STATUS64
41	LoopClrFd       = C.LOOP_CLR_FD
42	LoopSetCapacity = C.LOOP_SET_CAPACITY
43)
44
45// LOOP consts.
46const (
47	LoFlagsAutoClear = C.LO_FLAGS_AUTOCLEAR
48	LoFlagsReadOnly  = C.LO_FLAGS_READ_ONLY
49	LoFlagsPartScan  = C.LO_FLAGS_PARTSCAN
50	LoKeySize        = C.LO_KEY_SIZE
51	LoNameSize       = C.LO_NAME_SIZE
52)
53