/* Copyright (c) 2001, Stanford University * All rights reserved * * See the file LICENSE.txt for information on redistributing this software. */ #include "cr_net.h" #include "cr_mem.h" #include "cr_error.h" #include "net_internals.h" static void crDevnullWriteExact( CRConnection *conn, const void *buf, unsigned int len ) { (void) conn; (void) buf; (void) len; } static void * crDevnullAlloc( CRConnection *conn ) { return crAlloc( conn->buffer_size ); } static void crDevnullSingleRecv( CRConnection *conn, void *buf, unsigned int len ) { crError( "You can't receive data on a devnull connection!" ); (void) conn; (void) buf; (void) len; } static void crDevnullFree( CRConnection *conn, void *buf ) { crFree( buf ); (void) conn; } static void crDevnullSend( CRConnection *conn, void **bufp, const void *start, unsigned int len ) { if (bufp) { /* We're sending something we've allocated. It's now ours. * If the callers wants to send something else, he'll allocate * something else. * * ENFORCE IT! */ crDevnullFree( conn, *bufp ); } (void) conn; (void) bufp; (void) start; (void) len; } int crDevnullRecv( void ) { crError( "You can't receive data on a DevNull network, stupid." ); return 0; } void crDevnullInit( CRNetReceiveFuncList *rfl, CRNetCloseFuncList *cfl, unsigned int mtu ) { (void) rfl; (void) cfl; (void) mtu; } static void crDevnullAccept( CRConnection *conn, const char *hostname, unsigned short port ) { crError( "Well, you *could* accept a devnull client, but you'd be disappointed. "); (void) conn; (void) port; } static int crDevnullDoConnect( CRConnection *conn ) { (void) conn; return 1; } static void crDevnullDoDisconnect( CRConnection *conn ) { (void) conn; } void crDevnullConnection( CRConnection *conn ) { conn->type = CR_DROP_PACKETS; conn->Alloc = crDevnullAlloc; conn->Send = crDevnullSend; conn->SendExact = crDevnullWriteExact; conn->Recv = crDevnullSingleRecv; conn->Free = crDevnullFree; conn->Accept = crDevnullAccept; conn->Connect = crDevnullDoConnect; conn->Disconnect = crDevnullDoDisconnect; conn->actual_network = 0; } CRConnection** crDevnullDump( int * num ) { *num = 0; return NULL; }