iscsi_transport.h 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #include <linux/module.h>
  2. #include <linux/list.h>
  3. #include "../../../drivers/target/iscsi/iscsi_target_core.h"
  4. struct iscsit_transport {
  5. #define ISCSIT_TRANSPORT_NAME 16
  6. char name[ISCSIT_TRANSPORT_NAME];
  7. int transport_type;
  8. struct module *owner;
  9. struct list_head t_node;
  10. int (*iscsit_setup_np)(struct iscsi_np *, struct __kernel_sockaddr_storage *);
  11. int (*iscsit_accept_np)(struct iscsi_np *, struct iscsi_conn *);
  12. void (*iscsit_free_np)(struct iscsi_np *);
  13. void (*iscsit_free_conn)(struct iscsi_conn *);
  14. struct iscsi_cmd *(*iscsit_alloc_cmd)(struct iscsi_conn *, gfp_t);
  15. int (*iscsit_get_login_rx)(struct iscsi_conn *, struct iscsi_login *);
  16. int (*iscsit_put_login_tx)(struct iscsi_conn *, struct iscsi_login *, u32);
  17. int (*iscsit_immediate_queue)(struct iscsi_conn *, struct iscsi_cmd *, int);
  18. int (*iscsit_response_queue)(struct iscsi_conn *, struct iscsi_cmd *, int);
  19. int (*iscsit_get_dataout)(struct iscsi_conn *, struct iscsi_cmd *, bool);
  20. int (*iscsit_queue_data_in)(struct iscsi_conn *, struct iscsi_cmd *);
  21. int (*iscsit_queue_status)(struct iscsi_conn *, struct iscsi_cmd *);
  22. };
  23. /*
  24. * From iscsi_target_transport.c
  25. */
  26. extern int iscsit_register_transport(struct iscsit_transport *);
  27. extern void iscsit_unregister_transport(struct iscsit_transport *);
  28. extern struct iscsit_transport *iscsit_get_transport(int);
  29. extern void iscsit_put_transport(struct iscsit_transport *);
  30. /*
  31. * From iscsi_target.c
  32. */
  33. extern int iscsit_add_reject_from_cmd(u8, int, int, unsigned char *,
  34. struct iscsi_cmd *);
  35. extern int iscsit_setup_scsi_cmd(struct iscsi_conn *, struct iscsi_cmd *,
  36. unsigned char *);
  37. extern void iscsit_set_unsoliticed_dataout(struct iscsi_cmd *);
  38. extern int iscsit_process_scsi_cmd(struct iscsi_conn *, struct iscsi_cmd *,
  39. struct iscsi_scsi_req *);
  40. extern int iscsit_check_dataout_hdr(struct iscsi_conn *, unsigned char *,
  41. struct iscsi_cmd **);
  42. extern int iscsit_check_dataout_payload(struct iscsi_cmd *, struct iscsi_data *,
  43. bool);
  44. extern int iscsit_handle_nop_out(struct iscsi_conn *, struct iscsi_cmd *,
  45. unsigned char *);
  46. extern int iscsit_handle_logout_cmd(struct iscsi_conn *, struct iscsi_cmd *,
  47. unsigned char *);
  48. extern int iscsit_handle_task_mgt_cmd(struct iscsi_conn *, struct iscsi_cmd *,
  49. unsigned char *);
  50. extern void iscsit_build_rsp_pdu(struct iscsi_cmd *, struct iscsi_conn *,
  51. bool, struct iscsi_scsi_rsp *);
  52. extern void iscsit_build_nopin_rsp(struct iscsi_cmd *, struct iscsi_conn *,
  53. struct iscsi_nopin *, bool);
  54. extern void iscsit_build_task_mgt_rsp(struct iscsi_cmd *, struct iscsi_conn *,
  55. struct iscsi_tm_rsp *);
  56. extern void iscsit_build_reject(struct iscsi_cmd *, struct iscsi_conn *,
  57. struct iscsi_reject *);
  58. extern int iscsit_build_logout_rsp(struct iscsi_cmd *, struct iscsi_conn *,
  59. struct iscsi_logout_rsp *);
  60. extern int iscsit_logout_post_handler(struct iscsi_cmd *, struct iscsi_conn *);
  61. /*
  62. * From iscsi_target_device.c
  63. */
  64. extern void iscsit_increment_maxcmdsn(struct iscsi_cmd *, struct iscsi_session *);
  65. /*
  66. * From iscsi_target_erl1.c
  67. */
  68. extern void iscsit_stop_dataout_timer(struct iscsi_cmd *);
  69. /*
  70. * From iscsi_target_tmr.c
  71. */
  72. extern int iscsit_tmr_post_handler(struct iscsi_cmd *, struct iscsi_conn *);
  73. /*
  74. * From iscsi_target_util.c
  75. */
  76. extern struct iscsi_cmd *iscsit_allocate_cmd(struct iscsi_conn *, gfp_t);
  77. extern int iscsit_sequence_cmd(struct iscsi_conn *, struct iscsi_cmd *, __be32);