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

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

?? hdlc.c

?? 內核linux2.4.20,可跟rtlinux3.2打補丁 組成實時linux系統,編譯內核
?? C
?? 第 1 頁 / 共 3 頁
字號:
	else if (mode_is(hdlc, MODE_X25)) {		struct lapb_register_struct cb;		cb.connect_confirmation = x25_connected;		cb.connect_indication = x25_connected;		cb.disconnect_confirmation = x25_disconnected;		cb.disconnect_indication = x25_disconnected;		cb.data_indication = x25_data_indication;		cb.data_transmit = x25_data_transmit;		result = lapb_register(hdlc, &cb);		if (result != LAPB_OK)			return result;	}#endif	result = hdlc->open(hdlc);	if (result) {		if (mode_is(hdlc, MODE_FR | MODE_SOFT) ||		    mode_is(hdlc, MODE_CISCO | MODE_SOFT))			fr_cisco_close(hdlc);#ifdef CONFIG_HDLC_PPP		else if (mode_is(hdlc, MODE_PPP | MODE_SOFT)) {			sppp_close(dev);			sppp_detach(dev);			dev->rebuild_header = NULL;			dev->change_mtu = hdlc_change_mtu;			dev->mtu = HDLC_MAX_MTU;			dev->hard_header_len = 16;		}#endif#ifdef CONFIG_HDLC_X25		else if (mode_is(hdlc, MODE_X25))			lapb_unregister(hdlc);#endif	}	return result;}static int hdlc_close(struct net_device *dev){	hdlc_device *hdlc = dev_to_hdlc(dev);	hdlc->close(hdlc);	if (mode_is(hdlc, MODE_FR | MODE_SOFT) ||	    mode_is(hdlc, MODE_CISCO | MODE_SOFT))		fr_cisco_close(hdlc);#ifdef CONFIG_HDLC_PPP	else if (mode_is(hdlc, MODE_PPP | MODE_SOFT)) {		sppp_close(dev);		sppp_detach(dev);		dev->rebuild_header = NULL;		dev->change_mtu = hdlc_change_mtu;		dev->mtu = HDLC_MAX_MTU;		dev->hard_header_len = 16;	}#endif#ifdef CONFIG_HDLC_X25	else if (mode_is(hdlc, MODE_X25))		lapb_unregister(hdlc);#endif	return 0;}static int hdlc_xmit(struct sk_buff *skb, struct net_device *dev){	hdlc_device *hdlc = dev_to_hdlc(dev);#ifdef CONFIG_HDLC_X25	if (mode_is(hdlc, MODE_X25 | MODE_SOFT)) {		int result;		/* X.25 to LAPB */		switch (skb->data[0]) {		case 0:		/* Data to be transmitted */			skb_pull(skb, 1);			if ((result = lapb_data_request(hdlc, skb)) != LAPB_OK)				dev_kfree_skb(skb);			return 0;		case 1:			if ((result = lapb_connect_request(hdlc))!= LAPB_OK) {				if (result == LAPB_CONNECTED) {				/* Send connect confirm. msg to level 3 */					x25_connected(hdlc, 0);				} else {					printk(KERN_ERR "%s: LAPB connect "					       "request failed, error code = "					       "%i\n", hdlc_to_name(hdlc),					       result);				}			}			break;		case 2:			if ((result=lapb_disconnect_request(hdlc))!=LAPB_OK) {				if (result == LAPB_NOTCONNECTED) {				/* Send disconnect confirm. msg to level 3 */					x25_disconnected(hdlc, 0);				} else {					printk(KERN_ERR "%s: LAPB disconnect "					       "request failed, error code = "					       "%i\n", hdlc_to_name(hdlc),					       result);				}			}			break;		default:			/* to be defined */			break;		}		dev_kfree_skb(skb);		return 0;	} /* MODE_X25 */#endif /* CONFIG_HDLC_X25 */	return hdlc->xmit(hdlc, skb);}void hdlc_netif_rx(hdlc_device *hdlc, struct sk_buff *skb){/* skb contains raw HDLC frame, in both hard- and software modes */	skb->mac.raw = skb->data;	switch(hdlc->mode & MODE_MASK) {	case MODE_HDLC:		skb->protocol = htons(ETH_P_IP);		skb->dev = hdlc_to_dev(hdlc);		netif_rx(skb);		return;	case MODE_FR:		fr_netif(hdlc, skb);		return;	case MODE_CISCO:		cisco_netif(hdlc, skb);		return;#ifdef CONFIG_HDLC_PPP	case MODE_PPP:#if 0		sppp_input(hdlc_to_dev(hdlc), skb);#else		skb->protocol = htons(ETH_P_WAN_PPP);		skb->dev = hdlc_to_dev(hdlc);		netif_rx(skb);#endif		return;#endif#ifdef CONFIG_HDLC_X25	case MODE_X25:		skb->dev = hdlc_to_dev(hdlc);		if (lapb_data_received(hdlc, skb) == LAPB_OK)			return;		break;#endif	}	hdlc->stats.rx_errors++;	dev_kfree_skb_any(skb);}static struct net_device_stats *hdlc_get_stats(struct net_device *dev){	return &dev_to_hdlc(dev)->stats;}static int hdlc_set_mode(hdlc_device *hdlc, int mode){	int result = -1;	/* Default to soft modes */	struct net_device *dev = hdlc_to_dev(hdlc);	if(!capable(CAP_NET_ADMIN))		return -EPERM;	if(dev->flags & IFF_UP)		return -EBUSY;	dev->addr_len = 0;	dev->hard_header = NULL;	hdlc->mode = MODE_NONE;	if (!(mode & MODE_SOFT))		switch(mode & MODE_MASK) {		case MODE_HDLC:			result = hdlc->set_mode ?				hdlc->set_mode(hdlc, MODE_HDLC) : 0;			break;		case MODE_CISCO: /* By card */#ifdef CONFIG_HDLC_PPP		case MODE_PPP:#endif#ifdef CONFIG_HDLC_X25		case MODE_X25:#endif		case MODE_FR:			result = hdlc->set_mode ?				hdlc->set_mode(hdlc, mode) : -ENOSYS;			break;		default:			return -EINVAL;		}	if (result) {		mode |= MODE_SOFT; /* Try "host software" protocol */		switch(mode & MODE_MASK) {		case MODE_CISCO:			dev->hard_header = cisco_hard_header;			break;#ifdef CONFIG_HDLC_PPP		case MODE_PPP:			break;#endif#ifdef CONFIG_HDLC_X25		case MODE_X25:			break;#endif		case MODE_FR:			dev->hard_header = fr_hard_header;			dev->addr_len = 2;			*(u16*)dev->dev_addr = htons(LMI_DLCI);			dlci_to_q922(dev->broadcast, LMI_DLCI);			break;		default:			return -EINVAL;		}		result = hdlc->set_mode ?			hdlc->set_mode(hdlc, MODE_HDLC) : 0;	}	if (result)		return result;	hdlc->mode = mode;	switch(mode & MODE_MASK) {#ifdef CONFIG_HDLC_PPP	case MODE_PPP:   dev->type = ARPHRD_PPP;   break;#endif#ifdef CONFIG_HDLC_X25	case MODE_X25:   dev->type = ARPHRD_X25;   break;#endif	case MODE_FR:    dev->type = ARPHRD_FRAD;  break;	case MODE_CISCO: dev->type = ARPHRD_CISCO; break;	default:         dev->type = ARPHRD_RAWHDLC;	}	memset(&(hdlc->stats), 0, sizeof(struct net_device_stats));	destroy_pvc_list(hdlc);	return 0;}static int hdlc_fr_pvc(hdlc_device *hdlc, int dlci){	pvc_device **pvc_p = &hdlc->first_pvc;	pvc_device *pvc;	int result, create = 1;	/* Create or delete PVC */	if(!capable(CAP_NET_ADMIN))		return -EPERM;	if(dlci<0) {		dlci = -dlci;		create = 0;	}	if(dlci <= 0 || dlci >= 1024)		return -EINVAL;	/* Only 10 bits for DLCI, DLCI=0 is reserved */	if(!mode_is(hdlc, MODE_FR))		return -EINVAL;	/* Only meaningfull on FR */	while(*pvc_p) {		if (netdev_dlci(&(*pvc_p)->netdev) == dlci)			break;		pvc_p = &(*pvc_p)->next;	}	if (create) {		/* Create PVC */		if (*pvc_p != NULL)			return -EEXIST;		pvc = *pvc_p = kmalloc(sizeof(pvc_device), GFP_KERNEL);		if (!pvc) {			printk(KERN_WARNING "%s: Memory squeeze on "			       "hdlc_fr_pvc()\n", hdlc_to_name(hdlc));			return -ENOBUFS;		}		memset(pvc, 0, sizeof(pvc_device));		pvc->netdev.hard_start_xmit = pvc_xmit;		pvc->netdev.get_stats = pvc_get_stats;		pvc->netdev.open = pvc_open;		pvc->netdev.stop = pvc_close;		pvc->netdev.change_mtu = pvc_change_mtu;		pvc->netdev.mtu = HDLC_MAX_MTU;		pvc->netdev.type = ARPHRD_DLCI;		pvc->netdev.hard_header_len = 16;		pvc->netdev.hard_header = fr_hard_header;		pvc->netdev.tx_queue_len = 0;		pvc->netdev.flags = IFF_POINTOPOINT;		pvc->master = hdlc;		*(u16*)pvc->netdev.dev_addr = htons(dlci);		dlci_to_q922(pvc->netdev.broadcast, dlci);		pvc->netdev.addr_len = 2;		pvc->netdev.irq = hdlc_to_dev(hdlc)->irq;		result = dev_alloc_name(&pvc->netdev, "pvc%d");		if (result < 0) {			kfree(pvc);			*pvc_p = NULL;			return result;		}		if (register_netdevice(&pvc->netdev) != 0) {			kfree(pvc);			*pvc_p = NULL;			return -EIO;		}		if (!mode_is(hdlc, MODE_SOFT) && hdlc->create_pvc) {			result = hdlc->create_pvc(pvc);			if (result) {				unregister_netdevice(&pvc->netdev);				kfree(pvc);				*pvc_p = NULL;				return result;			}		}		hdlc->lmi.state |= LINK_STATE_CHANGED;		hdlc->pvc_count++;		return 0;	}	if (*pvc_p == NULL)		/* Delete PVC */		return -ENOENT;	pvc = *pvc_p;	if (pvc->netdev.flags & IFF_UP)		return -EBUSY;		/* PVC in use */	if (!mode_is(hdlc, MODE_SOFT) && hdlc->destroy_pvc)		hdlc->destroy_pvc(pvc);	hdlc->lmi.state |= LINK_STATE_CHANGED;	hdlc->pvc_count--;	*pvc_p = pvc->next;	unregister_netdevice(&pvc->netdev);	kfree(pvc);	return 0;}static int hdlc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd){	hdlc_device *hdlc = dev_to_hdlc(dev);	switch(cmd) {	case HDLCGMODE:		ifr->ifr_ifru.ifru_ivalue = hdlc->mode;		return 0;	case HDLCSMODE:		return hdlc_set_mode(hdlc, ifr->ifr_ifru.ifru_ivalue);	case HDLCPVC:		return hdlc_fr_pvc(hdlc, ifr->ifr_ifru.ifru_ivalue);	default:		if (hdlc->ioctl != NULL)			return hdlc->ioctl(hdlc, ifr, cmd);	}	return -EINVAL;}static int hdlc_init(struct net_device *dev){	hdlc_device *hdlc = dev_to_hdlc(dev);	memset(&(hdlc->stats), 0, sizeof(struct net_device_stats));	dev->get_stats = hdlc_get_stats;	dev->open = hdlc_open;	dev->stop = hdlc_close;	dev->hard_start_xmit = hdlc_xmit;	dev->do_ioctl = hdlc_ioctl;	dev->change_mtu = hdlc_change_mtu;	dev->mtu = HDLC_MAX_MTU;	dev->type = ARPHRD_RAWHDLC;	dev->hard_header_len = 16;	dev->flags = IFF_POINTOPOINT | IFF_NOARP;	return 0;}int register_hdlc_device(hdlc_device *hdlc){	int result;	struct net_device *dev = hdlc_to_dev(hdlc);	dev->init = hdlc_init;	dev->priv = &hdlc->syncppp_ptr;	hdlc->syncppp_ptr = &hdlc->pppdev;	hdlc->pppdev.dev = dev;	hdlc->mode = MODE_NONE;	hdlc->lmi.T391 = 10;	/* polling verification timer */	hdlc->lmi.T392 = 15;	/* link integrity verification polling timer */	hdlc->lmi.N391 = 6;	/* full status polling counter */	hdlc->lmi.N392 = 3;	/* error threshold */	hdlc->lmi.N393 = 4;	/* monitored events count */	result = dev_alloc_name(dev, "hdlc%d");	if (result<0)		return result;	result = register_netdev(dev);	if (result != 0)		return -EIO;	MOD_INC_USE_COUNT;	return 0;}void unregister_hdlc_device(hdlc_device *hdlc){	destroy_pvc_list(hdlc);	unregister_netdev(hdlc_to_dev(hdlc));	MOD_DEC_USE_COUNT;}MODULE_AUTHOR("Krzysztof Halasa <khc@pm.waw.pl>");MODULE_DESCRIPTION("HDLC support module");MODULE_LICENSE("GPL");EXPORT_SYMBOL(hdlc_netif_rx);EXPORT_SYMBOL(register_hdlc_device);EXPORT_SYMBOL(unregister_hdlc_device);static int __init hdlc_module_init(void){	printk(KERN_INFO "%s\n", version);	return 0;}module_init(hdlc_module_init);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
