linux/drivers/target/iscsi/iscsi_target_nego.c

// SPDX-License-Identifier: GPL-2.0-or-later
/*******************************************************************************
 * This file contains main functions related to iSCSI Parameter negotiation.
 *
 * (c) Copyright 2007-2013 Datera, Inc.
 *
 * Author: Nicholas A. Bellinger <[email protected]>
 *
 ******************************************************************************/

#include <linux/ctype.h>
#include <linux/kthread.h>
#include <linux/slab.h>
#include <linux/sched/signal.h>
#include <net/sock.h>
#include <trace/events/sock.h>
#include <scsi/iscsi_proto.h>
#include <target/target_core_base.h>
#include <target/target_core_fabric.h>
#include <target/iscsi/iscsi_transport.h>

#include <target/iscsi/iscsi_target_core.h>
#include "iscsi_target_parameters.h"
#include "iscsi_target_login.h"
#include "iscsi_target_nego.h"
#include "iscsi_target_tpg.h"
#include "iscsi_target_util.h"
#include "iscsi_target.h"
#include "iscsi_target_auth.h"

#define MAX_LOGIN_PDUS

void convert_null_to_semi(char *buf, int len)
{}

static int strlen_semi(char *buf)
{}

int extract_param(
	const char *in_buf,
	const char *pattern,
	unsigned int max_length,
	char *out_buf,
	unsigned char *type)
{}

static struct iscsi_node_auth *iscsi_get_node_auth(struct iscsit_conn *conn)
{}

static u32 iscsi_handle_authentication(
	struct iscsit_conn *conn,
	char *in_buf,
	char *out_buf,
	int in_length,
	int *out_length,
	unsigned char *authtype)
{}

static void iscsi_remove_failed_auth_entry(struct iscsit_conn *conn)
{}

int iscsi_target_check_login_request(
	struct iscsit_conn *conn,
	struct iscsi_login *login)
{}
EXPORT_SYMBOL();

static int iscsi_target_check_first_request(
	struct iscsit_conn *conn,
	struct iscsi_login *login)
{}

static int iscsi_target_do_tx_login_io(struct iscsit_conn *conn, struct iscsi_login *login)
{}

static void iscsi_target_sk_data_ready(struct sock *sk)
{}

static void iscsi_target_sk_state_change(struct sock *);

static void iscsi_target_set_sock_callbacks(struct iscsit_conn *conn)
{}

static void iscsi_target_restore_sock_callbacks(struct iscsit_conn *conn)
{}

static int iscsi_target_do_login(struct iscsit_conn *, struct iscsi_login *);

static bool __iscsi_target_sk_check_close(struct sock *sk)
{}

static bool iscsi_target_sk_check_close(struct iscsit_conn *conn)
{}

static bool iscsi_target_sk_check_flag(struct iscsit_conn *conn, unsigned int flag)
{}

static bool iscsi_target_sk_check_and_clear(struct iscsit_conn *conn, unsigned int flag)
{}

static void iscsi_target_login_drop(struct iscsit_conn *conn, struct iscsi_login *login)
{}

static void iscsi_target_do_login_rx(struct work_struct *work)
{}

static void iscsi_target_sk_state_change(struct sock *sk)
{}

/*
 *	NOTE: We check for existing sessions or connections AFTER the initiator
 *	has been successfully authenticated in order to protect against faked
 *	ISID/TSIH combinations.
 */
static int iscsi_target_check_for_existing_instances(
	struct iscsit_conn *conn,
	struct iscsi_login *login)
{}

static int iscsi_target_do_authentication(
	struct iscsit_conn *conn,
	struct iscsi_login *login)
{}

bool iscsi_conn_auth_required(struct iscsit_conn *conn)
{}

static int iscsi_target_handle_csg_zero(
	struct iscsit_conn *conn,
	struct iscsi_login *login)
{}

static bool iscsi_conn_authenticated(struct iscsit_conn *conn,
				     struct iscsi_login *login)
{}

static int iscsi_target_handle_csg_one(struct iscsit_conn *conn, struct iscsi_login *login)
{}

/*
 * RETURN VALUE:
 *
 *  1 = Login successful
 * -1 = Login failed
 *  0 = More PDU exchanges required
 */
static int iscsi_target_do_login(struct iscsit_conn *conn, struct iscsi_login *login)
{}

static void iscsi_initiatorname_tolower(
	char *param_buf)
{}

/*
 * Processes the first Login Request..
 */
int iscsi_target_locate_portal(
	struct iscsi_np *np,
	struct iscsit_conn *conn,
	struct iscsi_login *login)
{}

int iscsi_target_start_negotiation(
	struct iscsi_login *login,
	struct iscsit_conn *conn)
{}

void iscsi_target_nego_release(struct iscsit_conn *conn)
{}