isns_scn.h revision fcf3ce441efd61da9bb2884968af01cb7c1452cc
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk/*
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk * CDDL HEADER START
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk *
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk * The contents of this file are subject to the terms of the
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk * Common Development and Distribution License (the "License").
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk * You may not use this file except in compliance with the License.
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk *
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk * or http://www.opensolaris.org/os/licensing.
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk * See the License for the specific language governing permissions
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk * and limitations under the License.
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk *
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk * When distributing Covered Code, include this CDDL HEADER in each
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk * If applicable, add the following below this CDDL HEADER, with the
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk * fields enclosed by brackets "[]" replaced with your own identifying
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk * information: Portions Copyright [yyyy] [name of copyright owner]
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk *
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk * CDDL HEADER END
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk */
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk/*
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk * Use is subject to license terms.
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk */
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk#ifndef _ISNS_SCN_H
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk#define _ISNS_SCN_H
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk#ifdef __cplusplus
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenkextern "C" {
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk#endif
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk/* raw scn data type */
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenktypedef struct scn_raw {
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk uint32_t event;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk int type;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk uint32_t uid;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk uchar_t *iscsi;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk uint32_t ref;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk uint32_t ilen;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk uint32_t nt;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk in6_addr_t *ip;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk uint32_t port;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk uint32_t dd_id;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk uint32_t dds_id;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk} scn_raw_t;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk/* scn context data type */
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenktypedef struct scn_text {
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk int flag;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk uint32_t ref;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk uint32_t uid;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk uchar_t *iscsi;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk uint32_t ilen;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk uint32_t nt;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk uint32_t dd_id;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk uint32_t dds_id;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk struct scn_text *next;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk} scn_text_t;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk/* portal data type stroed in scn registry */
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenktypedef struct scn_portal {
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk uint32_t uid;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk int sz;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk union {
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk in_addr_t in;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk in6_addr_t *in6;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk } ip;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk uint32_t port;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk uint32_t ref;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk int so;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk struct scn_portal *next;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk} scn_portal_t;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenktypedef struct scn_list {
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk union {
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk scn_text_t *text;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk scn_portal_t *portal;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk } data;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk struct scn_list *next;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk} scn_list_t;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk/* scn trigger uint */
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenktypedef struct scn {
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk uint32_t event;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk union {
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk scn_raw_t *raw;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk scn_list_t *list;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk } data;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk struct scn *next;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk} scn_t;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk/* scn registry list */
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenktypedef struct scn_registry {
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk uint32_t uid;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk uchar_t *name;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk uint32_t nlen;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk uint32_t bitmap;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk union {
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk scn_portal_t *p;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk scn_list_t *l;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk } portal;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk scn_t *scn;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk struct scn_registry *next;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk} scn_registry_t;
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk/* function prototypes */
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenkvoid *scn_proc(void *);
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenkint scn_list_load(uint32_t, uchar_t *, uint32_t, uint32_t);
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenkint verify_scn_portal(void);
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenkint add_scn_entry(uchar_t *, uint32_t, uint32_t);
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenkint remove_scn_entry(uchar_t *);
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenkint remove_scn_portal(uint32_t);
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenkint make_scn(uint32_t, isns_obj_t *);
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenkint connect_to(int, in_addr_t, in6_addr_t *, uint32_t);
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk#ifdef __cplusplus
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk}
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk#endif
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk#endif /* _ISNS_SCN_H */
7d602f039beb26151cdc6306cfd3952b98bdc424jeff.schenk