男人的j进女人的j一区| 日韩亚洲欧美综合| 欧美一区二区三区思思人| 亚洲天天做日日做天天谢日日欢| 精品一区二区久久| 这里是久久伊人| 日韩制服丝袜av| 欧亚洲嫩模精品一区三区| 亚洲欧美另类久久久精品2019| 国产91精品在线观看| 国产亚洲精品精华液| 国产福利一区在线| 国产精品污网站| 91视频你懂的| 亚洲午夜电影网| 欧美精品乱人伦久久久久久| 亚洲免费观看高清完整版在线观看 | 日韩女优av电影| 亚洲制服丝袜一区| 欧美日韩精品一区二区天天拍小说 | 久久精品一区蜜桃臀影院| 图片区小说区国产精品视频| 欧美午夜精品久久久久久超碰| 亚洲一二三四久久| 欧美网站大全在线观看| 亚洲国产成人av网| 91精品久久久久久久久99蜜臂| 日韩精品色哟哟| 欧美精品一区二区蜜臀亚洲| 国产精品一区二区男女羞羞无遮挡 | 高清成人免费视频| 18欧美乱大交hd1984| 在线一区二区三区做爰视频网站| 一区二区三区鲁丝不卡| 欧美日本视频在线| 精品一区二区三区久久久| 久久精品人人做人人爽人人| 99精品视频一区二区三区| 亚洲午夜日本在线观看| 在线视频一区二区免费| 亚洲午夜在线视频| 日韩精品一区二区三区在线播放 | 一级日本不卡的影视| 欧美日韩电影在线| 国产在线不卡视频| 一区二区三区四区国产精品| 欧美一区二区三区在线电影| 美国一区二区三区在线播放| 精品99久久久久久| aa级大片欧美| 另类小说欧美激情| 亚洲色图19p| 日韩亚洲欧美在线| 91久久奴性调教| 韩国精品一区二区| 亚洲影视资源网| 中文一区在线播放 | 欧美精品丝袜久久久中文字幕| 九一久久久久久| 一区二区在线观看视频在线观看| 欧美精品久久天天躁| 成人精品在线视频观看| 日韩电影在线观看网站| **网站欧美大片在线观看| 日韩欧美国产1| 精品视频一区 二区 三区| 国产精品影视在线观看| 丝瓜av网站精品一区二区| 国产精品毛片大码女人| 欧美电视剧在线看免费| 91久久精品一区二区| 国产成人自拍高清视频在线免费播放| 亚洲一本大道在线| 亚洲欧洲美洲综合色网| 久久网站热最新地址| 欧美视频日韩视频在线观看| 九九精品一区二区| 日本午夜一本久久久综合| 亚洲一区中文在线| 亚洲激情欧美激情| 中文幕一区二区三区久久蜜桃| 精品国产一区二区三区不卡 | 亚洲一区二区综合| 综合激情成人伊人| 国产日韩亚洲欧美综合| 亚洲精品一区二区精华| 日韩色视频在线观看| 欧美日本一区二区三区四区| 欧美在线小视频| 91久久精品日日躁夜夜躁欧美| 国产精品资源网| 午夜国产精品一区| 日韩1区2区3区| 蜜桃视频一区二区三区在线观看| 丝袜美腿亚洲一区二区图片| 亚洲国产裸拍裸体视频在线观看乱了 | 亚洲欧洲精品成人久久奇米网| 2023国产精品视频| 久久香蕉国产线看观看99| 久久久亚洲午夜电影| 精品99999| 久久九九影视网| 国产欧美精品区一区二区三区 | 日韩欧美亚洲国产精品字幕久久久 | 国产日韩精品一区二区浪潮av| 日韩欧美亚洲一区二区| 久久综合五月天婷婷伊人| 久久久久久99久久久精品网站| 日韩欧美在线不卡| 欧美精品一区二区三区视频| 国产网站一区二区三区| 亚洲婷婷综合色高清在线| 国产精品久久99| 亚洲欧美偷拍三级| 天堂久久一区二区三区| 亚洲精品国产a久久久久久| 1024国产精品| 亚洲国产精品天堂| 另类调教123区 | 亚洲国产日韩精品| 捆绑调教一区二区三区| 国产精品一级片在线观看| 9人人澡人人爽人人精品| 欧美性大战xxxxx久久久| 91麻豆精品国产91久久久久久 | 久久成人18免费观看| 国产一区美女在线| 91丝袜美女网| 欧美精品一二三| 久久综合久久久久88| 国产精品精品国产色婷婷| 亚洲.国产.中文慕字在线| 韩国三级中文字幕hd久久精品| 大美女一区二区三区| 欧美午夜宅男影院| 久久九九99视频| 亚洲一区二区精品视频| 韩国av一区二区三区在线观看 | 狠狠狠色丁香婷婷综合激情| 波多野结衣中文一区| 538prom精品视频线放| 国产午夜精品久久| 亚洲视频你懂的| 午夜欧美2019年伦理| 国产美女主播视频一区| 在线视频你懂得一区| 欧美精品一区在线观看| 亚洲最大成人综合| 国产河南妇女毛片精品久久久| 在线观看亚洲精品| 国产欧美一区二区在线观看| 久久综合九色综合久久久精品综合| 欧美老肥妇做.爰bbww视频| 国产精品全国免费观看高清 | 91成人国产精品| 国产精品女同一区二区三区| 韩国精品一区二区| 日韩欧美一区二区视频| 亚洲最新视频在线观看| 91在线无精精品入口| 欧美激情一区二区三区蜜桃视频| 天天色图综合网| 色噜噜偷拍精品综合在线| 亚洲欧美在线高清| 成人综合在线观看| 国产精品色噜噜| 成人毛片视频在线观看| 中文字幕不卡在线观看| 成人99免费视频| 国产精品久久久久永久免费观看| 高清国产午夜精品久久久久久| 久久久不卡网国产精品一区| 国产曰批免费观看久久久| 久久老女人爱爱| 国产一区二区毛片| 久久精品亚洲麻豆av一区二区| 久久精品国产精品青草| 久久伊人蜜桃av一区二区| 国产麻豆精品久久一二三| 2020国产精品久久精品美国| 粉嫩aⅴ一区二区三区四区五区| 国产目拍亚洲精品99久久精品| 国产91精品露脸国语对白| 国产精品每日更新在线播放网址| 99re8在线精品视频免费播放| ...av二区三区久久精品| 欧美在线三级电影| 精品一区二区国语对白| 国产拍欧美日韩视频二区| 99re亚洲国产精品| 亚洲一区二区三区在线看| 日韩一区国产二区欧美三区| 精品午夜久久福利影院| 国产精品久久久久久久久快鸭| 99国产精品国产精品久久| 天堂va蜜桃一区二区三区漫画版| 日韩欧美不卡一区| 成人精品视频一区二区三区| 亚洲精品免费视频| 日韩丝袜美女视频|