亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rndis.c

?? 優龍2410linux2.6.8內核源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
		DEBUG("%s: OID_GEN_BROADCAST_FRAMES_XMIT\n", __FUNCTION__);		if (rndis_per_dev_params [configNr].stats) {			*((u32 *) resp + 6) = rndis_per_dev_params [configNr].					stats->tx_packets/42;			retval = 0;		} else {			*((u32 *) resp + 6) = 0;			retval = 0;		}		break;			case OID_GEN_DIRECTED_BYTES_RCV:		DEBUG("%s: OID_GEN_DIRECTED_BYTES_RCV\n", __FUNCTION__);		*((u32 *) resp + 6) = 0;		retval = 0;		break;			case OID_GEN_DIRECTED_FRAMES_RCV:		DEBUG("%s: OID_GEN_DIRECTED_FRAMES_RCV\n", __FUNCTION__);		*((u32 *) resp + 6) = 0;		retval = 0;		break;			case OID_GEN_MULTICAST_BYTES_RCV:		DEBUG("%s: OID_GEN_MULTICAST_BYTES_RCV\n", __FUNCTION__);		if (rndis_per_dev_params [configNr].stats) {			*((u32 *) resp + 6) = rndis_per_dev_params [configNr].					stats->multicast*1111;			retval = 0;		} else {			*((u32 *) resp + 6) = 0;			retval = 0;		}		break;			case OID_GEN_MULTICAST_FRAMES_RCV:		DEBUG("%s: OID_GEN_MULTICAST_FRAMES_RCV\n", __FUNCTION__);		if (rndis_per_dev_params [configNr].stats) {			*((u32 *) resp + 6) = rndis_per_dev_params [configNr].					stats->multicast;			retval = 0;		} else {			*((u32 *) resp + 6) = 0;			retval = 0;		}		break;			case OID_GEN_BROADCAST_BYTES_RCV:		DEBUG("%s: OID_GEN_BROADCAST_BYTES_RCV\n", __FUNCTION__);		if (rndis_per_dev_params [configNr].stats) {			*((u32 *) resp + 6) = rndis_per_dev_params [configNr].					stats->rx_packets/42*255;			retval = 0;		} else {			*((u32 *) resp + 6) = 0;			retval = 0;		}		break;			case OID_GEN_BROADCAST_FRAMES_RCV:		DEBUG("%s: OID_GEN_BROADCAST_FRAMES_RCV\n", __FUNCTION__);		if (rndis_per_dev_params [configNr].stats) {			*((u32 *) resp + 6) = rndis_per_dev_params [configNr].					stats->rx_packets/42;			retval = 0;		} else {			*((u32 *) resp + 6) = 0;			retval = 0;		}		break;			case OID_GEN_RCV_CRC_ERROR:		DEBUG("%s: OID_GEN_RCV_CRC_ERROR\n", __FUNCTION__);		if (rndis_per_dev_params [configNr].stats) {			*((u32 *) resp + 6) = rndis_per_dev_params [configNr].					stats->rx_crc_errors;			retval = 0;		} else {			*((u32 *) resp + 6) = 0;			retval = 0;		}		break;			case OID_GEN_TRANSMIT_QUEUE_LENGTH:		DEBUG("%s: OID_GEN_TRANSMIT_QUEUE_LENGTH\n", __FUNCTION__);		*((u32 *) resp + 6) = 0;		retval = 0;		break;			case OID_GEN_GET_TIME_CAPS:		DEBUG("%s: OID_GEN_GET_TIME_CAPS\n", __FUNCTION__);		break;			case OID_GEN_GET_NETCARD_TIME:		DEBUG("%s: OID_GEN_GET_NETCARD_TIME\n", __FUNCTION__);		break;			case OID_GEN_NETCARD_LOAD:		DEBUG("%s: OID_GEN_NETCARD_LOAD\n", __FUNCTION__);		break;			case OID_GEN_DEVICE_PROFILE:		DEBUG("%s: OID_GEN_DEVICE_PROFILE\n", __FUNCTION__);		break;			case OID_GEN_INIT_TIME_MS:		DEBUG("%s: OID_GEN_INIT_TIME_MS\n", __FUNCTION__);		break;			case OID_GEN_RESET_COUNTS:		DEBUG("%s: OID_GEN_RESET_COUNTS\n", __FUNCTION__);		break;			case OID_GEN_MEDIA_SENSE_COUNTS:		DEBUG("%s: OID_GEN_MEDIA_SENSE_COUNTS\n", __FUNCTION__);		break;			case OID_GEN_FRIENDLY_NAME:		DEBUG("%s: OID_GEN_FRIENDLY_NAME\n", __FUNCTION__);		break;			case OID_GEN_MINIPORT_INFO:		DEBUG("%s: OID_GEN_MINIPORT_INFO\n", __FUNCTION__);		break;			case OID_GEN_RESET_VERIFY_PARAMETERS:		DEBUG("%s: OID_GEN_RESET_VERIFY_PARAMETERS\n", __FUNCTION__);		break;			/* mandatory */	case OID_802_3_PERMANENT_ADDRESS:		DEBUG("%s: OID_802_3_PERMANENT_ADDRESS\n", __FUNCTION__);		if (rndis_per_dev_params [configNr].dev) {			length = ETH_ALEN;			memcpy ((u8 *) resp + 24,				rndis_per_dev_params [configNr].host_mac,				length);			retval = 0;		} else {			*((u32 *) resp + 6) = 0;			retval = 0;		}		break;			/* mandatory */	case OID_802_3_CURRENT_ADDRESS:		DEBUG("%s: OID_802_3_CURRENT_ADDRESS\n", __FUNCTION__);		if (rndis_per_dev_params [configNr].dev) {			length = ETH_ALEN;			memcpy ((u8 *) resp + 24,				rndis_per_dev_params [configNr].host_mac,				length);			retval = 0;		}		break;			/* mandatory */	case OID_802_3_MULTICAST_LIST:		DEBUG("%s: OID_802_3_MULTICAST_LIST\n", __FUNCTION__);		length = 4;		/* Multicast base address only */		*((u32 *) resp + 6) = 0xE0000000;		retval = 0;		break;			/* mandatory */	case OID_802_3_MAXIMUM_LIST_SIZE:		DEBUG("%s: OID_802_3_MAXIMUM_LIST_SIZE\n", __FUNCTION__);		 length = 4;		/* Multicast base address only */		*((u32 *) resp + 6) = 1;		retval = 0;		break;			case OID_802_3_MAC_OPTIONS:		DEBUG("%s: OID_802_3_MAC_OPTIONS\n", __FUNCTION__);		break;			/* mandatory */	case OID_802_3_RCV_ERROR_ALIGNMENT:		DEBUG("%s: OID_802_3_RCV_ERROR_ALIGNMENT\n", __FUNCTION__);		if (rndis_per_dev_params [configNr].stats)		{			length = 4;			*((u32 *) resp + 6) = rndis_per_dev_params [configNr]					.stats->rx_frame_errors;			retval = 0;		}		break;			/* mandatory */	case OID_802_3_XMIT_ONE_COLLISION:		DEBUG("%s: OID_802_3_XMIT_ONE_COLLISION\n", __FUNCTION__);		length = 4;		*((u32 *) resp + 6) = 0;		retval = 0;		break;			/* mandatory */	case OID_802_3_XMIT_MORE_COLLISIONS:		DEBUG("%s: OID_802_3_XMIT_MORE_COLLISIONS\n", __FUNCTION__);		length = 4;		*((u32 *) resp + 6) = 0;		retval = 0;		break;			case OID_802_3_XMIT_DEFERRED:		DEBUG("%s: OID_802_3_XMIT_DEFERRED\n", __FUNCTION__);		/* TODO */		break;			case OID_802_3_XMIT_MAX_COLLISIONS:		DEBUG("%s: OID_802_3_XMIT_MAX_COLLISIONS\n", __FUNCTION__);		/* TODO */		break;			case OID_802_3_RCV_OVERRUN:		DEBUG("%s: OID_802_3_RCV_OVERRUN\n", __FUNCTION__);		/* TODO */		break;			case OID_802_3_XMIT_UNDERRUN:		DEBUG("%s: OID_802_3_XMIT_UNDERRUN\n", __FUNCTION__);		/* TODO */		break;			case OID_802_3_XMIT_HEARTBEAT_FAILURE:		DEBUG("%s: OID_802_3_XMIT_HEARTBEAT_FAILURE\n", __FUNCTION__);		/* TODO */		break;			case OID_802_3_XMIT_TIMES_CRS_LOST:		DEBUG("%s: OID_802_3_XMIT_TIMES_CRS_LOST\n", __FUNCTION__);		/* TODO */		break;			case OID_802_3_XMIT_LATE_COLLISIONS:		DEBUG("%s: OID_802_3_XMIT_LATE_COLLISIONS\n", __FUNCTION__);		/* TODO */		break;					default: printk (KERN_ERR "%s: unknown OID 0x%08X\n", 			 __FUNCTION__, OID);	}		resp->InformationBufferOffset = 16;	resp->InformationBufferLength = length;	resp->MessageLength = 24 + length;	r->length = 24 + length;	return retval;}static int gen_ndis_set_resp (u8 configNr, u32 OID, u8 *buf, u32 buf_len, 			      rndis_resp_t *r){	rndis_set_cmplt_type		*resp;	int 				i, retval = -ENOTSUPP;	struct rndis_config_parameter	*param;	struct rndis_params		*params;	u8 *cp;	if (!r)		return -ENOMEM;	resp = (rndis_set_cmplt_type *) r->buf;	if (!resp)		return -ENOMEM;	cp = (u8 *)resp;	switch (OID) {	case OID_GEN_CURRENT_PACKET_FILTER:		params = &rndis_per_dev_params [configNr];		retval = 0;		/* FIXME use this NDIS_PACKET_TYPE_* bitflags to		 * filter packets in hard_start_xmit()		 * NDIS_PACKET_TYPE_x == CDC_PACKET_TYPE_x for x in:		 *	PROMISCUOUS, DIRECTED,		 *	MULTICAST, ALL_MULTICAST, BROADCAST		 */		params->filter = *(u32 *)buf;		DEBUG("%s: OID_GEN_CURRENT_PACKET_FILTER %08x\n",			__FUNCTION__, params->filter);		/* this call has a significant side effect:  it's		 * what makes the packet flow start and stop, like		 * activating the CDC Ethernet altsetting.		 */		if (params->filter) {			params->state = RNDIS_DATA_INITIALIZED;			netif_carrier_on(params->dev);			if (netif_running(params->dev))				netif_wake_queue (params->dev);		} else {			params->state = RNDIS_INITIALIZED;			netif_carrier_off (params->dev);			netif_stop_queue (params->dev);		}		break;			case OID_802_3_MULTICAST_LIST:		/* I think we can ignore this */				DEBUG("%s: OID_802_3_MULTICAST_LIST\n", __FUNCTION__);		retval = 0;		break;			case OID_GEN_RNDIS_CONFIG_PARAMETER:		DEBUG("%s: OID_GEN_RNDIS_CONFIG_PARAMETER\n", __FUNCTION__);		param = (struct rndis_config_parameter *) buf;		if (param) {			for (i = 0; i < param->ParameterNameLength; i++) {				DEBUG ("%c", 				       *(buf + param->ParameterNameOffset + i));			}			DEBUG ("\n");		}				retval = 0;		break;			default: printk (KERN_ERR "%s: unknown OID 0x%08X\n", 			 __FUNCTION__, OID);	}		return retval;}/*  * Response Functions  */static int rndis_init_response (int configNr, rndis_init_msg_type *buf){	rndis_init_cmplt_type	*resp; 	rndis_resp_t            *r;		if (!rndis_per_dev_params [configNr].dev) return -ENOTSUPP;		r = rndis_add_response (configNr, sizeof (rndis_init_cmplt_type));		if (!r) return -ENOMEM;		resp = (rndis_init_cmplt_type *) r->buf;		if (!resp) return -ENOMEM;		resp->MessageType = REMOTE_NDIS_INITIALIZE_CMPLT;	resp->MessageLength = 52;	resp->RequestID = buf->RequestID;	resp->Status = RNDIS_STATUS_SUCCESS;	resp->MajorVersion = RNDIS_MAJOR_VERSION;	resp->MinorVersion = RNDIS_MINOR_VERSION;	resp->DeviceFlags = RNDIS_DF_CONNECTIONLESS;	resp->Medium = RNDIS_MEDIUM_802_3;	resp->MaxPacketsPerTransfer = 1;	resp->MaxTransferSize = rndis_per_dev_params [configNr].dev->mtu		+ sizeof (struct ethhdr)		+ sizeof (struct rndis_packet_msg_type)		+ 22;	resp->PacketAlignmentFactor = 0;	resp->AFListOffset = 0;	resp->AFListSize = 0;		if (rndis_per_dev_params [configNr].ack)	    rndis_per_dev_params [configNr].ack (	    		rndis_per_dev_params [configNr].dev);		return 0;}static int rndis_query_response (int configNr, rndis_query_msg_type *buf){	rndis_query_cmplt_type *resp;	rndis_resp_t            *r;		DEBUG("%s: OID = %08X\n", __FUNCTION__, buf->OID);	if (!rndis_per_dev_params [configNr].dev) return -ENOTSUPP;		/* 	 * we need more memory: 	 * oid_supported_list is the largest answer 	 */	r = rndis_add_response (configNr, sizeof (oid_supported_list));		if (!r) return -ENOMEM;	resp = (rndis_query_cmplt_type *) r->buf;		if (!resp) return -ENOMEM;		resp->MessageType = REMOTE_NDIS_QUERY_CMPLT;	resp->MessageLength = 24;	resp->RequestID = buf->RequestID;		if (gen_ndis_query_resp (configNr, buf->OID, r)) {		/* OID not supported */		resp->Status = RNDIS_STATUS_NOT_SUPPORTED;		resp->InformationBufferLength = 0;		resp->InformationBufferOffset = 0;	} else		resp->Status = RNDIS_STATUS_SUCCESS;		if (rndis_per_dev_params [configNr].ack)	    rndis_per_dev_params [configNr].ack (	    		rndis_per_dev_params [configNr].dev);	return 0;}static int rndis_set_response (int configNr, rndis_set_msg_type *buf){	rndis_set_cmplt_type	*resp;	rndis_resp_t		*r;	int			i;		r = rndis_add_response (configNr, sizeof (rndis_set_cmplt_type));		if (!r) return -ENOMEM;	resp = (rndis_set_cmplt_type *) r->buf;	if (!resp) return -ENOMEM;		DEBUG("%s: Length: %d\n", __FUNCTION__, buf->InformationBufferLength);	DEBUG("%s: Offset: %d\n", __FUNCTION__, buf->InformationBufferOffset);	DEBUG("%s: InfoBuffer: ", __FUNCTION__);		for (i = 0; i < buf->InformationBufferLength; i++) {		DEBUG ("%02x ", *(((u8 *) buf) + i + 12 +		       buf->InformationBufferOffset));	}		DEBUG ("\n");		resp->MessageType = REMOTE_NDIS_SET_CMPLT;	resp->MessageLength = 16;	resp->RequestID = buf->RequestID;	if (gen_ndis_set_resp (configNr, buf->OID, 			       ((u8 *) buf) + 28, 			       buf->InformationBufferLength, r))	    resp->Status = RNDIS_STATUS_NOT_SUPPORTED;	else resp->Status = RNDIS_STATUS_SUCCESS;		if (rndis_per_dev_params [configNr].ack)	    rndis_per_dev_params [configNr].ack (rndis_per_dev_params [configNr].dev);		return 0;}static int rndis_reset_response (int configNr, rndis_reset_msg_type *buf){	rndis_reset_cmplt_type	*resp;	rndis_resp_t		*r;		r = rndis_add_response (configNr, sizeof (rndis_reset_cmplt_type));		if (!r) return -ENOMEM;	resp = (rndis_reset_cmplt_type *) r->buf;	if (!resp) return -ENOMEM;		resp->MessageType = REMOTE_NDIS_RESET_CMPLT;	resp->MessageLength = 16;	resp->Status = RNDIS_STATUS_SUCCESS;	resp->AddressingReset = 1; /* resent information */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
毛片av一区二区| 国产精品小仙女| 亚洲精品视频免费看| 欧美一区二区国产| 欧美专区亚洲专区| 国产精品69毛片高清亚洲| 亚洲情趣在线观看| 久久日韩粉嫩一区二区三区| 欧美日韩中文字幕一区二区| 97成人超碰视| 色婷婷久久久综合中文字幕| aaa欧美日韩| 91捆绑美女网站| 91丨九色丨蝌蚪富婆spa| 国产69精品久久久久毛片| 亚洲国产精品久久久久婷婷884| 中文字幕制服丝袜成人av| 日韩一区二区三区免费观看| 欧美日韩在线三区| 欧美性受xxxx黑人xyx性爽| 91麻豆国产自产在线观看| 成人激情电影免费在线观看| 成人在线综合网站| 高清视频一区二区| 国产69精品久久99不卡| 国产精品一区二区无线| 国产中文字幕一区| 国产xxx精品视频大全| 国产成人精品1024| 不卡免费追剧大全电视剧网站| 丁香网亚洲国际| 欧美成人一区二区三区在线观看| 2020国产成人综合网| 国产人成亚洲第一网站在线播放 | |精品福利一区二区三区| 亚洲精品欧美综合四区| 奇米影视一区二区三区| 欧美色老头old∨ideo| 欧美日韩一区二区在线观看| 久久久精品天堂| 国产精品九色蝌蚪自拍| 亚洲制服丝袜一区| 国产精品自拍网站| 91黄色小视频| 精品国产乱码久久久久久免费| 中文字幕五月欧美| 日产欧产美韩系列久久99| 国产在线一区二区| 日本韩国一区二区| 日本一区二区在线不卡| 精油按摩中文字幕久久| 欧美亚洲综合在线| 国产亚洲欧美日韩日本| 成人一区二区在线观看| 欧美xxx久久| 国产剧情在线观看一区二区| 亚洲国产高清在线观看视频| 国产精品小仙女| 久久久精品欧美丰满| 国产老肥熟一区二区三区| 国产亚洲精品7777| 9i看片成人免费高清| 亚洲一区欧美一区| 欧美日韩三级一区| 日韩在线播放一区二区| 91精品国产综合久久香蕉的特点| 亚洲国产成人精品视频| 在线这里只有精品| ㊣最新国产の精品bt伙计久久| 国产精品99久久久久久久女警| 国产精品久久久久久久岛一牛影视| 欧美亚洲动漫制服丝袜| 久久成人久久爱| 国产日产精品1区| 91论坛在线播放| 亚洲曰韩产成在线| 欧美疯狂性受xxxxx喷水图片| 免费成人小视频| 精品国产一区二区三区忘忧草| 成人亚洲一区二区一| 亚洲久草在线视频| 欧美人与z0zoxxxx视频| 久草中文综合在线| 国产精品污污网站在线观看| 91精品婷婷国产综合久久| 福利视频网站一区二区三区| 亚洲欧美色图小说| 2017欧美狠狠色| 欧美日韩精品高清| 国产精品538一区二区在线| 婷婷开心久久网| 亚洲天堂av一区| 日韩一二三区视频| 色综合久久综合网欧美综合网| 亚洲精品一二三四区| 久久女同性恋中文字幕| 欧美情侣在线播放| 成人一区二区三区在线观看| 麻豆精品视频在线观看免费| 日韩 欧美一区二区三区| 国产精品大尺度| 精品久久久久久久久久久久久久久| aaa亚洲精品一二三区| 国产精品18久久久久久vr| 亚洲午夜精品一区二区三区他趣| 国产精品污www在线观看| 精品成a人在线观看| 欧美丰满一区二区免费视频| 日本韩国欧美三级| 91福利国产成人精品照片| 99视频有精品| 不卡的电视剧免费网站有什么| 国产伦精品一区二区三区视频青涩 | 国产精品资源站在线| 日韩中文欧美在线| 99精品视频免费在线观看| 国产一区二区影院| 国产激情91久久精品导航 | 久久久久久久久久久久久久久99 | 天天av天天翘天天综合网色鬼国产 | 日韩精品国产欧美| 亚洲3atv精品一区二区三区| 青娱乐精品视频在线| 美女一区二区久久| 国产91精品精华液一区二区三区| 色综合网色综合| 欧洲精品中文字幕| 精品毛片乱码1区2区3区| 欧美国产激情一区二区三区蜜月| 亚洲美腿欧美偷拍| 美女诱惑一区二区| 国产成人av自拍| 欧美日韩在线一区二区| 国产午夜精品福利| 日韩国产欧美在线视频| 成人av在线网站| 欧美大片国产精品| 中文字幕亚洲一区二区va在线| 亚洲大尺度视频在线观看| av不卡一区二区三区| 久久久.com| 韩日av一区二区| 91精品黄色片免费大全| 国产精品网站一区| 日韩精品在线一区二区| 日韩电影在线免费看| 午夜精品一区在线观看| 色婷婷久久综合| 一级特黄大欧美久久久| 欧美在线一二三| 欧美日韩三级一区二区| 日韩欧美精品三级| 欧美成人精品1314www| 九色综合狠狠综合久久| 欧美大白屁股肥臀xxxxxx| 日本亚洲欧美天堂免费| 精品免费一区二区三区| 成人免费黄色大片| 亚洲色图在线看| 欧美精品日韩综合在线| 国内精品在线播放| 欧美—级在线免费片| 国产成人在线观看免费网站| 欧美国产欧美亚州国产日韩mv天天看完整| 免费看日韩精品| 久久精品欧美一区二区三区不卡 | 日韩激情av在线| 欧美日韩一区二区三区免费看 | 男男视频亚洲欧美| 日韩小视频在线观看专区| 日本aⅴ免费视频一区二区三区 | av亚洲产国偷v产偷v自拍| 亚洲视频网在线直播| 在线视频一区二区免费| 亚洲国产中文字幕| 精品裸体舞一区二区三区| 国产成人aaaa| 性做久久久久久免费观看| 日韩视频一区二区三区| 国产精品资源在线| 亚洲第一电影网| 亚洲国产精品成人综合| 欧美区在线观看| 成人免费高清在线| 亚洲欧美欧美一区二区三区| 精品乱人伦小说| 欧美又粗又大又爽| 91亚洲国产成人精品一区二三 | 91精品免费观看| 色综合天天综合| 蜜臀av性久久久久av蜜臀妖精| 中文字幕乱码一区二区免费| 欧美日韩你懂得| 粉嫩aⅴ一区二区三区四区| 樱花影视一区二区| 欧美电影免费观看高清完整版在线| 国产大陆精品国产| 日本不卡不码高清免费观看| 亚洲天堂久久久久久久| 久久亚洲精品小早川怜子|