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

📄 pfkey_xfrmuser_interfamily-2.6.22.6.patch

📁 HIP:Host Identity Protocol
💻 PATCH
字号:
diff -urN linux-2.6.22.6/net/key/af_key.c linux-2.6.22.6-pfkey/net/key/af_key.c--- linux-2.6.22.6/net/key/af_key.c	2007-08-31 09:21:01.000000000 +0300+++ linux-2.6.22.6-pfkey/net/key/af_key.c	2007-09-11 22:39:02.000000000 +0300@@ -1205,6 +1205,9 @@ 		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;diff -urN linux-2.6.22.6/net/xfrm/xfrm_policy.c linux-2.6.22.6-pfkey/net/xfrm/xfrm_policy.c--- linux-2.6.22.6/net/xfrm/xfrm_policy.c	2007-08-31 09:21:01.000000000 +0300+++ linux-2.6.22.6-pfkey/net/xfrm/xfrm_policy.c	2007-09-11 22:39:02.000000000 +0300@@ -1299,7 +1299,8 @@ 		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 -urN linux-2.6.22.6/net/xfrm/xfrm_state.c linux-2.6.22.6-pfkey/net/xfrm/xfrm_state.c--- linux-2.6.22.6/net/xfrm/xfrm_state.c	2007-08-31 09:21:01.000000000 +0300+++ linux-2.6.22.6-pfkey/net/xfrm/xfrm_state.c	2007-09-11 22:39:02.000000000 +0300@@ -611,7 +611,7 @@ 			      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 @@ 				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; 			}diff -urN linux-2.6.22.6/net/xfrm/xfrm_user.c linux-2.6.22.6-pfkey/net/xfrm/xfrm_user.c--- linux-2.6.22.6/net/xfrm/xfrm_user.c	2007-08-31 09:21:01.000000000 +0300+++ linux-2.6.22.6-pfkey/net/xfrm/xfrm_user.c	2007-09-11 22:39:02.000000000 +0300@@ -322,6 +322,13 @@ 	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 + -