Blame usr/mgmt_ipc.h

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 */