#ifndef _LINUX_LOOP_H
|
#ifndef _LINUX_LOOP_H
|
#define _LINUX_LOOP_H
|
#define _LINUX_LOOP_H
|
|
|
/*
|
/*
|
* include/linux/loop.h
|
* include/linux/loop.h
|
*
|
*
|
* Written by Theodore Ts'o, 3/29/93.
|
* Written by Theodore Ts'o, 3/29/93.
|
*
|
*
|
* Copyright 1993 by Theodore Ts'o. Redistribution of this file is
|
* Copyright 1993 by Theodore Ts'o. Redistribution of this file is
|
* permitted under the GNU Public License.
|
* permitted under the GNU Public License.
|
*/
|
*/
|
|
|
#define LO_NAME_SIZE 64
|
#define LO_NAME_SIZE 64
|
#define LO_KEY_SIZE 32
|
#define LO_KEY_SIZE 32
|
|
|
#ifdef __KERNEL__
|
#ifdef __KERNEL__
|
|
|
struct loop_device {
|
struct loop_device {
|
int lo_number;
|
int lo_number;
|
struct inode *lo_inode;
|
struct inode *lo_inode;
|
int lo_refcnt;
|
int lo_refcnt;
|
kdev_t lo_device;
|
kdev_t lo_device;
|
int lo_offset;
|
int lo_offset;
|
int lo_encrypt_type;
|
int lo_encrypt_type;
|
int lo_encrypt_key_size;
|
int lo_encrypt_key_size;
|
int lo_flags;
|
int lo_flags;
|
int (*transfer)(struct loop_device *, int cmd,
|
int (*transfer)(struct loop_device *, int cmd,
|
char *raw_buf, char *loop_buf, int size);
|
char *raw_buf, char *loop_buf, int size);
|
char lo_name[LO_NAME_SIZE];
|
char lo_name[LO_NAME_SIZE];
|
char lo_encrypt_key[LO_KEY_SIZE];
|
char lo_encrypt_key[LO_KEY_SIZE];
|
#ifdef DES_AVAILABLE
|
#ifdef DES_AVAILABLE
|
des_key_schedule lo_des_key;
|
des_key_schedule lo_des_key;
|
unsigned long lo_des_init[2];
|
unsigned long lo_des_init[2];
|
#endif
|
#endif
|
#ifdef IDEA_AVAILABLE
|
#ifdef IDEA_AVAILABLE
|
idea_key lo_idea_en_key;
|
idea_key lo_idea_en_key;
|
idea_key lo_idea_de_key;
|
idea_key lo_idea_de_key;
|
#endif
|
#endif
|
};
|
};
|
|
|
typedef int (* transfer_proc_t)(struct loop_device *, int cmd,
|
typedef int (* transfer_proc_t)(struct loop_device *, int cmd,
|
char *raw_buf, char *loop_buf, int size);
|
char *raw_buf, char *loop_buf, int size);
|
|
|
/*
|
/*
|
* Loop flags
|
* Loop flags
|
*/
|
*/
|
#define LO_FLAGS_DO_BMAP 0x00000001
|
#define LO_FLAGS_DO_BMAP 0x00000001
|
#define LO_FLAGS_READ_ONLY 0x00000002
|
#define LO_FLAGS_READ_ONLY 0x00000002
|
|
|
#endif /* __KERNEL__ */
|
#endif /* __KERNEL__ */
|
|
|
struct loop_info {
|
struct loop_info {
|
int lo_number; /* ioctl r/o */
|
int lo_number; /* ioctl r/o */
|
dev_t lo_device; /* ioctl r/o */
|
dev_t lo_device; /* ioctl r/o */
|
unsigned long lo_inode; /* ioctl r/o */
|
unsigned long lo_inode; /* ioctl r/o */
|
dev_t lo_rdevice; /* ioctl r/o */
|
dev_t lo_rdevice; /* ioctl r/o */
|
int lo_offset;
|
int lo_offset;
|
int lo_encrypt_type;
|
int lo_encrypt_type;
|
int lo_encrypt_key_size; /* ioctl w/o */
|
int lo_encrypt_key_size; /* ioctl w/o */
|
int lo_flags; /* ioctl r/o */
|
int lo_flags; /* ioctl r/o */
|
char lo_name[LO_NAME_SIZE];
|
char lo_name[LO_NAME_SIZE];
|
unsigned char lo_encrypt_key[LO_KEY_SIZE]; /* ioctl w/o */
|
unsigned char lo_encrypt_key[LO_KEY_SIZE]; /* ioctl w/o */
|
unsigned long lo_init[2];
|
unsigned long lo_init[2];
|
char reserved[4];
|
char reserved[4];
|
};
|
};
|
|
|
/*
|
/*
|
* Loop encryption types --- LO_CRYPT_IDEA isn't supported yet
|
* Loop encryption types --- LO_CRYPT_IDEA isn't supported yet
|
*/
|
*/
|
|
|
#define LO_CRYPT_NONE 0
|
#define LO_CRYPT_NONE 0
|
#define LO_CRYPT_XOR 1
|
#define LO_CRYPT_XOR 1
|
#define LO_CRYPT_DES 2
|
#define LO_CRYPT_DES 2
|
#define LO_CRYPT_IDEA 3
|
#define LO_CRYPT_IDEA 3
|
#define MAX_LO_CRYPT 4
|
#define MAX_LO_CRYPT 4
|
|
|
/*
|
/*
|
* IOCTL commands --- we will commandeer 0x4C ('L')
|
* IOCTL commands --- we will commandeer 0x4C ('L')
|
*/
|
*/
|
|
|
#define LOOP_SET_FD 0x4C00
|
#define LOOP_SET_FD 0x4C00
|
#define LOOP_CLR_FD 0x4C01
|
#define LOOP_CLR_FD 0x4C01
|
#define LOOP_SET_STATUS 0x4C02
|
#define LOOP_SET_STATUS 0x4C02
|
#define LOOP_GET_STATUS 0x4C03
|
#define LOOP_GET_STATUS 0x4C03
|
|
|
#endif
|
#endif
|
|
|