1/* 2 * Copyright (c) 2000 Apple Computer, Inc. All rights reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * The contents of this file constitute Original Code as defined in and 7 * are subject to the Apple Public Source License Version 1.1 (the 8 * "License"). You may not use this file except in compliance with the 9 * License. Please obtain a copy of the License at 10 * http://www.apple.com/publicsource and read it before using this file. 11 * 12 * This Original Code and all software distributed under the License are 13 * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER 14 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 15 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 16 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the 17 * License for the specific language governing rights and limitations 18 * under the License. 19 * 20 * @APPLE_LICENSE_HEADER_END@ 21 */ 22/* 23 * dspNewCID.c 24 * 25 * From v01.04 04/20/90 mbs 26 * Modified, April 9, 1997 by Tuyen Nguyen for MacOSX. 27 */ 28 29#include <sys/errno.h> 30#include <sys/types.h> 31#include <sys/param.h> 32#include <machine/spl.h> 33#include <sys/systm.h> 34#include <sys/kernel.h> 35#include <sys/proc.h> 36#include <sys/filedesc.h> 37#include <sys/fcntl.h> 38#include <sys/mbuf.h> 39#include <sys/socket.h> 40 41#include <netat/sysglue.h> 42#include <netat/appletalk.h> 43#include <netat/at_pcb.h> 44#include <netat/debug.h> 45#include <netat/adsp.h> 46#include <netat/adsp_internal.h> 47 48/* 49 * dspNewCID 50 * 51 * INPUTS: 52 * --> ccbRefNum refnum of connection end 53 * 54 * OUTPUTS: 55 * <-- newCID new connection identifier 56 * 57 * ERRORS: 58 * errRefNum bad connection refnum 59 * errState connection is not closed 60 */ 61int adspNewCID(sp, pb) /* (DSPPBPtr pb) */ 62 CCBPtr sp; 63 struct adspcmd *pb; 64{ 65 if (sp == 0) { 66 pb->ioResult = errRefNum; 67 return EINVAL; 68 } 69 70 if (sp->state != sClosed) { /* Can only assign to a closed connection */ 71 pb->ioResult = errState; 72 return EINVAL; 73 } 74 75 /* 76 * Assign a unique connection ID to this ccb 77 */ 78 sp->locCID = pb->u.newCIDParams.newcid = NextCID(); 79 80 pb->ioResult = 0; 81 adspioc_ack(0, pb->ioc, pb->gref); 82 return 0; 83} 84

