summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/fw_context.h36
-rw-r--r--include/iscsi_proto.h1
-rw-r--r--include/list.h93
3 files changed, 121 insertions, 9 deletions
diff --git a/include/fw_context.h b/include/fw_context.h
index 47ac6ae..f522449 100644
--- a/include/fw_context.h
+++ b/include/fw_context.h
@@ -21,26 +21,44 @@
#ifndef FWPARAM_CONTEXT_H_
#define FWPARAM_CONTEXT_H_
+#include <net/if.h>
+
+#include "iscsi_proto.h"
+#include "list.h"
+#include "auth.h"
+
struct boot_context {
-#define IQNSZ (223+1)
+ struct list_head list;
+
+ /* target settings */
int target_port;
- char initiatorname[IQNSZ];
- char targetname[IQNSZ];
+ char targetname[TARGET_NAME_MAXLEN + 1];
char target_ipaddr[32];
- char chap_name[127];
- char chap_password[16];
- char chap_name_in[127];
- char chap_password_in[16];
- char iface[42];
+ char chap_name[AUTH_STR_MAX_LEN];
+ char chap_password[AUTH_STR_MAX_LEN];
+ char chap_name_in[AUTH_STR_MAX_LEN];
+ char chap_password_in[AUTH_STR_MAX_LEN];
+
+ /* initiator settings */
+ char isid[10];
+ char initiatorname[TARGET_NAME_MAXLEN + 1];
+
+ /* network settings */
+ char dhcp[18];
+ char iface[IF_NAMESIZE];
char mac[18];
char ipaddr[18];
+ char gateway[18];
+ char primary_dns[18];
+ char secondary_dns[18];
char mask[18];
char lun[17];
char vlan[15];
- char isid[10];
};
extern int fw_get_entry(struct boot_context *context, const char *filepath);
extern void fw_print_entry(struct boot_context *context);
+extern int fw_get_targets(struct list_head *list);
+extern void fw_free_targets(struct list_head *list);
#endif /* FWPARAM_CONTEXT_H_ */
diff --git a/include/iscsi_proto.h b/include/iscsi_proto.h
index aa32e1c..0225ef3 100644
--- a/include/iscsi_proto.h
+++ b/include/iscsi_proto.h
@@ -21,6 +21,7 @@
#ifndef ISCSI_PROTO_H
#define ISCSI_PROTO_H
+#include <stdint.h>
#include <linux/types.h>
#define ISCSI_DRAFT20_VERSION 0x00
diff --git a/include/list.h b/include/list.h
new file mode 100644
index 0000000..bbf3425
--- /dev/null
+++ b/include/list.h
@@ -0,0 +1,93 @@
+#ifndef __LIST_H__
+#define __LIST_H__
+
+#include <stddef.h>
+/* taken from linux kernel */
+
+#undef offsetof
+#ifdef __compiler_offsetof
+#define offsetof(TYPE,MEMBER) __compiler_offsetof(TYPE,MEMBER)
+#else
+#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
+#endif
+
+#define container_of(ptr, type, member) ({ \
+ const typeof( ((type *)0)->member ) *__mptr = (ptr); \
+ (type *)( (char *)__mptr - offsetof(type,member) );})
+
+struct list_head {
+ struct list_head *next, *prev;
+};
+
+#define LIST_HEAD_INIT(name) { &(name), &(name) }
+
+#define LIST_HEAD(name) \
+ struct list_head name = LIST_HEAD_INIT(name)
+
+static inline void INIT_LIST_HEAD(struct list_head *list)
+{
+ list->next = list;
+ list->prev = list;
+}
+
+static inline int list_empty(const struct list_head *head)
+{
+ return head->next == head;
+}
+
+#define list_entry(ptr, type, member) \
+ container_of(ptr, type, member)
+
+#define list_for_each(pos, head) \
+ for (pos = (head)->next; pos != (head); pos = pos->next)
+
+#define list_for_each_entry(pos, head, member) \
+ for (pos = list_entry((head)->next, typeof(*pos), member); \
+ &pos->member != (head); \
+ pos = list_entry(pos->member.next, typeof(*pos), member))
+
+#define list_for_each_entry_safe(pos, n, head, member) \
+ for (pos = list_entry((head)->next, typeof(*pos), member), \
+ n = list_entry(pos->member.next, typeof(*pos), member); \
+ &pos->member != (head); \
+ pos = n, n = list_entry(n->member.next, typeof(*n), member))
+
+static inline void __list_add(struct list_head *new,
+ struct list_head *prev,
+ struct list_head *next)
+{
+ next->prev = new;
+ new->next = next;
+ new->prev = prev;
+ prev->next = new;
+}
+
+static inline void list_add(struct list_head *new, struct list_head *head)
+{
+ __list_add(new, head, head->next);
+}
+
+static inline void list_add_tail(struct list_head *new, struct list_head *head)
+{
+ __list_add(new, head->prev, head);
+}
+
+static inline void __list_del(struct list_head * prev, struct list_head * next)
+{
+ next->prev = prev;
+ prev->next = next;
+}
+
+static inline void list_del(struct list_head *entry)
+{
+ __list_del(entry->prev, entry->next);
+ entry->next = entry->prev = NULL;
+}
+
+static inline void list_del_init(struct list_head *entry)
+{
+ __list_del(entry->prev, entry->next);
+ INIT_LIST_HEAD(entry);
+}
+
+#endif