| #define LO_CRYPT_NONE 0 |
| #define LO_CRYPT_XOR 1 |
| #define LO_CRYPT_DES 2 |
| #define LO_CRYPT_CRYPTOAPI 18 |
| |
| #define LOOP_SET_FD 0x4C00 |
| #define LOOP_CLR_FD 0x4C01 |
| #define LOOP_SET_STATUS 0x4C02 |
| #define LOOP_GET_STATUS 0x4C03 |
| #define LOOP_SET_STATUS64 0x4C04 |
| #define LOOP_GET_STATUS64 0x4C05 |
| |
| #define LO_NAME_SIZE 64 |
| #define LO_KEY_SIZE 32 |
| |
| struct loop_info { |
| int lo_number; |
| dev_t lo_device; |
| unsigned long lo_inode; |
| dev_t lo_rdevice; |
| int lo_offset; |
| int lo_encrypt_type; |
| int lo_encrypt_key_size; |
| int lo_flags; |
| char lo_name[LO_NAME_SIZE]; |
| unsigned char lo_encrypt_key[LO_KEY_SIZE]; |
| unsigned long lo_init[2]; |
| char reserved[4]; |
| }; |
| |
| /* |
| * Where to get __u8, __u32, __u64? Let us use unsigned char/int/long long |
| * and get punished when someone comes with 128-bit long longs. |
| */ |
| struct loop_info64 { |
| unsigned long long lo_device; |
| unsigned long long lo_inode; |
| unsigned long long lo_rdevice; |
| unsigned long long lo_offset; |
| unsigned long long lo_sizelimit; /* bytes, 0 == max available */ |
| unsigned int lo_number; |
| unsigned int lo_encrypt_type; |
| unsigned int lo_encrypt_key_size; |
| unsigned int lo_flags; |
| char lo_file_name[LO_NAME_SIZE]; |
| char lo_crypt_name[LO_NAME_SIZE]; |
| char lo_encrypt_key[LO_KEY_SIZE]; |
| unsigned long long lo_init[2]; |
| }; |