|
Packit |
eace71 |
/*
|
|
Packit |
eace71 |
* iSCSI Daemon/Admin Management IPC
|
|
Packit |
eace71 |
*
|
|
Packit |
eace71 |
* Copyright (C) 2004 Dmitry Yusupov, Alex Aizman
|
|
Packit |
eace71 |
* maintained by open-iscsi@googlegroups.com
|
|
Packit |
eace71 |
*
|
|
Packit |
eace71 |
* This program is free software; you can redistribute it and/or modify
|
|
Packit |
eace71 |
* it under the terms of the GNU General Public License as published
|
|
Packit |
eace71 |
* by the Free Software Foundation; either version 2 of the License, or
|
|
Packit |
eace71 |
* (at your option) any later version.
|
|
Packit |
eace71 |
*
|
|
Packit |
eace71 |
* This program is distributed in the hope that it will be useful, but
|
|
Packit |
eace71 |
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
eace71 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
eace71 |
* General Public License for more details.
|
|
Packit |
eace71 |
*
|
|
Packit |
eace71 |
* See the file COPYING included with this distribution for more details.
|
|
Packit |
eace71 |
*/
|
|
Packit |
eace71 |
#ifndef MGMT_IPC_H
|
|
Packit |
eace71 |
#define MGMT_IPC_H
|
|
Packit |
eace71 |
|
|
Packit |
eace71 |
#include "types.h"
|
|
Packit |
eace71 |
#include "iscsi_if.h"
|
|
Packit |
eace71 |
#include "config.h"
|
|
Packit |
eace71 |
|
|
Packit |
eace71 |
#define ISCSIADM_NAMESPACE "ISCSIADM_ABSTRACT_NAMESPACE"
|
|
Packit |
eace71 |
#define PEERUSER_MAX 64
|
|
Packit |
eace71 |
|
|
Packit |
eace71 |
typedef enum iscsiadm_cmd {
|
|
Packit |
eace71 |
MGMT_IPC_UNKNOWN = 0,
|
|
Packit |
eace71 |
MGMT_IPC_SESSION_LOGIN = 1,
|
|
Packit |
eace71 |
MGMT_IPC_SESSION_LOGOUT = 2,
|
|
Packit |
eace71 |
MGMT_IPC_SESSION_ACTIVESTAT = 4,
|
|
Packit |
eace71 |
MGMT_IPC_CONN_ADD = 5,
|
|
Packit |
eace71 |
MGMT_IPC_CONN_REMOVE = 6,
|
|
Packit |
eace71 |
MGMT_IPC_SESSION_STATS = 7,
|
|
Packit |
eace71 |
MGMT_IPC_CONFIG_INAME = 8,
|
|
Packit |
eace71 |
MGMT_IPC_CONFIG_IALIAS = 9,
|
|
Packit |
eace71 |
MGMT_IPC_CONFIG_FILE = 10,
|
|
Packit |
eace71 |
MGMT_IPC_IMMEDIATE_STOP = 11,
|
|
Packit |
eace71 |
MGMT_IPC_SESSION_SYNC = 12,
|
|
Packit |
eace71 |
MGMT_IPC_SESSION_INFO = 13,
|
|
Packit |
eace71 |
MGMT_IPC_ISNS_DEV_ATTR_QUERY = 14,
|
|
Packit |
eace71 |
MGMT_IPC_SEND_TARGETS = 15,
|
|
Packit |
eace71 |
MGMT_IPC_NOTIFY_ADD_NODE = 16,
|
|
Packit |
eace71 |
MGMT_IPC_NOTIFY_DEL_NODE = 17,
|
|
Packit |
eace71 |
MGMT_IPC_NOTIFY_ADD_PORTAL = 18,
|
|
Packit |
eace71 |
MGMT_IPC_NOTIFY_DEL_PORTAL = 19,
|
|
Packit |
eace71 |
|
|
Packit |
eace71 |
__MGMT_IPC_MAX_COMMAND
|
|
Packit |
eace71 |
} iscsiadm_cmd_e;
|
|
Packit |
eace71 |
|
|
Packit |
eace71 |
/* IPC Request */
|
|
Packit |
eace71 |
typedef struct iscsiadm_req {
|
|
Packit |
eace71 |
iscsiadm_cmd_e command;
|
|
Packit |
eace71 |
uint32_t payload_len;
|
|
Packit |
eace71 |
|
|
Packit |
eace71 |
union {
|
|
Packit |
eace71 |
/* messages */
|
|
Packit |
eace71 |
struct ipc_msg_session {
|
|
Packit |
eace71 |
int sid;
|
|
Packit |
eace71 |
node_rec_t rec;
|
|
Packit |
eace71 |
} session;
|
|
Packit |
eace71 |
struct ipc_msg_conn {
|
|
Packit |
eace71 |
int sid;
|
|
Packit |
eace71 |
int cid;
|
|
Packit |
eace71 |
} conn;
|
|
Packit |
eace71 |
struct ipc_msg_send_targets {
|
|
Packit |
eace71 |
int host_no;
|
|
Packit |
eace71 |
int do_login;
|
|
Packit |
eace71 |
struct sockaddr_storage ss;
|
|
Packit |
eace71 |
} st;
|
|
Packit |
eace71 |
struct ipc_msg_set_host_param {
|
|
Packit |
eace71 |
int host_no;
|
|
Packit |
eace71 |
int param;
|
|
Packit |
eace71 |
/* TODO: make this variable len to support */
|
|
Packit |
eace71 |
char value[IFNAMSIZ + 1];
|
|
Packit |
eace71 |
|
|
Packit |
eace71 |
} set_host_param;
|
|
Packit |
eace71 |
} u;
|
|
Packit |
eace71 |
} iscsiadm_req_t;
|
|
Packit |
eace71 |
|
|
Packit |
eace71 |
/* IPC Response */
|
|
Packit |
eace71 |
typedef struct iscsiadm_rsp {
|
|
Packit |
eace71 |
iscsiadm_cmd_e command;
|
|
Packit |
eace71 |
int err; /* ISCSI_ERR value */
|
|
Packit |
eace71 |
|
|
Packit |
eace71 |
union {
|
|
Packit |
eace71 |
#define MGMT_IPC_GETSTATS_BUF_MAX (sizeof(struct iscsi_uevent) + \
|
|
Packit |
eace71 |
sizeof(struct iscsi_stats) + \
|
|
Packit |
eace71 |
sizeof(struct iscsi_stats_custom) * \
|
|
Packit |
eace71 |
ISCSI_STATS_CUSTOM_MAX)
|
|
Packit |
eace71 |
struct ipc_msg_getstats {
|
|
Packit |
eace71 |
struct iscsi_uevent ev;
|
|
Packit |
eace71 |
struct iscsi_stats stats;
|
|
Packit |
eace71 |
char custom[sizeof(struct iscsi_stats_custom) *
|
|
Packit |
eace71 |
ISCSI_STATS_CUSTOM_MAX];
|
|
Packit |
eace71 |
} getstats;
|
|
Packit |
eace71 |
struct ipc_msg_config {
|
|
Packit |
eace71 |
char var[VALUE_MAXLEN];
|
|
Packit |
eace71 |
} config;
|
|
Packit |
eace71 |
struct ipc_msg_session_state {
|
|
Packit |
eace71 |
int session_state;
|
|
Packit |
eace71 |
int conn_state;
|
|
Packit |
eace71 |
} session_state;
|
|
Packit |
eace71 |
} u;
|
|
Packit |
eace71 |
} iscsiadm_rsp_t;
|
|
Packit |
eace71 |
|
|
Packit |
eace71 |
struct queue_task;
|
|
Packit |
eace71 |
typedef int mgmt_ipc_fn_t(struct queue_task *);
|
|
Packit |
eace71 |
|
|
Packit |
eace71 |
struct queue_task;
|
|
Packit |
eace71 |
void mgmt_ipc_write_rsp(struct queue_task *qtask, int err);
|
|
Packit |
eace71 |
int mgmt_ipc_listen(void);
|
|
Packit |
eace71 |
int mgmt_ipc_systemd(void);
|
|
Packit |
eace71 |
void mgmt_ipc_close(int fd);
|
|
Packit |
eace71 |
void mgmt_ipc_handle(int accept_fd);
|
|
Packit |
eace71 |
|
|
Packit |
eace71 |
#endif /* MGMT_IPC_H */
|