Lines Matching full:conn

91 	struct iscsid_connection *conn;  in pdu_receive_proxy()  local
96 conn = (struct iscsid_connection *)pdu->pdu_connection; in pdu_receive_proxy()
97 assert(conn->conn_conf.isc_iser != 0); in pdu_receive_proxy()
99 pdu->pdu_data = malloc(conn->conn.conn_max_recv_data_segment_length); in pdu_receive_proxy()
104 idr.idr_session_id = conn->conn_session_id; in pdu_receive_proxy()
106 idr.idr_data_segment_len = conn->conn.conn_max_recv_data_segment_length; in pdu_receive_proxy()
109 error = ioctl(conn->conn_iscsi_fd, ISCSIDRECEIVE, &idr); in pdu_receive_proxy()
118 assert(len <= (size_t)conn->conn.conn_max_recv_data_segment_length); in pdu_receive_proxy()
125 struct iscsid_connection *conn; in pdu_send_proxy() local
129 conn = (struct iscsid_connection *)pdu->pdu_connection; in pdu_send_proxy()
130 assert(conn->conn_conf.isc_iser != 0); in pdu_send_proxy()
135 ids.ids_session_id = conn->conn_session_id; in pdu_send_proxy()
140 error = ioctl(conn->conn_iscsi_fd, ISCSIDSEND, &ids); in pdu_send_proxy()
148 resolve_addr(const struct connection *conn, const char *address, in resolve_addr() argument
159 fail(conn, "empty address"); in resolve_addr()
169 fail(conn, "malformed address"); in resolve_addr()
177 fail(conn, "malformed address"); in resolve_addr()
213 fail(conn, gai_strerror(error)); in resolve_addr()
224 struct iscsid_connection *conn; in connection_new() local
232 conn = calloc(1, sizeof(*conn)); in connection_new()
233 if (conn == NULL) in connection_new()
236 connection_init(&conn->conn, &conn_ops, in connection_new()
238 conn->conn_protocol_level = 0; in connection_new()
239 conn->conn_initial_r2t = true; in connection_new()
240 conn->conn_iscsi_fd = iscsi_fd; in connection_new()
242 conn->conn_session_id = request->idr_session_id; in connection_new()
243 memcpy(&conn->conn_conf, &request->idr_conf, sizeof(conn->conn_conf)); in connection_new()
244 memcpy(&conn->conn.conn_isid, &request->idr_isid, in connection_new()
245 sizeof(conn->conn.conn_isid)); in connection_new()
246 conn->conn.conn_tsih = request->idr_tsih; in connection_new()
248 from_addr = conn->conn_conf.isc_initiator_addr; in connection_new()
249 to_addr = conn->conn_conf.isc_target_addr; in connection_new()
252 resolve_addr(&conn->conn, from_addr, &from_ai, true); in connection_new()
256 resolve_addr(&conn->conn, to_addr, &to_ai, false); in connection_new()
259 if (conn->conn_conf.isc_iser) { in connection_new()
261 idc.idc_session_id = conn->conn_session_id; in connection_new()
262 if (conn->conn_conf.isc_iser) in connection_new()
277 fail(&conn->conn, strerror(errno)); in connection_new()
286 return (conn); in connection_new()
290 if (conn->conn_conf.isc_iser) { in connection_new()
291 fail(&conn->conn, "iSER not supported"); in connection_new()
296 conn->conn.conn_socket = socket(to_ai->ai_family, to_ai->ai_socktype, in connection_new()
298 if (conn->conn.conn_socket < 0) { in connection_new()
299 fail(&conn->conn, strerror(errno)); in connection_new()
303 if (setsockopt(conn->conn.conn_socket, SOL_SOCKET, SO_RCVBUF, in connection_new()
307 if (setsockopt(conn->conn.conn_socket, SOL_SOCKET, SO_SNDBUF, in connection_new()
311 if (setsockopt(conn->conn.conn_socket, SOL_SOCKET, SO_NO_DDP, in connection_new()
314 if (conn->conn_conf.isc_dscp != -1) { in connection_new()
315 int tos = conn->conn_conf.isc_dscp << 2; in connection_new()
317 if (setsockopt(conn->conn.conn_socket, in connection_new()
325 if (setsockopt(conn->conn.conn_socket, in connection_new()
333 if (conn->conn_conf.isc_pcp != -1) { in connection_new()
334 int pcp = conn->conn_conf.isc_pcp; in connection_new()
336 if (setsockopt(conn->conn.conn_socket, in connection_new()
344 if (setsockopt(conn->conn.conn_socket, in connection_new()
358 if (conn->conn_conf.isc_login_timeout > 0) { in connection_new()
359 keepinit = conn->conn_conf.isc_login_timeout; in connection_new()
363 if (conn->conn_conf.isc_login_timeout == -1) { in connection_new()
374 if (setsockopt(conn->conn.conn_socket, in connection_new()
381 error = bind(conn->conn.conn_socket, from_ai->ai_addr, in connection_new()
384 fail(&conn->conn, strerror(errno)); in connection_new()
389 error = connect(conn->conn.conn_socket, to_ai->ai_addr, in connection_new()
392 fail(&conn->conn, strerror(errno)); in connection_new()
400 return (conn); in connection_new()
404 limits(struct iscsid_connection *conn) in limits() argument
413 idl.idl_session_id = conn->conn_session_id; in limits()
414 idl.idl_socket = conn->conn.conn_socket; in limits()
416 error = ioctl(conn->conn_iscsi_fd, ISCSIDLIMITS, &idl); in limits()
423 * provided by the driver then we'll make sure both conn->max_snd_dsl in limits()
427 isl = &conn->conn_limits; in limits()
446 if (conn->conn.conn_max_send_data_segment_length > in limits()
448 conn->conn.conn_max_send_data_segment_length = in limits()
454 handoff(struct iscsid_connection *conn) in handoff() argument
462 idh.idh_session_id = conn->conn_session_id; in handoff()
463 idh.idh_socket = conn->conn.conn_socket; in handoff()
464 strlcpy(idh.idh_target_alias, conn->conn_target_alias, in handoff()
466 idh.idh_tsih = conn->conn.conn_tsih; in handoff()
467 idh.idh_statsn = conn->conn.conn_statsn; in handoff()
468 idh.idh_protocol_level = conn->conn_protocol_level; in handoff()
469 idh.idh_header_digest = conn->conn.conn_header_digest; in handoff()
470 idh.idh_data_digest = conn->conn.conn_data_digest; in handoff()
471 idh.idh_initial_r2t = conn->conn_initial_r2t; in handoff()
472 idh.idh_immediate_data = conn->conn.conn_immediate_data; in handoff()
474 conn->conn.conn_max_recv_data_segment_length; in handoff()
476 conn->conn.conn_max_send_data_segment_length; in handoff()
477 idh.idh_max_burst_length = conn->conn.conn_max_burst_length; in handoff()
478 idh.idh_first_burst_length = conn->conn.conn_first_burst_length; in handoff()
480 error = ioctl(conn->conn_iscsi_fd, ISCSIDHANDOFF, &idh); in handoff()
488 const struct iscsid_connection *conn; in fail() local
492 conn = (const struct iscsid_connection *)base_conn; in fail()
496 idf.idf_session_id = conn->conn_session_id; in fail()
499 error = ioctl(conn->conn_iscsi_fd, ISCSIDFAIL, &idf); in fail()
510 capsicate(struct iscsid_connection *conn) in capsicate() argument
528 if (caph_rights_limit(conn->conn_iscsi_fd, &rights) < 0) in capsicate()
531 if (caph_ioctls_limit(conn->conn_iscsi_fd, cmds, nitems(cmds)) < 0) in capsicate()
633 struct iscsid_connection *conn; in handle_request() local
643 conn = connection_new(iscsi_fd, request); in handle_request()
644 capsicate(conn); in handle_request()
645 limits(conn); in handle_request()
647 login(conn); in handle_request()
648 if (conn->conn_conf.isc_discovery != 0) in handle_request()
649 discovery(conn); in handle_request()
651 handoff(conn); in handle_request()