u16 hycapi_send_message(struct capi_ctr *ctrl, struct sk_buff *skb) 
static u16 hycapi_send_message(struct capi_ctr *ctrl, struct sk_buff *skb) 
u16 hycapi_send_message(struct capi_ctr *ctrl, struct sk_buff *skb){	__u16 appl_id;	int _len, _len2;	__u8 msghead[64];	hycapictrl_info *cinfo = ctrl->driverdata;	u16 retval = CAPI_NOERROR;	appl_id = CAPIMSG_APPID(skb->data);	switch(_hycapi_appCheck(appl_id, ctrl->cnr))	{		case 0:/*			printk(KERN_INFO "Need to register\n"); */			hycapi_register_internal(ctrl, 						 appl_id,						 &(hycapi_applications[appl_id-1].rp));			break;		case 1:			break;		default:			printk(KERN_ERR "HYCAPI: Controller mixup!\n");			retval = CAPI_ILLAPPNR;			goto out;	}	switch(CAPIMSG_CMD(skb->data)) {				case CAPI_DISCONNECT_B3_RESP:			capilib_free_ncci(&cinfo->ncci_head, appl_id, 					  CAPIMSG_NCCI(skb->data));			break;		case CAPI_DATA_B3_REQ:			_len = CAPIMSG_LEN(skb->data);			if (_len > 22) {				_len2 = _len - 22;				memcpy(msghead, skb->data, 22);				memcpy(skb->data + _len2, msghead, 22);				skb_pull(skb, _len2);				CAPIMSG_SETLEN(skb->data, 22);				retval = capilib_data_b3_req(&cinfo->ncci_head,							     CAPIMSG_APPID(skb->data),							     CAPIMSG_NCCI(skb->data),							     CAPIMSG_MSGID(skb->data));			}			break;		case CAPI_LISTEN_REQ:			if(hycapi_applications[appl_id-1].listen_req[ctrl->cnr-1])			{				kfree_skb(hycapi_applications[appl_id-1].listen_req[ctrl->cnr-1]);				hycapi_applications[appl_id-1].listen_req[ctrl->cnr-1] = NULL;			}			if (!(hycapi_applications[appl_id-1].listen_req[ctrl->cnr-1] = skb_copy(skb, GFP_ATOMIC))) 			{				printk(KERN_ERR "HYSDN: memory squeeze in private_listen\n");			} 			break;		default:			break;	} out:	if (retval == CAPI_NOERROR)		hycapi_sendmsg_internal(ctrl, skb);	else 		dev_kfree_skb_any(skb);	return retval;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/aade0e82739f4b24c5b952de68c8d794459ad531/hycapi.c/clean/drivers/isdn/hysdn/hycapi.c