10f1702c5SYu Xiangning /* 20f1702c5SYu Xiangning * CDDL HEADER START 30f1702c5SYu Xiangning * 40f1702c5SYu Xiangning * The contents of this file are subject to the terms of the 50f1702c5SYu Xiangning * Common Development and Distribution License (the "License"). 60f1702c5SYu Xiangning * You may not use this file except in compliance with the License. 70f1702c5SYu Xiangning * 80f1702c5SYu Xiangning * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 90f1702c5SYu Xiangning * or http://www.opensolaris.org/os/licensing. 100f1702c5SYu Xiangning * See the License for the specific language governing permissions 110f1702c5SYu Xiangning * and limitations under the License. 120f1702c5SYu Xiangning * 130f1702c5SYu Xiangning * When distributing Covered Code, include this CDDL HEADER in each 140f1702c5SYu Xiangning * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 150f1702c5SYu Xiangning * If applicable, add the following below this CDDL HEADER, with the 160f1702c5SYu Xiangning * fields enclosed by brackets "[]" replaced with your own identifying 170f1702c5SYu Xiangning * information: Portions Copyright [yyyy] [name of copyright owner] 180f1702c5SYu Xiangning * 190f1702c5SYu Xiangning * CDDL HEADER END 200f1702c5SYu Xiangning */ 210f1702c5SYu Xiangning 220f1702c5SYu Xiangning /* 23*de8c4a14SErik Nordmark * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 240f1702c5SYu Xiangning * Use is subject to license terms. 250f1702c5SYu Xiangning */ 260f1702c5SYu Xiangning 270f1702c5SYu Xiangning #ifndef _SOCKFS_SOCKTPI_IMPL_H 280f1702c5SYu Xiangning #define _SOCKFS_SOCKTPI_IMPL_H 290f1702c5SYu Xiangning 300f1702c5SYu Xiangning #include <sys/socketvar.h> 310f1702c5SYu Xiangning #include <fs/sockfs/socktpi.h> 320f1702c5SYu Xiangning 330f1702c5SYu Xiangning #ifdef __cplusplus 340f1702c5SYu Xiangning extern "C" { 350f1702c5SYu Xiangning #endif 360f1702c5SYu Xiangning 370f1702c5SYu Xiangning /* 380f1702c5SYu Xiangning * so_priv will always be set to &st_info 390f1702c5SYu Xiangning */ 400f1702c5SYu Xiangning typedef struct sotpi_sonode { 410f1702c5SYu Xiangning struct sonode st_sonode; 420f1702c5SYu Xiangning struct sotpi_info st_info; 430f1702c5SYu Xiangning } sotpi_sonode_t; 440f1702c5SYu Xiangning 450f1702c5SYu Xiangning extern void so_proc_tcapability_ack(struct sonode *, 460f1702c5SYu Xiangning struct T_capability_ack *); 470f1702c5SYu Xiangning extern void so_basic_strinit(struct sonode *); 480f1702c5SYu Xiangning extern void so_alloc_addr(struct sonode *, t_uscalar_t); 490f1702c5SYu Xiangning extern int so_set_events(struct sonode *, vnode_t *, cred_t *); 500f1702c5SYu Xiangning extern int so_sock2stream(struct sonode *); 510f1702c5SYu Xiangning extern void so_stream2sock(struct sonode *); 520f1702c5SYu Xiangning 530f1702c5SYu Xiangning extern int so_strinit(struct sonode *, struct sonode *); 540f1702c5SYu Xiangning extern void so_update_attrs(struct sonode *, int); 550f1702c5SYu Xiangning extern int sogetrderr(vnode_t *, int, int *); 560f1702c5SYu Xiangning extern int sogetwrerr(vnode_t *, int, int *); 570f1702c5SYu Xiangning extern int so_addr_verify(struct sonode *, const struct sockaddr *, 580f1702c5SYu Xiangning socklen_t); 590f1702c5SYu Xiangning extern int so_ux_addr_xlate(struct sonode *, struct sockaddr *, 600f1702c5SYu Xiangning socklen_t, int, void **, socklen_t *); 610f1702c5SYu Xiangning extern void so_unix_close(struct sonode *); 620f1702c5SYu Xiangning 630f1702c5SYu Xiangning extern int sowaitprim(struct sonode *, t_scalar_t, t_scalar_t, 640f1702c5SYu Xiangning t_uscalar_t, mblk_t **, clock_t); 650f1702c5SYu Xiangning extern int sowaitokack(struct sonode *, t_scalar_t); 660f1702c5SYu Xiangning extern int sowaitack(struct sonode *, mblk_t **, clock_t); 670f1702c5SYu Xiangning extern void soqueueack(struct sonode *, mblk_t *); 680f1702c5SYu Xiangning extern int sowaitconnind(struct sonode *, int, mblk_t **); 690f1702c5SYu Xiangning extern void soqueueconnind(struct sonode *, mblk_t *); 700f1702c5SYu Xiangning extern int soflushconnind(struct sonode *, t_scalar_t); 710f1702c5SYu Xiangning extern void so_drain_discon_ind(struct sonode *); 720f1702c5SYu Xiangning extern void so_flush_discon_ind(struct sonode *); 730f1702c5SYu Xiangning 74*de8c4a14SErik Nordmark extern mblk_t *soallocproto(size_t, int, cred_t *); 75*de8c4a14SErik Nordmark extern mblk_t *soallocproto1(const void *, ssize_t, ssize_t, int, cred_t *); 760f1702c5SYu Xiangning extern void soappendmsg(mblk_t *, const void *, ssize_t); 770f1702c5SYu Xiangning extern mblk_t *soallocproto2(const void *, ssize_t, const void *, ssize_t, 78*de8c4a14SErik Nordmark ssize_t, int, cred_t *); 790f1702c5SYu Xiangning extern mblk_t *soallocproto3(const void *, ssize_t, const void *, ssize_t, 80*de8c4a14SErik Nordmark const void *, ssize_t, ssize_t, int, cred_t *); 810f1702c5SYu Xiangning 820f1702c5SYu Xiangning extern int so_set_asyncsigs(vnode_t *, pid_t, int, int, cred_t *); 830f1702c5SYu Xiangning extern int so_flip_async(struct sonode *, vnode_t *, int, cred_t *); 840f1702c5SYu Xiangning extern int so_set_siggrp(struct sonode *, vnode_t *, pid_t, int, cred_t *); 850f1702c5SYu Xiangning 860f1702c5SYu Xiangning extern void so_installhooks(struct sonode *); 870f1702c5SYu Xiangning 880f1702c5SYu Xiangning extern int kstrwritemp(struct vnode *, mblk_t *, ushort_t); 890f1702c5SYu Xiangning extern int sostream_direct(struct sonode *, struct uio *, 900f1702c5SYu Xiangning mblk_t *, cred_t *); 910f1702c5SYu Xiangning extern int sosend_dgram(struct sonode *, struct sockaddr *, 920f1702c5SYu Xiangning socklen_t, struct uio *, int); 930f1702c5SYu Xiangning extern int sosend_svc(struct sonode *, struct uio *, t_scalar_t, int, int); 940f1702c5SYu Xiangning 950f1702c5SYu Xiangning #ifdef __cplusplus 960f1702c5SYu Xiangning } 970f1702c5SYu Xiangning #endif 980f1702c5SYu Xiangning 990f1702c5SYu Xiangning #endif /* _SOCKFS_SOCKTPI_IMPL_H */ 100