diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/fw_context.h | 36 | ||||
-rw-r--r-- | include/iscsi_proto.h | 1 | ||||
-rw-r--r-- | include/list.h | 93 |
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 |