Blame view

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