18f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe/* 28f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe * SE/HMC Drive FTP Services 38f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe * 48f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe * Copyright IBM Corp. 2013 58f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe * Author(s): Ralf Hoppe (rhoppe@de.ibm.com) 68f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe */ 78f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe 88f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe#ifndef __HMCDRV_FTP_H__ 98f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe#define __HMCDRV_FTP_H__ 108f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe 118f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe#include <linux/types.h> /* size_t, loff_t */ 128f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe 138f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe/* 148f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe * HMC drive FTP Service max. length of path (w/ EOS) 158f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe */ 168f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe#define HMCDRV_FTP_FIDENT_MAX 192 178f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe 188f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe/** 198f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe * enum hmcdrv_ftp_cmdid - HMC drive FTP commands 208f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe * @HMCDRV_FTP_NOOP: do nothing (only for probing) 218f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe * @HMCDRV_FTP_GET: read a file 228f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe * @HMCDRV_FTP_PUT: (over-) write a file 238f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe * @HMCDRV_FTP_APPEND: append to a file 248f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe * @HMCDRV_FTP_DIR: list directory long (ls -l) 258f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe * @HMCDRV_FTP_NLIST: list files, no directories (name list) 268f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe * @HMCDRV_FTP_DELETE: delete a file 278f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe * @HMCDRV_FTP_CANCEL: cancel operation (SCLP/LPAR only) 288f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe */ 298f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppeenum hmcdrv_ftp_cmdid { 308f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe HMCDRV_FTP_NOOP = 0, 318f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe HMCDRV_FTP_GET = 1, 328f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe HMCDRV_FTP_PUT = 2, 338f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe HMCDRV_FTP_APPEND = 3, 348f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe HMCDRV_FTP_DIR = 4, 358f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe HMCDRV_FTP_NLIST = 5, 368f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe HMCDRV_FTP_DELETE = 6, 378f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe HMCDRV_FTP_CANCEL = 7 388f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe}; 398f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe 408f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe/** 418f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe * struct hmcdrv_ftp_cmdspec - FTP command specification 428f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe * @id: FTP command ID 438f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe * @ofs: offset in file 448f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe * @fname: filename (ASCII), null-terminated 458f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe * @buf: kernel-space transfer data buffer, 4k aligned 468f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe * @len: (max) number of bytes to transfer from/to @buf 478f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe */ 488f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppestruct hmcdrv_ftp_cmdspec { 498f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe enum hmcdrv_ftp_cmdid id; 508f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe loff_t ofs; 518f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe const char *fname; 528f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe void __kernel *buf; 538f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe size_t len; 548f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe}; 558f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe 568f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppeint hmcdrv_ftp_startup(void); 578f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppevoid hmcdrv_ftp_shutdown(void); 588f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppeint hmcdrv_ftp_probe(void); 598f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppessize_t hmcdrv_ftp_do(const struct hmcdrv_ftp_cmdspec *ftp); 608f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppessize_t hmcdrv_ftp_cmd(char __kernel *cmd, loff_t offset, 618f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe char __user *buf, size_t len); 628f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe 638f933b1043e1e51f4776fc1ffe86752c7785fd4eRalf Hoppe#endif /* __HMCDRV_FTP_H__ */ 64