diff options
author | Andy Grover <agrover@redhat.com> | 2015-08-24 13:26:04 -0400 |
---|---|---|
committer | Nicholas Bellinger <nab@linux-iscsi.org> | 2015-08-27 02:27:16 -0400 |
commit | 69d755747d31c07a416064f251c2f408938fb67a (patch) | |
tree | a3a4e17c1d5ddb6c2e9b5ef62a3ffeb505921058 | |
parent | 76c28f1fcfeb42b47f798fe498351ee1d60086ae (diff) |
target/iscsi: Keep local_ip as the actual sockaddr
This is a more natural format that lets us format it with the appropriate
printk specifier as needed.
This also lets us handle v4-mapped ipv6 addresses a little more nicely, by
storing the addr as an actual v4 sockaddr in conn->local_sockaddr.
Finally, we no longer need to maintain variables for port, since this is
contained in sockaddr. Remove iscsi_np.np_port and iscsi_conn.local_port.
Signed-off-by: Andy Grover <agrover@redhat.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
-rw-r--r-- | drivers/infiniband/ulp/isert/ib_isert.c | 8 | ||||
-rw-r--r-- | drivers/target/iscsi/iscsi_target.c | 46 | ||||
-rw-r--r-- | drivers/target/iscsi/iscsi_target_configfs.c | 4 | ||||
-rw-r--r-- | drivers/target/iscsi/iscsi_target_login.c | 43 | ||||
-rw-r--r-- | drivers/target/iscsi/iscsi_target_tpg.c | 8 | ||||
-rw-r--r-- | include/target/iscsi/iscsi_target_core.h | 4 |
6 files changed, 48 insertions, 65 deletions
diff --git a/drivers/infiniband/ulp/isert/ib_isert.c b/drivers/infiniband/ulp/isert/ib_isert.c index 771700963127..9e7094c244ea 100644 --- a/drivers/infiniband/ulp/isert/ib_isert.c +++ b/drivers/infiniband/ulp/isert/ib_isert.c | |||
@@ -3218,9 +3218,7 @@ isert_set_conn_info(struct iscsi_np *np, struct iscsi_conn *conn, | |||
3218 | conn->login_port = ntohs(sock_in6->sin6_port); | 3218 | conn->login_port = ntohs(sock_in6->sin6_port); |
3219 | 3219 | ||
3220 | sock_in6 = (struct sockaddr_in6 *)&cm_route->addr.src_addr; | 3220 | sock_in6 = (struct sockaddr_in6 *)&cm_route->addr.src_addr; |
3221 | snprintf(conn->local_ip, sizeof(conn->local_ip), "%pI6c", | 3221 | memcpy(&conn->local_sockaddr , &sock_in6, sizeof(sock_in6)); |
3222 | &sock_in6->sin6_addr.in6_u); | ||
3223 | conn->local_port = ntohs(sock_in6->sin6_port); | ||
3224 | } else { | 3222 | } else { |
3225 | sock_in = (struct sockaddr_in *)&cm_route->addr.dst_addr; | 3223 | sock_in = (struct sockaddr_in *)&cm_route->addr.dst_addr; |
3226 | sprintf(conn->login_ip, "%pI4", | 3224 | sprintf(conn->login_ip, "%pI4", |
@@ -3228,9 +3226,7 @@ isert_set_conn_info(struct iscsi_np *np, struct iscsi_conn *conn, | |||
3228 | conn->login_port = ntohs(sock_in->sin_port); | 3226 | conn->login_port = ntohs(sock_in->sin_port); |
3229 | 3227 | ||
3230 | sock_in = (struct sockaddr_in *)&cm_route->addr.src_addr; | 3228 | sock_in = (struct sockaddr_in *)&cm_route->addr.src_addr; |
3231 | sprintf(conn->local_ip, "%pI4", | 3229 | memcpy(&conn->local_sockaddr , &sock_in, sizeof(sock_in)); |
3232 | &sock_in->sin_addr.s_addr); | ||
3233 | conn->local_port = ntohs(sock_in->sin_port); | ||
3234 | } | 3230 | } |
3235 | } | 3231 | } |
3236 | 3232 | ||
diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c index d75eeb5ce13a..f752235a1615 100644 --- a/drivers/target/iscsi/iscsi_target.c +++ b/drivers/target/iscsi/iscsi_target.c | |||
@@ -276,7 +276,7 @@ bool iscsit_check_np_match( | |||
276 | struct sockaddr_in *sock_in, *sock_in_e; | 276 | struct sockaddr_in *sock_in, *sock_in_e; |
277 | struct sockaddr_in6 *sock_in6, *sock_in6_e; | 277 | struct sockaddr_in6 *sock_in6, *sock_in6_e; |
278 | bool ip_match = false; | 278 | bool ip_match = false; |
279 | u16 port; | 279 | u16 port, port_e; |
280 | 280 | ||
281 | if (sockaddr->ss_family == AF_INET6) { | 281 | if (sockaddr->ss_family == AF_INET6) { |
282 | sock_in6 = (struct sockaddr_in6 *)sockaddr; | 282 | sock_in6 = (struct sockaddr_in6 *)sockaddr; |
@@ -288,6 +288,7 @@ bool iscsit_check_np_match( | |||
288 | ip_match = true; | 288 | ip_match = true; |
289 | 289 | ||
290 | port = ntohs(sock_in6->sin6_port); | 290 | port = ntohs(sock_in6->sin6_port); |
291 | port_e = ntohs(sock_in6_e->sin6_port); | ||
291 | } else { | 292 | } else { |
292 | sock_in = (struct sockaddr_in *)sockaddr; | 293 | sock_in = (struct sockaddr_in *)sockaddr; |
293 | sock_in_e = (struct sockaddr_in *)&np->np_sockaddr; | 294 | sock_in_e = (struct sockaddr_in *)&np->np_sockaddr; |
@@ -296,9 +297,10 @@ bool iscsit_check_np_match( | |||
296 | ip_match = true; | 297 | ip_match = true; |
297 | 298 | ||
298 | port = ntohs(sock_in->sin_port); | 299 | port = ntohs(sock_in->sin_port); |
300 | port_e = ntohs(sock_in_e->sin_port); | ||
299 | } | 301 | } |
300 | 302 | ||
301 | if (ip_match && (np->np_port == port) && | 303 | if (ip_match && (port_e == port) && |
302 | (np->np_network_transport == network_transport)) | 304 | (np->np_network_transport == network_transport)) |
303 | return true; | 305 | return true; |
304 | 306 | ||
@@ -343,8 +345,6 @@ struct iscsi_np *iscsit_add_np( | |||
343 | struct __kernel_sockaddr_storage *sockaddr, | 345 | struct __kernel_sockaddr_storage *sockaddr, |
344 | int network_transport) | 346 | int network_transport) |
345 | { | 347 | { |
346 | struct sockaddr_in *sock_in; | ||
347 | struct sockaddr_in6 *sock_in6; | ||
348 | struct iscsi_np *np; | 348 | struct iscsi_np *np; |
349 | int ret; | 349 | int ret; |
350 | 350 | ||
@@ -367,14 +367,6 @@ struct iscsi_np *iscsit_add_np( | |||
367 | } | 367 | } |
368 | 368 | ||
369 | np->np_flags |= NPF_IP_NETWORK; | 369 | np->np_flags |= NPF_IP_NETWORK; |
370 | if (sockaddr->ss_family == AF_INET6) { | ||
371 | sock_in6 = (struct sockaddr_in6 *)sockaddr; | ||
372 | np->np_port = ntohs(sock_in6->sin6_port); | ||
373 | } else { | ||
374 | sock_in = (struct sockaddr_in *)sockaddr; | ||
375 | np->np_port = ntohs(sock_in->sin_port); | ||
376 | } | ||
377 | |||
378 | np->np_network_transport = network_transport; | 370 | np->np_network_transport = network_transport; |
379 | spin_lock_init(&np->np_thread_lock); | 371 | spin_lock_init(&np->np_thread_lock); |
380 | init_completion(&np->np_restart_comp); | 372 | init_completion(&np->np_restart_comp); |
@@ -408,8 +400,8 @@ struct iscsi_np *iscsit_add_np( | |||
408 | list_add_tail(&np->np_list, &g_np_list); | 400 | list_add_tail(&np->np_list, &g_np_list); |
409 | mutex_unlock(&np_lock); | 401 | mutex_unlock(&np_lock); |
410 | 402 | ||
411 | pr_debug("CORE[0] - Added Network Portal: %pISc:%hu on %s\n", | 403 | pr_debug("CORE[0] - Added Network Portal: %pISpc on %s\n", |
412 | &np->np_sockaddr, np->np_port, np->np_transport->name); | 404 | &np->np_sockaddr, np->np_transport->name); |
413 | 405 | ||
414 | return np; | 406 | return np; |
415 | } | 407 | } |
@@ -478,8 +470,8 @@ int iscsit_del_np(struct iscsi_np *np) | |||
478 | list_del(&np->np_list); | 470 | list_del(&np->np_list); |
479 | mutex_unlock(&np_lock); | 471 | mutex_unlock(&np_lock); |
480 | 472 | ||
481 | pr_debug("CORE[0] - Removed Network Portal: %pISc:%hu on %s\n", | 473 | pr_debug("CORE[0] - Removed Network Portal: %pISpc on %s\n", |
482 | &np->np_sockaddr, np->np_port, np->np_transport->name); | 474 | &np->np_sockaddr, np->np_transport->name); |
483 | 475 | ||
484 | iscsit_put_transport(np->np_transport); | 476 | iscsit_put_transport(np->np_transport); |
485 | kfree(np); | 477 | kfree(np); |
@@ -3460,6 +3452,7 @@ iscsit_build_sendtargets_response(struct iscsi_cmd *cmd, | |||
3460 | tpg_np_list) { | 3452 | tpg_np_list) { |
3461 | struct iscsi_np *np = tpg_np->tpg_np; | 3453 | struct iscsi_np *np = tpg_np->tpg_np; |
3462 | bool inaddr_any = iscsit_check_inaddr_any(np); | 3454 | bool inaddr_any = iscsit_check_inaddr_any(np); |
3455 | struct __kernel_sockaddr_storage *sockaddr; | ||
3463 | 3456 | ||
3464 | if (np->np_network_transport != network_transport) | 3457 | if (np->np_network_transport != network_transport) |
3465 | continue; | 3458 | continue; |
@@ -3487,18 +3480,15 @@ iscsit_build_sendtargets_response(struct iscsi_cmd *cmd, | |||
3487 | } | 3480 | } |
3488 | } | 3481 | } |
3489 | 3482 | ||
3490 | if (inaddr_any) { | 3483 | if (inaddr_any) |
3491 | len = sprintf(buf, "TargetAddress=" | 3484 | sockaddr = &conn->local_sockaddr; |
3492 | "%s:%hu,%hu", | 3485 | else |
3493 | conn->local_ip, | 3486 | sockaddr = &np->np_sockaddr; |
3494 | np->np_port, | 3487 | |
3495 | tpg->tpgt); | 3488 | len = sprintf(buf, "TargetAddress=" |
3496 | } else { | 3489 | "%pISpc,%hu", |
3497 | len = sprintf(buf, "TargetAddress=" | 3490 | sockaddr, |
3498 | "%pISpc,%hu", | 3491 | tpg->tpgt); |
3499 | &np->np_sockaddr, | ||
3500 | tpg->tpgt); | ||
3501 | } | ||
3502 | len += 1; | 3492 | len += 1; |
3503 | 3493 | ||
3504 | if ((len + payload_len) > buffer_len) { | 3494 | if ((len + payload_len) > buffer_len) { |
diff --git a/drivers/target/iscsi/iscsi_target_configfs.c b/drivers/target/iscsi/iscsi_target_configfs.c index ad6a889dadc0..8d69c4132221 100644 --- a/drivers/target/iscsi/iscsi_target_configfs.c +++ b/drivers/target/iscsi/iscsi_target_configfs.c | |||
@@ -344,8 +344,8 @@ static void lio_target_call_delnpfromtpg( | |||
344 | 344 | ||
345 | se_tpg = &tpg->tpg_se_tpg; | 345 | se_tpg = &tpg->tpg_se_tpg; |
346 | pr_debug("LIO_Target_ConfigFS: DEREGISTER -> %s TPGT: %hu" | 346 | pr_debug("LIO_Target_ConfigFS: DEREGISTER -> %s TPGT: %hu" |
347 | " PORTAL: %pISc:%hu\n", config_item_name(&se_tpg->se_tpg_wwn->wwn_group.cg_item), | 347 | " PORTAL: %pISpc\n", config_item_name(&se_tpg->se_tpg_wwn->wwn_group.cg_item), |
348 | tpg->tpgt, &tpg_np->tpg_np->np_sockaddr, tpg_np->tpg_np->np_port); | 348 | tpg->tpgt, &tpg_np->tpg_np->np_sockaddr); |
349 | 349 | ||
350 | ret = iscsit_tpg_del_network_portal(tpg, tpg_np); | 350 | ret = iscsit_tpg_del_network_portal(tpg, tpg_np); |
351 | if (ret < 0) | 351 | if (ret < 0) |
diff --git a/drivers/target/iscsi/iscsi_target_login.c b/drivers/target/iscsi/iscsi_target_login.c index 88e0b97e8ea6..007299acefbd 100644 --- a/drivers/target/iscsi/iscsi_target_login.c +++ b/drivers/target/iscsi/iscsi_target_login.c | |||
@@ -729,8 +729,8 @@ int iscsi_post_login_handler( | |||
729 | } | 729 | } |
730 | 730 | ||
731 | pr_debug("iSCSI Login successful on CID: %hu from %s to" | 731 | pr_debug("iSCSI Login successful on CID: %hu from %s to" |
732 | " %s:%hu,%hu\n", conn->cid, conn->login_ip, | 732 | " %pISpc,%hu\n", conn->cid, conn->login_ip, |
733 | conn->local_ip, conn->local_port, tpg->tpgt); | 733 | &conn->local_sockaddr, tpg->tpgt); |
734 | 734 | ||
735 | list_add_tail(&conn->conn_list, &sess->sess_conn_list); | 735 | list_add_tail(&conn->conn_list, &sess->sess_conn_list); |
736 | atomic_inc(&sess->nconn); | 736 | atomic_inc(&sess->nconn); |
@@ -774,8 +774,8 @@ int iscsi_post_login_handler( | |||
774 | pr_debug("Moving to TARG_SESS_STATE_LOGGED_IN.\n"); | 774 | pr_debug("Moving to TARG_SESS_STATE_LOGGED_IN.\n"); |
775 | sess->session_state = TARG_SESS_STATE_LOGGED_IN; | 775 | sess->session_state = TARG_SESS_STATE_LOGGED_IN; |
776 | 776 | ||
777 | pr_debug("iSCSI Login successful on CID: %hu from %s to %s:%hu,%hu\n", | 777 | pr_debug("iSCSI Login successful on CID: %hu from %s to %pISpc,%hu\n", |
778 | conn->cid, conn->login_ip, conn->local_ip, conn->local_port, | 778 | conn->cid, conn->login_ip, &conn->local_sockaddr, |
779 | tpg->tpgt); | 779 | tpg->tpgt); |
780 | 780 | ||
781 | spin_lock_bh(&sess->conn_lock); | 781 | spin_lock_bh(&sess->conn_lock); |
@@ -823,8 +823,8 @@ static void iscsi_handle_login_thread_timeout(unsigned long data) | |||
823 | struct iscsi_np *np = (struct iscsi_np *) data; | 823 | struct iscsi_np *np = (struct iscsi_np *) data; |
824 | 824 | ||
825 | spin_lock_bh(&np->np_thread_lock); | 825 | spin_lock_bh(&np->np_thread_lock); |
826 | pr_err("iSCSI Login timeout on Network Portal %pISc:%hu\n", | 826 | pr_err("iSCSI Login timeout on Network Portal %pISpc\n", |
827 | &np->np_sockaddr, np->np_port); | 827 | &np->np_sockaddr); |
828 | 828 | ||
829 | if (np->np_login_timer_flags & ISCSI_TF_STOP) { | 829 | if (np->np_login_timer_flags & ISCSI_TF_STOP) { |
830 | spin_unlock_bh(&np->np_thread_lock); | 830 | spin_unlock_bh(&np->np_thread_lock); |
@@ -1027,13 +1027,15 @@ int iscsit_accept_np(struct iscsi_np *np, struct iscsi_conn *conn) | |||
1027 | rc = conn->sock->ops->getname(conn->sock, | 1027 | rc = conn->sock->ops->getname(conn->sock, |
1028 | (struct sockaddr *)&sock_in6, &err, 0); | 1028 | (struct sockaddr *)&sock_in6, &err, 0); |
1029 | if (!rc) { | 1029 | if (!rc) { |
1030 | if (!ipv6_addr_v4mapped(&sock_in6.sin6_addr)) | 1030 | if (!ipv6_addr_v4mapped(&sock_in6.sin6_addr)) { |
1031 | snprintf(conn->local_ip, sizeof(conn->local_ip), "[%pI6c]", | 1031 | memcpy(&conn->local_sockaddr, &sock_in6, sizeof(sock_in6)); |
1032 | &sock_in6.sin6_addr.in6_u); | 1032 | } else { |
1033 | else | 1033 | /* Pretend to be an ipv4 socket */ |
1034 | snprintf(conn->local_ip, sizeof(conn->local_ip), "%pI4", | 1034 | sock_in.sin_family = AF_INET; |
1035 | &sock_in6.sin6_addr.s6_addr32[3]); | 1035 | sock_in.sin_port = sock_in6.sin6_port; |
1036 | conn->local_port = ntohs(sock_in6.sin6_port); | 1036 | memcpy(&sock_in.sin_addr, &sock_in6.sin6_addr.s6_addr32[3], 4); |
1037 | memcpy(&conn->local_sockaddr, &sock_in, sizeof(sock_in)); | ||
1038 | } | ||
1037 | } | 1039 | } |
1038 | } else { | 1040 | } else { |
1039 | memset(&sock_in, 0, sizeof(struct sockaddr_in)); | 1041 | memset(&sock_in, 0, sizeof(struct sockaddr_in)); |
@@ -1048,11 +1050,8 @@ int iscsit_accept_np(struct iscsi_np *np, struct iscsi_conn *conn) | |||
1048 | 1050 | ||
1049 | rc = conn->sock->ops->getname(conn->sock, | 1051 | rc = conn->sock->ops->getname(conn->sock, |
1050 | (struct sockaddr *)&sock_in, &err, 0); | 1052 | (struct sockaddr *)&sock_in, &err, 0); |
1051 | if (!rc) { | 1053 | if (!rc) |
1052 | sprintf(conn->local_ip, "%pI4", | 1054 | memcpy(&conn->local_sockaddr, &sock_in, sizeof(sock_in)); |
1053 | &sock_in.sin_addr.s_addr); | ||
1054 | conn->local_port = ntohs(sock_in.sin_port); | ||
1055 | } | ||
1056 | } | 1055 | } |
1057 | 1056 | ||
1058 | return 0; | 1057 | return 0; |
@@ -1302,8 +1301,8 @@ static int __iscsi_target_login_thread(struct iscsi_np *np) | |||
1302 | spin_lock_bh(&np->np_thread_lock); | 1301 | spin_lock_bh(&np->np_thread_lock); |
1303 | if (np->np_thread_state != ISCSI_NP_THREAD_ACTIVE) { | 1302 | if (np->np_thread_state != ISCSI_NP_THREAD_ACTIVE) { |
1304 | spin_unlock_bh(&np->np_thread_lock); | 1303 | spin_unlock_bh(&np->np_thread_lock); |
1305 | pr_err("iSCSI Network Portal on %pISc:%hu currently not" | 1304 | pr_err("iSCSI Network Portal on %pISpc currently not" |
1306 | " active.\n", &np->np_sockaddr, np->np_port); | 1305 | " active.\n", &np->np_sockaddr); |
1307 | iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, | 1306 | iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, |
1308 | ISCSI_LOGIN_STATUS_SVC_UNAVAILABLE); | 1307 | ISCSI_LOGIN_STATUS_SVC_UNAVAILABLE); |
1309 | goto new_sess_out; | 1308 | goto new_sess_out; |
@@ -1313,8 +1312,8 @@ static int __iscsi_target_login_thread(struct iscsi_np *np) | |||
1313 | conn->network_transport = np->np_network_transport; | 1312 | conn->network_transport = np->np_network_transport; |
1314 | 1313 | ||
1315 | pr_debug("Received iSCSI login request from %s on %s Network" | 1314 | pr_debug("Received iSCSI login request from %s on %s Network" |
1316 | " Portal %s:%hu\n", conn->login_ip, np->np_transport->name, | 1315 | " Portal %pISpc\n", conn->login_ip, np->np_transport->name, |
1317 | conn->local_ip, conn->local_port); | 1316 | &conn->local_sockaddr); |
1318 | 1317 | ||
1319 | pr_debug("Moving to TARG_CONN_STATE_IN_LOGIN.\n"); | 1318 | pr_debug("Moving to TARG_CONN_STATE_IN_LOGIN.\n"); |
1320 | conn->conn_state = TARG_CONN_STATE_IN_LOGIN; | 1319 | conn->conn_state = TARG_CONN_STATE_IN_LOGIN; |
diff --git a/drivers/target/iscsi/iscsi_target_tpg.c b/drivers/target/iscsi/iscsi_target_tpg.c index 31007cb4c877..d61ae5167c42 100644 --- a/drivers/target/iscsi/iscsi_target_tpg.c +++ b/drivers/target/iscsi/iscsi_target_tpg.c | |||
@@ -514,8 +514,8 @@ struct iscsi_tpg_np *iscsit_tpg_add_network_portal( | |||
514 | spin_unlock(&tpg_np_parent->tpg_np_parent_lock); | 514 | spin_unlock(&tpg_np_parent->tpg_np_parent_lock); |
515 | } | 515 | } |
516 | 516 | ||
517 | pr_debug("CORE[%s] - Added Network Portal: %pISc:%hu,%hu on %s\n", | 517 | pr_debug("CORE[%s] - Added Network Portal: %pISpc,%hu on %s\n", |
518 | tpg->tpg_tiqn->tiqn, &np->np_sockaddr, np->np_port, tpg->tpgt, | 518 | tpg->tpg_tiqn->tiqn, &np->np_sockaddr, tpg->tpgt, |
519 | np->np_transport->name); | 519 | np->np_transport->name); |
520 | 520 | ||
521 | return tpg_np; | 521 | return tpg_np; |
@@ -528,8 +528,8 @@ static int iscsit_tpg_release_np( | |||
528 | { | 528 | { |
529 | iscsit_clear_tpg_np_login_thread(tpg_np, tpg, true); | 529 | iscsit_clear_tpg_np_login_thread(tpg_np, tpg, true); |
530 | 530 | ||
531 | pr_debug("CORE[%s] - Removed Network Portal: %pISc:%hu,%hu on %s\n", | 531 | pr_debug("CORE[%s] - Removed Network Portal: %pISpc,%hu on %s\n", |
532 | tpg->tpg_tiqn->tiqn, &np->np_sockaddr, np->np_port, tpg->tpgt, | 532 | tpg->tpg_tiqn->tiqn, &np->np_sockaddr, tpg->tpgt, |
533 | np->np_transport->name); | 533 | np->np_transport->name); |
534 | 534 | ||
535 | tpg_np->tpg_np = NULL; | 535 | tpg_np->tpg_np = NULL; |
diff --git a/include/target/iscsi/iscsi_target_core.h b/include/target/iscsi/iscsi_target_core.h index 1051d0c40ddd..b9434117785f 100644 --- a/include/target/iscsi/iscsi_target_core.h +++ b/include/target/iscsi/iscsi_target_core.h | |||
@@ -519,7 +519,6 @@ struct iscsi_conn { | |||
519 | u16 cid; | 519 | u16 cid; |
520 | /* Remote TCP Port */ | 520 | /* Remote TCP Port */ |
521 | u16 login_port; | 521 | u16 login_port; |
522 | u16 local_port; | ||
523 | int net_size; | 522 | int net_size; |
524 | int login_family; | 523 | int login_family; |
525 | u32 auth_id; | 524 | u32 auth_id; |
@@ -531,7 +530,7 @@ struct iscsi_conn { | |||
531 | u32 stat_sn; | 530 | u32 stat_sn; |
532 | #define IPV6_ADDRESS_SPACE 48 | 531 | #define IPV6_ADDRESS_SPACE 48 |
533 | unsigned char login_ip[IPV6_ADDRESS_SPACE]; | 532 | unsigned char login_ip[IPV6_ADDRESS_SPACE]; |
534 | unsigned char local_ip[IPV6_ADDRESS_SPACE]; | 533 | struct __kernel_sockaddr_storage local_sockaddr; |
535 | int conn_usage_count; | 534 | int conn_usage_count; |
536 | int conn_waiting_on_uc; | 535 | int conn_waiting_on_uc; |
537 | atomic_t check_immediate_queue; | 536 | atomic_t check_immediate_queue; |
@@ -778,7 +777,6 @@ struct iscsi_np { | |||
778 | enum iscsi_timer_flags_table np_login_timer_flags; | 777 | enum iscsi_timer_flags_table np_login_timer_flags; |
779 | u32 np_exports; | 778 | u32 np_exports; |
780 | enum np_flags_table np_flags; | 779 | enum np_flags_table np_flags; |
781 | u16 np_port; | ||
782 | spinlock_t np_thread_lock; | 780 | spinlock_t np_thread_lock; |
783 | struct completion np_restart_comp; | 781 | struct completion np_restart_comp; |
784 | struct socket *np_socket; | 782 | struct socket *np_socket; |