diff options
Diffstat (limited to 'usr/mgmt_ipc.c')
-rw-r--r-- | usr/mgmt_ipc.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/usr/mgmt_ipc.c b/usr/mgmt_ipc.c index 0d8fd4d..7216bd5 100644 --- a/usr/mgmt_ipc.c +++ b/usr/mgmt_ipc.c @@ -2,6 +2,8 @@ * iSCSI Administrator Utility Socket Interface * * Copyright (C) 2004 Dmitry Yusupov, Alex Aizman + * Copyright (C) 2006 Mike Christie + * Copyright (C) 2006 Red Hat, Inc. All rights reserved. * maintained by open-iscsi@googlegroups.com * * Originally based on: @@ -161,6 +163,23 @@ mgmt_ipc_cfg_initiatorname(queue_task_t *qtask, iscsiadm_rsp_t *rsp) } static mgmt_ipc_err_e +mgmt_ipc_session_info(queue_task_t *qtask, int sid, iscsiadm_rsp_t *rsp) +{ + iscsi_session_t *session; + struct msg_session_state *info; + + if (!(session = session_find_by_sid(sid))) { + log_error("session with sid %d not found!", sid); + return MGMT_IPC_ERR_NOT_FOUND; + } + + info = &rsp->u.session_state; + info->conn_state = session->conn[0].state; + info->session_state = session->r_stage; + return MGMT_IPC_OK; +} + +static mgmt_ipc_err_e mgmt_ipc_cfg_initiatoralias(queue_task_t *qtask, iscsiadm_rsp_t *rsp) { strcpy(rsp->u.config.var, dconfig->initiator_alias); @@ -332,6 +351,11 @@ mgmt_ipc_handle(int accept_fd) &rsp); immrsp = 1; break; + case MGMT_IPC_SESSION_INFO: + rsp.err = mgmt_ipc_session_info(qtask, req.u.session.sid, + &rsp); + immrsp = 1; + break; case MGMT_IPC_CONN_ADD: rsp.err = mgmt_ipc_conn_add(qtask, req.u.conn.cid); break; @@ -358,6 +382,8 @@ mgmt_ipc_handle(int accept_fd) default: log_error("unknown request: %s(%d) %u", __FUNCTION__, __LINE__, req.command); + rsp.err = MGMT_IPC_ERR_INVALID_REQ; + immrsp = 1; break; } |