1*8348SEric.Yu@Sun.COM /* 2*8348SEric.Yu@Sun.COM * CDDL HEADER START 3*8348SEric.Yu@Sun.COM * 4*8348SEric.Yu@Sun.COM * The contents of this file are subject to the terms of the 5*8348SEric.Yu@Sun.COM * Common Development and Distribution License (the "License"). 6*8348SEric.Yu@Sun.COM * You may not use this file except in compliance with the License. 7*8348SEric.Yu@Sun.COM * 8*8348SEric.Yu@Sun.COM * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*8348SEric.Yu@Sun.COM * or http://www.opensolaris.org/os/licensing. 10*8348SEric.Yu@Sun.COM * See the License for the specific language governing permissions 11*8348SEric.Yu@Sun.COM * and limitations under the License. 12*8348SEric.Yu@Sun.COM * 13*8348SEric.Yu@Sun.COM * When distributing Covered Code, include this CDDL HEADER in each 14*8348SEric.Yu@Sun.COM * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*8348SEric.Yu@Sun.COM * If applicable, add the following below this CDDL HEADER, with the 16*8348SEric.Yu@Sun.COM * fields enclosed by brackets "[]" replaced with your own identifying 17*8348SEric.Yu@Sun.COM * information: Portions Copyright [yyyy] [name of copyright owner] 18*8348SEric.Yu@Sun.COM * 19*8348SEric.Yu@Sun.COM * CDDL HEADER END 20*8348SEric.Yu@Sun.COM */ 21*8348SEric.Yu@Sun.COM 22*8348SEric.Yu@Sun.COM /* 23*8348SEric.Yu@Sun.COM * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 24*8348SEric.Yu@Sun.COM * Use is subject to license terms. 25*8348SEric.Yu@Sun.COM */ 26*8348SEric.Yu@Sun.COM 27*8348SEric.Yu@Sun.COM #ifndef _SOCKFS_SOCKTPI_IMPL_H 28*8348SEric.Yu@Sun.COM #define _SOCKFS_SOCKTPI_IMPL_H 29*8348SEric.Yu@Sun.COM 30*8348SEric.Yu@Sun.COM #include <sys/socketvar.h> 31*8348SEric.Yu@Sun.COM #include <fs/sockfs/socktpi.h> 32*8348SEric.Yu@Sun.COM 33*8348SEric.Yu@Sun.COM #ifdef __cplusplus 34*8348SEric.Yu@Sun.COM extern "C" { 35*8348SEric.Yu@Sun.COM #endif 36*8348SEric.Yu@Sun.COM 37*8348SEric.Yu@Sun.COM /* 38*8348SEric.Yu@Sun.COM * so_priv will always be set to &st_info 39*8348SEric.Yu@Sun.COM */ 40*8348SEric.Yu@Sun.COM typedef struct sotpi_sonode { 41*8348SEric.Yu@Sun.COM struct sonode st_sonode; 42*8348SEric.Yu@Sun.COM struct sotpi_info st_info; 43*8348SEric.Yu@Sun.COM } sotpi_sonode_t; 44*8348SEric.Yu@Sun.COM 45*8348SEric.Yu@Sun.COM extern void so_proc_tcapability_ack(struct sonode *, 46*8348SEric.Yu@Sun.COM struct T_capability_ack *); 47*8348SEric.Yu@Sun.COM extern void so_basic_strinit(struct sonode *); 48*8348SEric.Yu@Sun.COM extern void so_alloc_addr(struct sonode *, t_uscalar_t); 49*8348SEric.Yu@Sun.COM extern int so_set_events(struct sonode *, vnode_t *, cred_t *); 50*8348SEric.Yu@Sun.COM extern int so_sock2stream(struct sonode *); 51*8348SEric.Yu@Sun.COM extern void so_stream2sock(struct sonode *); 52*8348SEric.Yu@Sun.COM 53*8348SEric.Yu@Sun.COM extern int so_strinit(struct sonode *, struct sonode *); 54*8348SEric.Yu@Sun.COM extern void so_update_attrs(struct sonode *, int); 55*8348SEric.Yu@Sun.COM extern int sogetrderr(vnode_t *, int, int *); 56*8348SEric.Yu@Sun.COM extern int sogetwrerr(vnode_t *, int, int *); 57*8348SEric.Yu@Sun.COM extern int so_addr_verify(struct sonode *, const struct sockaddr *, 58*8348SEric.Yu@Sun.COM socklen_t); 59*8348SEric.Yu@Sun.COM extern int so_ux_addr_xlate(struct sonode *, struct sockaddr *, 60*8348SEric.Yu@Sun.COM socklen_t, int, void **, socklen_t *); 61*8348SEric.Yu@Sun.COM extern void so_unix_close(struct sonode *); 62*8348SEric.Yu@Sun.COM 63*8348SEric.Yu@Sun.COM extern int sowaitprim(struct sonode *, t_scalar_t, t_scalar_t, 64*8348SEric.Yu@Sun.COM t_uscalar_t, mblk_t **, clock_t); 65*8348SEric.Yu@Sun.COM extern int sowaitokack(struct sonode *, t_scalar_t); 66*8348SEric.Yu@Sun.COM extern int sowaitack(struct sonode *, mblk_t **, clock_t); 67*8348SEric.Yu@Sun.COM extern void soqueueack(struct sonode *, mblk_t *); 68*8348SEric.Yu@Sun.COM extern int sowaitconnind(struct sonode *, int, mblk_t **); 69*8348SEric.Yu@Sun.COM extern void soqueueconnind(struct sonode *, mblk_t *); 70*8348SEric.Yu@Sun.COM extern int soflushconnind(struct sonode *, t_scalar_t); 71*8348SEric.Yu@Sun.COM extern void so_drain_discon_ind(struct sonode *); 72*8348SEric.Yu@Sun.COM extern void so_flush_discon_ind(struct sonode *); 73*8348SEric.Yu@Sun.COM 74*8348SEric.Yu@Sun.COM extern mblk_t *soallocproto(size_t, int); 75*8348SEric.Yu@Sun.COM extern mblk_t *soallocproto1(const void *, ssize_t, ssize_t, int); 76*8348SEric.Yu@Sun.COM extern void soappendmsg(mblk_t *, const void *, ssize_t); 77*8348SEric.Yu@Sun.COM extern mblk_t *soallocproto2(const void *, ssize_t, const void *, ssize_t, 78*8348SEric.Yu@Sun.COM ssize_t, int); 79*8348SEric.Yu@Sun.COM extern mblk_t *soallocproto3(const void *, ssize_t, const void *, ssize_t, 80*8348SEric.Yu@Sun.COM const void *, ssize_t, ssize_t, int); 81*8348SEric.Yu@Sun.COM 82*8348SEric.Yu@Sun.COM extern int so_set_asyncsigs(vnode_t *, pid_t, int, int, cred_t *); 83*8348SEric.Yu@Sun.COM extern int so_flip_async(struct sonode *, vnode_t *, int, cred_t *); 84*8348SEric.Yu@Sun.COM extern int so_set_siggrp(struct sonode *, vnode_t *, pid_t, int, cred_t *); 85*8348SEric.Yu@Sun.COM 86*8348SEric.Yu@Sun.COM extern void so_installhooks(struct sonode *); 87*8348SEric.Yu@Sun.COM 88*8348SEric.Yu@Sun.COM extern int kstrwritemp(struct vnode *, mblk_t *, ushort_t); 89*8348SEric.Yu@Sun.COM extern int sostream_direct(struct sonode *, struct uio *, 90*8348SEric.Yu@Sun.COM mblk_t *, cred_t *); 91*8348SEric.Yu@Sun.COM extern int sosend_dgram(struct sonode *, struct sockaddr *, 92*8348SEric.Yu@Sun.COM socklen_t, struct uio *, int); 93*8348SEric.Yu@Sun.COM extern int sosend_svc(struct sonode *, struct uio *, t_scalar_t, int, int); 94*8348SEric.Yu@Sun.COM 95*8348SEric.Yu@Sun.COM #ifdef __cplusplus 96*8348SEric.Yu@Sun.COM } 97*8348SEric.Yu@Sun.COM #endif 98*8348SEric.Yu@Sun.COM 99*8348SEric.Yu@Sun.COM #endif /* _SOCKFS_SOCKTPI_IMPL_H */ 100