⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pfkey_xfrmuser_interfamily.patch

📁 HIP:Host Identity Protocol
💻 PATCH
字号:
diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.cindex 157bfbd..75fdb7d 100644--- a/net/xfrm/xfrm_policy.c+++ b/net/xfrm/xfrm_policy.c@@ -1299,7 +1299,8 @@ xfrm_tmpl_resolve_one(struct xfrm_policy *policy, struct flowi *fl, 		xfrm_address_t *local  = saddr; 		struct xfrm_tmpl *tmpl = &policy->xfrm_vec[i]; -		if (tmpl->mode == XFRM_MODE_TUNNEL) {+		if (tmpl->mode == XFRM_MODE_TUNNEL ||+		    tmpl->mode == XFRM_MODE_BEET) { 			remote = &tmpl->id.daddr; 			local = &tmpl->saddr; 			family = tmpl->encap_family;diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.cindex e070c3f..f5d30c4 100644--- a/net/xfrm/xfrm_state.c+++ b/net/xfrm/xfrm_state.c@@ -611,7 +611,7 @@ xfrm_state_find(xfrm_address_t *daddr, xfrm_address_t *saddr, 			      selector. 			 */ 			if (x->km.state == XFRM_STATE_VALID) {-				if (!xfrm_selector_match(&x->sel, fl, family) ||+				if (!xfrm_selector_match(&x->sel, fl, x->sel.family) || 				    !security_xfrm_state_pol_flow_match(x, pol, fl)) 					continue; 				if (!best ||@@ -623,7 +623,7 @@ xfrm_state_find(xfrm_address_t *daddr, xfrm_address_t *saddr, 				acquire_in_progress = 1; 			} else if (x->km.state == XFRM_STATE_ERROR || 				   x->km.state == XFRM_STATE_EXPIRED) {-				if (xfrm_selector_match(&x->sel, fl, family) &&+				if (xfrm_selector_match(&x->sel, fl, x->sel.family) && 				    security_xfrm_state_pol_flow_match(x, pol, fl)) 					error = -ESRCH; 			}--- linux-2.6.22.1/net/key/af_key.c	2007-07-10 21:56:30.000000000 +0300+++ linux-2.6.22.1-p/net/key/af_key.c	2007-08-08 08:27:31.000000000 +0300@@ -1205,6 +1205,9 @@ static struct xfrm_state * pfkey_msg2xfr 		x->sel.family = pfkey_sadb_addr2xfrm_addr(addr, &x->sel.saddr); 		x->sel.prefixlen_s = addr->sadb_address_prefixlen; 	}+	+	if (!x->sel.family)+		x->sel.family = x->props.family;  	if (ext_hdrs[SADB_X_EXT_NAT_T_TYPE-1]) { 		struct sadb_x_nat_t_type* n_type;--- linux-2.6.22.1/net/xfrm/xfrm_user.c	2007-07-10 21:56:30.000000000 +0300+++ linux-2.6.22.1-p/net/xfrm/xfrm_user.c	2007-08-08 08:28:12.000000000 +0300@@ -322,6 +322,13 @@ static void copy_from_user_state(struct  	x->props.family = p->family; 	memcpy(&x->props.saddr, &p->saddr, sizeof(x->props.saddr)); 	x->props.flags = p->flags;+	+	/*+	 * Set inner address family if the KM left it as zero.+	 * See comment in validate_tmpl.+	 */+	if (!x->sel.family)+		x->sel.family = p->family; }  /*

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -