?? pfkey_xfrmuser_interfamily-2.6.22.6.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 + -