diff options
Diffstat (limited to 'drivers/scsi/scsi_transport_iscsi.c')
-rw-r--r-- | drivers/scsi/scsi_transport_iscsi.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c index e4a989fa477d..63a6ca49d4e5 100644 --- a/drivers/scsi/scsi_transport_iscsi.c +++ b/drivers/scsi/scsi_transport_iscsi.c | |||
@@ -2744,6 +2744,28 @@ exit_get_chap: | |||
2744 | return err; | 2744 | return err; |
2745 | } | 2745 | } |
2746 | 2746 | ||
2747 | static int iscsi_set_chap(struct iscsi_transport *transport, | ||
2748 | struct iscsi_uevent *ev, uint32_t len) | ||
2749 | { | ||
2750 | char *data = (char *)ev + sizeof(*ev); | ||
2751 | struct Scsi_Host *shost; | ||
2752 | int err = 0; | ||
2753 | |||
2754 | if (!transport->set_chap) | ||
2755 | return -ENOSYS; | ||
2756 | |||
2757 | shost = scsi_host_lookup(ev->u.set_path.host_no); | ||
2758 | if (!shost) { | ||
2759 | pr_err("%s could not find host no %u\n", | ||
2760 | __func__, ev->u.set_path.host_no); | ||
2761 | return -ENODEV; | ||
2762 | } | ||
2763 | |||
2764 | err = transport->set_chap(shost, data, len); | ||
2765 | scsi_host_put(shost); | ||
2766 | return err; | ||
2767 | } | ||
2768 | |||
2747 | static int iscsi_delete_chap(struct iscsi_transport *transport, | 2769 | static int iscsi_delete_chap(struct iscsi_transport *transport, |
2748 | struct iscsi_uevent *ev) | 2770 | struct iscsi_uevent *ev) |
2749 | { | 2771 | { |
@@ -3234,6 +3256,10 @@ iscsi_if_recv_msg(struct sk_buff *skb, struct nlmsghdr *nlh, uint32_t *group) | |||
3234 | case ISCSI_UEVENT_LOGOUT_FLASHNODE_SID: | 3256 | case ISCSI_UEVENT_LOGOUT_FLASHNODE_SID: |
3235 | err = iscsi_logout_flashnode_sid(transport, ev); | 3257 | err = iscsi_logout_flashnode_sid(transport, ev); |
3236 | break; | 3258 | break; |
3259 | case ISCSI_UEVENT_SET_CHAP: | ||
3260 | err = iscsi_set_chap(transport, ev, | ||
3261 | nlmsg_attrlen(nlh, sizeof(*ev))); | ||
3262 | break; | ||
3237 | default: | 3263 | default: |
3238 | err = -ENOSYS; | 3264 | err = -ENOSYS; |
3239 | break; | 3265 | break; |