iscsi_boot_sysfs.h 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. /*
  2. * Export the iSCSI boot info to userland via sysfs.
  3. *
  4. * Copyright (C) 2010 Red Hat, Inc. All rights reserved.
  5. * Copyright (C) 2010 Mike Christie
  6. *
  7. * This program is free software; you can redistribute it and/or modify
  8. * it under the terms of the GNU General Public License v2.0 as published by
  9. * the Free Software Foundation
  10. *
  11. * This program is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. * GNU General Public License for more details.
  15. */
  16. #ifndef _ISCSI_BOOT_SYSFS_
  17. #define _ISCSI_BOOT_SYSFS_
  18. /*
  19. * The text attributes names for each of the kobjects.
  20. */
  21. enum iscsi_boot_eth_properties_enum {
  22. ISCSI_BOOT_ETH_INDEX,
  23. ISCSI_BOOT_ETH_FLAGS,
  24. ISCSI_BOOT_ETH_IP_ADDR,
  25. ISCSI_BOOT_ETH_PREFIX_LEN,
  26. ISCSI_BOOT_ETH_SUBNET_MASK,
  27. ISCSI_BOOT_ETH_ORIGIN,
  28. ISCSI_BOOT_ETH_GATEWAY,
  29. ISCSI_BOOT_ETH_PRIMARY_DNS,
  30. ISCSI_BOOT_ETH_SECONDARY_DNS,
  31. ISCSI_BOOT_ETH_DHCP,
  32. ISCSI_BOOT_ETH_VLAN,
  33. ISCSI_BOOT_ETH_MAC,
  34. /* eth_pci_bdf - this is replaced by link to the device itself. */
  35. ISCSI_BOOT_ETH_HOSTNAME,
  36. ISCSI_BOOT_ETH_END_MARKER,
  37. };
  38. enum iscsi_boot_tgt_properties_enum {
  39. ISCSI_BOOT_TGT_INDEX,
  40. ISCSI_BOOT_TGT_FLAGS,
  41. ISCSI_BOOT_TGT_IP_ADDR,
  42. ISCSI_BOOT_TGT_PORT,
  43. ISCSI_BOOT_TGT_LUN,
  44. ISCSI_BOOT_TGT_CHAP_TYPE,
  45. ISCSI_BOOT_TGT_NIC_ASSOC,
  46. ISCSI_BOOT_TGT_NAME,
  47. ISCSI_BOOT_TGT_CHAP_NAME,
  48. ISCSI_BOOT_TGT_CHAP_SECRET,
  49. ISCSI_BOOT_TGT_REV_CHAP_NAME,
  50. ISCSI_BOOT_TGT_REV_CHAP_SECRET,
  51. ISCSI_BOOT_TGT_END_MARKER,
  52. };
  53. enum iscsi_boot_initiator_properties_enum {
  54. ISCSI_BOOT_INI_INDEX,
  55. ISCSI_BOOT_INI_FLAGS,
  56. ISCSI_BOOT_INI_ISNS_SERVER,
  57. ISCSI_BOOT_INI_SLP_SERVER,
  58. ISCSI_BOOT_INI_PRI_RADIUS_SERVER,
  59. ISCSI_BOOT_INI_SEC_RADIUS_SERVER,
  60. ISCSI_BOOT_INI_INITIATOR_NAME,
  61. ISCSI_BOOT_INI_END_MARKER,
  62. };
  63. enum iscsi_boot_acpitbl_properties_enum {
  64. ISCSI_BOOT_ACPITBL_SIGNATURE,
  65. ISCSI_BOOT_ACPITBL_OEM_ID,
  66. ISCSI_BOOT_ACPITBL_OEM_TABLE_ID,
  67. };
  68. struct attribute_group;
  69. struct iscsi_boot_kobj {
  70. struct kobject kobj;
  71. struct attribute_group *attr_group;
  72. struct list_head list;
  73. /*
  74. * Pointer to store driver specific info. If set this will
  75. * be freed for the LLD when the kobj release function is called.
  76. */
  77. void *data;
  78. /*
  79. * Driver specific show function.
  80. *
  81. * The enum of the type. This can be any value of the above
  82. * properties.
  83. */
  84. ssize_t (*show) (void *data, int type, char *buf);
  85. /*
  86. * Drivers specific visibility function.
  87. * The function should return if they the attr should be readable
  88. * writable or should not be shown.
  89. *
  90. * The enum of the type. This can be any value of the above
  91. * properties.
  92. */
  93. umode_t (*is_visible) (void *data, int type);
  94. /*
  95. * Driver specific release function.
  96. *
  97. * The function should free the data passed in.
  98. */
  99. void (*release) (void *data);
  100. };
  101. struct iscsi_boot_kset {
  102. struct list_head kobj_list;
  103. struct kset *kset;
  104. };
  105. struct iscsi_boot_kobj *
  106. iscsi_boot_create_initiator(struct iscsi_boot_kset *boot_kset, int index,
  107. void *data,
  108. ssize_t (*show) (void *data, int type, char *buf),
  109. umode_t (*is_visible) (void *data, int type),
  110. void (*release) (void *data));
  111. struct iscsi_boot_kobj *
  112. iscsi_boot_create_ethernet(struct iscsi_boot_kset *boot_kset, int index,
  113. void *data,
  114. ssize_t (*show) (void *data, int type, char *buf),
  115. umode_t (*is_visible) (void *data, int type),
  116. void (*release) (void *data));
  117. struct iscsi_boot_kobj *
  118. iscsi_boot_create_target(struct iscsi_boot_kset *boot_kset, int index,
  119. void *data,
  120. ssize_t (*show) (void *data, int type, char *buf),
  121. umode_t (*is_visible) (void *data, int type),
  122. void (*release) (void *data));
  123. struct iscsi_boot_kobj *
  124. iscsi_boot_create_acpitbl(struct iscsi_boot_kset *boot_kset, int index,
  125. void *data,
  126. ssize_t (*show)(void *data, int type, char *buf),
  127. umode_t (*is_visible)(void *data, int type),
  128. void (*release)(void *data));
  129. struct iscsi_boot_kset *iscsi_boot_create_kset(const char *set_name);
  130. struct iscsi_boot_kset *iscsi_boot_create_host_kset(unsigned int hostno);
  131. void iscsi_boot_destroy_kset(struct iscsi_boot_kset *boot_kset);
  132. #endif