xref: /spdk/lib/iscsi/param.h (revision a6dbe3721eb3b5990707fc3e378c95e505dd8ab5)
1 /*   SPDX-License-Identifier: BSD-3-Clause
2  *   Copyright (C) 2008-2012 Daisuke Aoyama <aoyama@peach.ne.jp>.
3  *   Copyright (C) 2016 Intel Corporation.
4  *   All rights reserved.
5  */
6 
7 #ifndef SPDK_ISCSI_PARAM_H
8 #define SPDK_ISCSI_PARAM_H
9 
10 #include "spdk/stdinc.h"
11 
12 struct spdk_iscsi_conn;
13 
14 enum iscsi_param_type {
15 	ISPT_INVALID = -1,
16 	ISPT_NOTSPECIFIED = 0,
17 	ISPT_LIST,
18 	ISPT_NUMERICAL_MIN,
19 	ISPT_NUMERICAL_MAX,
20 	ISPT_NUMERICAL_DECLARATIVE,
21 	ISPT_DECLARATIVE,
22 	ISPT_BOOLEAN_OR,
23 	ISPT_BOOLEAN_AND,
24 };
25 
26 struct iscsi_param {
27 	struct iscsi_param *next;
28 	char *key;
29 	char *val;
30 	char *list;
31 	int type;
32 	int state_index;
33 };
34 
35 void iscsi_param_free(struct iscsi_param *params);
36 struct iscsi_param *
37 iscsi_param_find(struct iscsi_param *params, const char *key);
38 int iscsi_param_del(struct iscsi_param **params, const char *key);
39 int iscsi_param_add(struct iscsi_param **params, const char *key,
40 		    const char *val, const char *list, int type);
41 int iscsi_param_set(struct iscsi_param *params, const char *key,
42 		    const char *val);
43 int iscsi_param_set_int(struct iscsi_param *params, const char *key, uint32_t val);
44 int iscsi_parse_params(struct iscsi_param **params, const uint8_t *data,
45 		       int len, bool cbit_enabled, char **partial_parameter);
46 char *iscsi_param_get_val(struct iscsi_param *params, const char *key);
47 int iscsi_param_eq_val(struct iscsi_param *params, const char *key,
48 		       const char *val);
49 
50 int iscsi_negotiate_params(struct spdk_iscsi_conn *conn,
51 			   struct iscsi_param **params_p, uint8_t *data,
52 			   int alloc_len, int data_len);
53 int iscsi_copy_param2var(struct spdk_iscsi_conn *conn);
54 
55 int iscsi_conn_params_init(struct iscsi_param **params);
56 int iscsi_sess_params_init(struct iscsi_param **params);
57 
58 #endif /* SPDK_ISCSI_PARAM_H */
59