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

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

?? llc_c_ac.c

?? linux 內核源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* * llc_c_ac.c - actions performed during connection state transition. * * Description: *   Functions in this module are implementation of connection component actions *   Details of actions can be found in IEEE-802.2 standard document. *   All functions have one connection and one event as input argument. All of *   them return 0 On success and 1 otherwise. * * Copyright (c) 1997 by Procom Technology, Inc. * 		 2001-2003 by Arnaldo Carvalho de Melo <acme@conectiva.com.br> * * This program can be redistributed or modified under the terms of the * GNU General Public License as published by the Free Software Foundation. * This program is distributed without any warranty or implied warranty * of merchantability or fitness for a particular purpose. * * See the GNU General Public License for more details. */#include <linux/netdevice.h>#include <net/llc_conn.h>#include <net/llc_sap.h>#include <net/sock.h>#include <net/llc_c_ev.h>#include <net/llc_c_ac.h>#include <net/llc_c_st.h>#include <net/llc_pdu.h>#include <net/llc.h>static int llc_conn_ac_inc_vs_by_1(struct sock *sk, struct sk_buff *skb);static void llc_process_tmr_ev(struct sock *sk, struct sk_buff *skb);static int llc_conn_ac_data_confirm(struct sock *sk, struct sk_buff *ev);static int llc_conn_ac_inc_npta_value(struct sock *sk, struct sk_buff *skb);static int llc_conn_ac_send_rr_rsp_f_set_ackpf(struct sock *sk,					       struct sk_buff *skb);static int llc_conn_ac_set_p_flag_1(struct sock *sk, struct sk_buff *skb);#define INCORRECT 0int llc_conn_ac_clear_remote_busy(struct sock *sk, struct sk_buff *skb){	struct llc_sock *llc = llc_sk(sk);	if (llc->remote_busy_flag) {		u8 nr;		struct llc_pdu_sn *pdu = llc_pdu_sn_hdr(skb);		llc->remote_busy_flag = 0;		del_timer(&llc->busy_state_timer.timer);		nr = LLC_I_GET_NR(pdu);		llc_conn_resend_i_pdu_as_cmd(sk, nr, 0);	}	return 0;}int llc_conn_ac_conn_ind(struct sock *sk, struct sk_buff *skb){	struct llc_conn_state_ev *ev = llc_conn_ev(skb);	ev->ind_prim = LLC_CONN_PRIM;	return 0;}int llc_conn_ac_conn_confirm(struct sock *sk, struct sk_buff *skb){	struct llc_conn_state_ev *ev = llc_conn_ev(skb);	ev->cfm_prim = LLC_CONN_PRIM;	return 0;}static int llc_conn_ac_data_confirm(struct sock *sk, struct sk_buff *skb){	struct llc_conn_state_ev *ev = llc_conn_ev(skb);	ev->cfm_prim = LLC_DATA_PRIM;	return 0;}int llc_conn_ac_data_ind(struct sock *sk, struct sk_buff *skb){	llc_conn_rtn_pdu(sk, skb);	return 0;}int llc_conn_ac_disc_ind(struct sock *sk, struct sk_buff *skb){	struct llc_conn_state_ev *ev = llc_conn_ev(skb);	u8 reason = 0;	int rc = 0;	if (ev->type == LLC_CONN_EV_TYPE_PDU) {		struct llc_pdu_un *pdu = llc_pdu_un_hdr(skb);		if (LLC_PDU_IS_RSP(pdu) &&		    LLC_PDU_TYPE_IS_U(pdu) &&		    LLC_U_PDU_RSP(pdu) == LLC_2_PDU_RSP_DM)			reason = LLC_DISC_REASON_RX_DM_RSP_PDU;		else if (LLC_PDU_IS_CMD(pdu) &&			   LLC_PDU_TYPE_IS_U(pdu) &&			   LLC_U_PDU_CMD(pdu) == LLC_2_PDU_CMD_DISC)			reason = LLC_DISC_REASON_RX_DISC_CMD_PDU;	} else if (ev->type == LLC_CONN_EV_TYPE_ACK_TMR)		reason = LLC_DISC_REASON_ACK_TMR_EXP;	else		rc = -EINVAL;	if (!rc) {		ev->reason   = reason;		ev->ind_prim = LLC_DISC_PRIM;	}	return rc;}int llc_conn_ac_disc_confirm(struct sock *sk, struct sk_buff *skb){	struct llc_conn_state_ev *ev = llc_conn_ev(skb);	ev->reason   = ev->status;	ev->cfm_prim = LLC_DISC_PRIM;	return 0;}int llc_conn_ac_rst_ind(struct sock *sk, struct sk_buff *skb){	u8 reason = 0;	int rc = 1;	struct llc_conn_state_ev *ev = llc_conn_ev(skb);	struct llc_pdu_un *pdu = llc_pdu_un_hdr(skb);	struct llc_sock *llc = llc_sk(sk);	switch (ev->type) {	case LLC_CONN_EV_TYPE_PDU:		if (LLC_PDU_IS_RSP(pdu) &&		    LLC_PDU_TYPE_IS_U(pdu) &&		    LLC_U_PDU_RSP(pdu) == LLC_2_PDU_RSP_FRMR) {			reason = LLC_RESET_REASON_LOCAL;			rc = 0;		} else if (LLC_PDU_IS_CMD(pdu) &&			   LLC_PDU_TYPE_IS_U(pdu) &&			   LLC_U_PDU_CMD(pdu) == LLC_2_PDU_CMD_SABME) {			reason = LLC_RESET_REASON_REMOTE;			rc = 0;		}		break;	case LLC_CONN_EV_TYPE_ACK_TMR:	case LLC_CONN_EV_TYPE_P_TMR:	case LLC_CONN_EV_TYPE_REJ_TMR:	case LLC_CONN_EV_TYPE_BUSY_TMR:		if (llc->retry_count > llc->n2) {			reason = LLC_RESET_REASON_LOCAL;			rc = 0;		}		break;	}	if (!rc) {		ev->reason   = reason;		ev->ind_prim = LLC_RESET_PRIM;	}	return rc;}int llc_conn_ac_rst_confirm(struct sock *sk, struct sk_buff *skb){	struct llc_conn_state_ev *ev = llc_conn_ev(skb);	ev->reason   = 0;	ev->cfm_prim = LLC_RESET_PRIM;	return 0;}int llc_conn_ac_clear_remote_busy_if_f_eq_1(struct sock *sk,					    struct sk_buff *skb){	struct llc_pdu_sn *pdu = llc_pdu_sn_hdr(skb);	if (LLC_PDU_IS_RSP(pdu) &&	    LLC_PDU_TYPE_IS_I(pdu) &&	    LLC_I_PF_IS_1(pdu) && llc_sk(sk)->ack_pf)		llc_conn_ac_clear_remote_busy(sk, skb);	return 0;}int llc_conn_ac_stop_rej_tmr_if_data_flag_eq_2(struct sock *sk,					       struct sk_buff *skb){	struct llc_sock *llc = llc_sk(sk);	if (llc->data_flag == 2)		del_timer(&llc->rej_sent_timer.timer);	return 0;}int llc_conn_ac_send_disc_cmd_p_set_x(struct sock *sk, struct sk_buff *skb){	int rc = -ENOBUFS;	struct llc_sock *llc = llc_sk(sk);	struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev);	if (nskb) {		struct llc_sap *sap = llc->sap;		llc_pdu_header_init(nskb, LLC_PDU_TYPE_U, sap->laddr.lsap,				    llc->daddr.lsap, LLC_PDU_CMD);		llc_pdu_init_as_disc_cmd(nskb, 1);		rc = llc_mac_hdr_init(nskb, llc->dev->dev_addr, llc->daddr.mac);		if (unlikely(rc))			goto free;		llc_conn_send_pdu(sk, nskb);		llc_conn_ac_set_p_flag_1(sk, skb);	}out:	return rc;free:	kfree_skb(nskb);	goto out;}int llc_conn_ac_send_dm_rsp_f_set_p(struct sock *sk, struct sk_buff *skb){	int rc = -ENOBUFS;	struct llc_sock *llc = llc_sk(sk);	struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev);	if (nskb) {		struct llc_sap *sap = llc->sap;		u8 f_bit;		llc_pdu_decode_pf_bit(skb, &f_bit);		llc_pdu_header_init(nskb, LLC_PDU_TYPE_U, sap->laddr.lsap,				    llc->daddr.lsap, LLC_PDU_RSP);		llc_pdu_init_as_dm_rsp(nskb, f_bit);		rc = llc_mac_hdr_init(nskb, llc->dev->dev_addr, llc->daddr.mac);		if (unlikely(rc))			goto free;		llc_conn_send_pdu(sk, nskb);	}out:	return rc;free:	kfree_skb(nskb);	goto out;}int llc_conn_ac_send_dm_rsp_f_set_1(struct sock *sk, struct sk_buff *skb){	int rc = -ENOBUFS;	struct llc_sock *llc = llc_sk(sk);	struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev);	if (nskb) {		struct llc_sap *sap = llc->sap;		llc_pdu_header_init(nskb, LLC_PDU_TYPE_U, sap->laddr.lsap,				    llc->daddr.lsap, LLC_PDU_RSP);		llc_pdu_init_as_dm_rsp(nskb, 1);		rc = llc_mac_hdr_init(nskb, llc->dev->dev_addr, llc->daddr.mac);		if (unlikely(rc))			goto free;		llc_conn_send_pdu(sk, nskb);	}out:	return rc;free:	kfree_skb(nskb);	goto out;}int llc_conn_ac_send_frmr_rsp_f_set_x(struct sock *sk, struct sk_buff *skb){	u8 f_bit;	int rc = -ENOBUFS;	struct sk_buff *nskb;	struct llc_pdu_sn *pdu = llc_pdu_sn_hdr(skb);	struct llc_sock *llc = llc_sk(sk);	llc->rx_pdu_hdr = *((u32 *)pdu);	if (LLC_PDU_IS_CMD(pdu))		llc_pdu_decode_pf_bit(skb, &f_bit);	else		f_bit = 0;	nskb = llc_alloc_frame(sk, llc->dev);	if (nskb) {		struct llc_sap *sap = llc->sap;		llc_pdu_header_init(nskb, LLC_PDU_TYPE_U, sap->laddr.lsap,				    llc->daddr.lsap, LLC_PDU_RSP);		llc_pdu_init_as_frmr_rsp(nskb, pdu, f_bit, llc->vS,					 llc->vR, INCORRECT);		rc = llc_mac_hdr_init(nskb, llc->dev->dev_addr, llc->daddr.mac);		if (unlikely(rc))			goto free;		llc_conn_send_pdu(sk, nskb);	}out:	return rc;free:	kfree_skb(nskb);	goto out;}int llc_conn_ac_resend_frmr_rsp_f_set_0(struct sock *sk, struct sk_buff *skb){	int rc = -ENOBUFS;	struct llc_sock *llc = llc_sk(sk);	struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev);	if (nskb) {		struct llc_sap *sap = llc->sap;		struct llc_pdu_sn *pdu = (struct llc_pdu_sn *)&llc->rx_pdu_hdr;		llc_pdu_header_init(nskb, LLC_PDU_TYPE_U, sap->laddr.lsap,				    llc->daddr.lsap, LLC_PDU_RSP);		llc_pdu_init_as_frmr_rsp(nskb, pdu, 0, llc->vS,					 llc->vR, INCORRECT);		rc = llc_mac_hdr_init(nskb, llc->dev->dev_addr, llc->daddr.mac);		if (unlikely(rc))			goto free;		llc_conn_send_pdu(sk, nskb);	}out:	return rc;free:	kfree_skb(nskb);	goto out;}int llc_conn_ac_resend_frmr_rsp_f_set_p(struct sock *sk, struct sk_buff *skb){	u8 f_bit;	int rc = -ENOBUFS;	struct sk_buff *nskb;	struct llc_sock *llc = llc_sk(sk);	llc_pdu_decode_pf_bit(skb, &f_bit);	nskb = llc_alloc_frame(sk, llc->dev);	if (nskb) {		struct llc_sap *sap = llc->sap;		struct llc_pdu_sn *pdu = llc_pdu_sn_hdr(skb);		llc_pdu_header_init(nskb, LLC_PDU_TYPE_U, sap->laddr.lsap,				    llc->daddr.lsap, LLC_PDU_RSP);		llc_pdu_init_as_frmr_rsp(nskb, pdu, f_bit, llc->vS,					 llc->vR, INCORRECT);		rc = llc_mac_hdr_init(nskb, llc->dev->dev_addr, llc->daddr.mac);		if (unlikely(rc))			goto free;		llc_conn_send_pdu(sk, nskb);	}out:	return rc;free:	kfree_skb(nskb);	goto out;}int llc_conn_ac_send_i_cmd_p_set_1(struct sock *sk, struct sk_buff *skb){	int rc;	struct llc_sock *llc = llc_sk(sk);	struct llc_sap *sap = llc->sap;	llc_pdu_header_init(skb, LLC_PDU_TYPE_I, sap->laddr.lsap,			    llc->daddr.lsap, LLC_PDU_CMD);	llc_pdu_init_as_i_cmd(skb, 1, llc->vS, llc->vR);	rc = llc_mac_hdr_init(skb, llc->dev->dev_addr, llc->daddr.mac);	if (likely(!rc)) {		llc_conn_send_pdu(sk, skb);		llc_conn_ac_inc_vs_by_1(sk, skb);	}	return rc;}static int llc_conn_ac_send_i_cmd_p_set_0(struct sock *sk, struct sk_buff *skb){	int rc;	struct llc_sock *llc = llc_sk(sk);	struct llc_sap *sap = llc->sap;	llc_pdu_header_init(skb, LLC_PDU_TYPE_I, sap->laddr.lsap,			    llc->daddr.lsap, LLC_PDU_CMD);	llc_pdu_init_as_i_cmd(skb, 0, llc->vS, llc->vR);	rc = llc_mac_hdr_init(skb, llc->dev->dev_addr, llc->daddr.mac);	if (likely(!rc)) {		llc_conn_send_pdu(sk, skb);		llc_conn_ac_inc_vs_by_1(sk, skb);	}	return rc;}int llc_conn_ac_send_i_xxx_x_set_0(struct sock *sk, struct sk_buff *skb){	int rc;	struct llc_sock *llc = llc_sk(sk);	struct llc_sap *sap = llc->sap;	llc_pdu_header_init(skb, LLC_PDU_TYPE_I, sap->laddr.lsap,			    llc->daddr.lsap, LLC_PDU_CMD);	llc_pdu_init_as_i_cmd(skb, 0, llc->vS, llc->vR);	rc = llc_mac_hdr_init(skb, llc->dev->dev_addr, llc->daddr.mac);	if (likely(!rc)) {		llc_conn_send_pdu(sk, skb);		llc_conn_ac_inc_vs_by_1(sk, skb);	}	return 0;}int llc_conn_ac_resend_i_xxx_x_set_0(struct sock *sk, struct sk_buff *skb){	struct llc_pdu_sn *pdu = llc_pdu_sn_hdr(skb);	u8 nr = LLC_I_GET_NR(pdu);	llc_conn_resend_i_pdu_as_cmd(sk, nr, 0);	return 0;}int llc_conn_ac_resend_i_xxx_x_set_0_or_send_rr(struct sock *sk,						struct sk_buff *skb){	u8 nr;	struct llc_pdu_sn *pdu = llc_pdu_sn_hdr(skb);	int rc = -ENOBUFS;	struct llc_sock *llc = llc_sk(sk);	struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev);	if (nskb) {		struct llc_sap *sap = llc->sap;		llc_pdu_header_init(nskb, LLC_PDU_TYPE_U, sap->laddr.lsap,				    llc->daddr.lsap, LLC_PDU_RSP);		llc_pdu_init_as_rr_rsp(nskb, 0, llc->vR);		rc = llc_mac_hdr_init(nskb, llc->dev->dev_addr, llc->daddr.mac);		if (likely(!rc))			llc_conn_send_pdu(sk, nskb);		else			kfree_skb(skb);	}	if (rc) {		nr = LLC_I_GET_NR(pdu);		rc = 0;		llc_conn_resend_i_pdu_as_cmd(sk, nr, 0);	}	return rc;}int llc_conn_ac_resend_i_rsp_f_set_1(struct sock *sk, struct sk_buff *skb){	struct llc_pdu_sn *pdu = llc_pdu_sn_hdr(skb);	u8 nr = LLC_I_GET_NR(pdu);	llc_conn_resend_i_pdu_as_rsp(sk, nr, 1);	return 0;}int llc_conn_ac_send_rej_cmd_p_set_1(struct sock *sk, struct sk_buff *skb){	int rc = -ENOBUFS;	struct llc_sock *llc = llc_sk(sk);	struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev);	if (nskb) {		struct llc_sap *sap = llc->sap;		llc_pdu_header_init(nskb, LLC_PDU_TYPE_S, sap->laddr.lsap,				    llc->daddr.lsap, LLC_PDU_CMD);		llc_pdu_init_as_rej_cmd(nskb, 1, llc->vR);		rc = llc_mac_hdr_init(nskb, llc->dev->dev_addr, llc->daddr.mac);		if (unlikely(rc))			goto free;		llc_conn_send_pdu(sk, nskb);	}out:	return rc;free:	kfree_skb(nskb);	goto out;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久91精品久久久久久秒播| 欧美日韩久久久久久| 视频一区在线播放| 亚洲国产乱码最新视频 | 国产综合色视频| 午夜影院久久久| 日韩激情一二三区| 免费观看成人鲁鲁鲁鲁鲁视频| 奇米影视一区二区三区小说| 男女性色大片免费观看一区二区 | 最新热久久免费视频| 国产精品久久久久永久免费观看| 国产精品三级电影| 亚洲码国产岛国毛片在线| 亚洲一本大道在线| 美女性感视频久久| 国产成人av一区二区| 91视频国产资源| 在线成人av网站| 在线不卡中文字幕| 91国偷自产一区二区三区成为亚洲经典| 9l国产精品久久久久麻豆| 色综合久久88色综合天天免费| 欧美伊人久久久久久午夜久久久久| 日本高清不卡在线观看| 日韩一区二区在线看片| 久久久欧美精品sm网站| 亚洲日本va在线观看| 视频在线观看91| 成人动漫一区二区三区| 欧洲精品在线观看| 亚洲精品在线免费观看视频| 国产精品久久99| 日日夜夜精品视频天天综合网| 国产一区在线观看麻豆| 色哟哟精品一区| 精品国产乱码久久久久久牛牛| 综合中文字幕亚洲| 久久99精品一区二区三区三区| 99久久国产综合色|国产精品| 天天综合色天天综合色h| 韩国成人福利片在线播放| 91久久精品一区二区二区| 欧美精品一区二区三区高清aⅴ | 欧美精品在线观看播放| 国产校园另类小说区| 亚洲免费资源在线播放| 久久91精品国产91久久小草| 欧美最猛黑人xxxxx猛交| 26uuu精品一区二区| 亚洲第一综合色| 成人精品视频.| 日韩免费观看高清完整版 | 三级精品在线观看| 国产成人av电影在线| 91精品国产麻豆| 亚洲激情校园春色| 国产suv一区二区三区88区| 777亚洲妇女| 亚洲一区二区av在线| 91在线免费看| 国产精品久久久久三级| 精品一区二区三区在线视频| 欧美女孩性生活视频| 亚洲精品免费在线观看| 99麻豆久久久国产精品免费| 久久嫩草精品久久久精品| 美腿丝袜亚洲一区| 91精品在线麻豆| 日韩精品国产欧美| 8x8x8国产精品| 美洲天堂一区二卡三卡四卡视频 | 久久亚洲免费视频| 韩国精品在线观看| 日韩精品一区二区三区swag | 久久久久国产精品人| 精品影院一区二区久久久| 日韩欧美国产一区二区三区 | 精品入口麻豆88视频| 久久精品免费看| 久久无码av三级| 国产成人精品三级| 综合激情网...| 日本高清成人免费播放| 亚洲高清不卡在线| 欧美肥妇毛茸茸| 韩国午夜理伦三级不卡影院| 久久久久久久综合日本| 成人av片在线观看| 夜夜揉揉日日人人青青一国产精品| 色噜噜狠狠成人网p站| 亚洲bt欧美bt精品| 日韩欧美激情一区| 成人激情校园春色| 亚洲动漫第一页| 欧美电视剧在线观看完整版| 国产精品亚洲午夜一区二区三区 | 色狠狠色狠狠综合| 日韩在线一二三区| 久久精品夜色噜噜亚洲a∨| 国产成人欧美日韩在线电影| 成人欧美一区二区三区视频网页| 在线观看欧美黄色| 久久99精品久久久久久| 国产精品理伦片| 欧美日韩国产中文| 国产经典欧美精品| 亚洲精品国产无套在线观| 欧美一区永久视频免费观看| 国产成人精品免费网站| 亚洲一区二区三区激情| 精品国产91乱码一区二区三区| 成人免费高清在线| 琪琪久久久久日韩精品| 国产精品美女久久福利网站| 在线成人免费视频| 波波电影院一区二区三区| 日日夜夜免费精品| 亚洲欧美偷拍另类a∨色屁股| 欧美一区二区三区在线观看视频| 成人在线综合网站| 美女视频免费一区| 亚洲综合色自拍一区| 国产日韩欧美一区二区三区乱码| 欧美午夜精品一区二区蜜桃| 国产精品一二三区在线| 日本不卡一二三| 亚洲免费在线电影| 国产精品女主播av| 久久蜜桃av一区精品变态类天堂 | 亚洲成av人**亚洲成av**| 中文字幕av一区二区三区高| 日韩一区二区三区电影在线观看| 97精品视频在线观看自产线路二| 国产一区二区三区| 免费日本视频一区| 香蕉乱码成人久久天堂爱免费| 中文字幕一区三区| 国产日韩亚洲欧美综合| 日韩免费视频线观看| 欧美日韩国产123区| 色哟哟国产精品| 91麻豆成人久久精品二区三区| 福利一区二区在线| 国产成人精品免费网站| 国产精品亚洲一区二区三区在线| 久久99精品久久久久久| 男男gaygay亚洲| 欧美bbbbb| 韩国v欧美v日本v亚洲v| 国产做a爰片久久毛片| 美女视频黄a大片欧美| 日韩av一区二区三区| 日韩电影免费在线观看网站| 首页综合国产亚洲丝袜| 男人的j进女人的j一区| 精品一区二区在线免费观看| 九一久久久久久| 国产综合色视频| 国产99精品国产| 91在线播放网址| 欧美亚洲一区三区| 在线电影院国产精品| 日韩欧美在线123| 精品国精品自拍自在线| 久久久国产午夜精品| 欧美极品aⅴ影院| 亚洲精品中文在线影院| 亚洲一区免费视频| 日韩和欧美的一区| 26uuu国产一区二区三区| 亚洲国产欧美一区二区三区丁香婷| 中文字幕制服丝袜成人av| 欧美精品一区二区久久久| 久久久久久久综合日本| 国产精品精品国产色婷婷| 中文字幕日韩av资源站| 亚洲一二三四在线| 久久成人羞羞网站| 99久久精品国产毛片| 欧美日韩国产经典色站一区二区三区| 日韩一区二区电影网| 国产精品久久久久桃色tv| 亚洲精选视频在线| 激情综合五月天| fc2成人免费人成在线观看播放| 色94色欧美sute亚洲线路二| 欧美一区二区三区日韩视频| 久久精品日产第一区二区三区高清版 | 成人精品亚洲人成在线| 在线精品视频小说1| 日韩精品一区二区三区视频在线观看| 色成人在线视频| 欧美日韩国产精品成人| 久久久不卡影院| 丝袜美腿亚洲一区二区图片| 国产精品资源在线观看| 欧美精品日韩精品| 亚洲欧洲99久久| 国产在线国偷精品免费看|