1/* 2 * Copyright (c) 2006-2008,2010-2012 Apple Inc. All Rights Reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. Please obtain a copy of the License at 10 * http://www.opensource.apple.com/apsl/ and read it before using this 11 * file. 12 * 13 * The Original Code and all software distributed under the License are 14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 18 * Please see the License for the specific language governing rights and 19 * limitations under the License. 20 * 21 * @APPLE_LICENSE_HEADER_END@ 22 */ 23 24/* 25 * ioSock.h - socket-based I/O routines for use with Secure Transport 26 */ 27 28#ifndef _IO_SOCK_H_ 29#define _IO_SOCK_H_ 30 31#include <Security/SecureTransport.h> 32#include <sys/types.h> 33 34#ifdef __cplusplus 35extern "C" { 36#endif 37 38/* 39 * Opaque reference to an Open Transport connection. 40 */ 41typedef int otSocket; 42 43/* 44 * info about a peer returned from MakeServerConnection() and 45 * AcceptClientConnection(). 46 */ 47typedef struct 48{ UInt32 ipAddr; 49 int port; 50} PeerSpec; 51 52/* 53 * Ont-time only init. 54 */ 55void initSslOt(void); 56 57/* 58 * Connect to server. 59 */ 60extern OSStatus MakeServerConnection( 61 const char *hostName, 62 int port, 63 int nonBlocking, // 0 or 1 64 otSocket *socketNo, // RETURNED 65 PeerSpec *peer); // RETURNED 66 67/* 68 * Set up an otSocket to listen for client connections. Call once, then 69 * use multiple AcceptClientConnection calls. 70 */ 71OSStatus ListenForClients( 72 int port, 73 int nonBlocking, // 0 or 1 74 otSocket *socketNo); // RETURNED 75 76/* 77 * Accept a client connection. Call endpointShutdown() for each successful; 78 * return from this function. 79 */ 80OSStatus AcceptClientConnection( 81 otSocket listenSock, // obtained from ListenForClients 82 otSocket *acceptSock, // RETURNED 83 PeerSpec *peer); // RETURNED 84 85/* 86 * Shut down a connection. 87 */ 88void endpointShutdown( 89 otSocket socket); 90 91/* 92 * R/W. Called out from SSL. 93 */ 94OSStatus SocketRead( 95 SSLConnectionRef connection, 96 void *data, /* owned by 97 * caller, data 98 * RETURNED */ 99 size_t *dataLength); /* IN/OUT */ 100 101OSStatus SocketWrite( 102 SSLConnectionRef connection, 103 const void *data, 104 size_t *dataLength); /* IN/OUT */ 105 106#ifdef __cplusplus 107} 108#endif 109 110#endif /* _IO_SOCK_H_ */ 111