forked from luck/tmp_suning_uos_patched
[XFRM]: Allow XFRM_ACQ_EXPIRES to be tunable via sysctl.
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
4738d2fa59
commit
01e67d08fa
|
@ -237,7 +237,6 @@ extern int xfrm_policy_register_afinfo(struct xfrm_policy_afinfo *afinfo);
|
||||||
extern int xfrm_policy_unregister_afinfo(struct xfrm_policy_afinfo *afinfo);
|
extern int xfrm_policy_unregister_afinfo(struct xfrm_policy_afinfo *afinfo);
|
||||||
extern void km_policy_notify(struct xfrm_policy *xp, int dir, struct km_event *c);
|
extern void km_policy_notify(struct xfrm_policy *xp, int dir, struct km_event *c);
|
||||||
extern void km_state_notify(struct xfrm_state *x, struct km_event *c);
|
extern void km_state_notify(struct xfrm_state *x, struct km_event *c);
|
||||||
#define XFRM_ACQ_EXPIRES 30
|
|
||||||
|
|
||||||
struct xfrm_tmpl;
|
struct xfrm_tmpl;
|
||||||
extern int km_query(struct xfrm_state *x, struct xfrm_tmpl *t, struct xfrm_policy *pol);
|
extern int km_query(struct xfrm_state *x, struct xfrm_tmpl *t, struct xfrm_policy *pol);
|
||||||
|
|
|
@ -25,6 +25,7 @@ extern int sysctl_core_destroy_delay;
|
||||||
extern u32 sysctl_xfrm_aevent_etime;
|
extern u32 sysctl_xfrm_aevent_etime;
|
||||||
extern u32 sysctl_xfrm_aevent_rseqth;
|
extern u32 sysctl_xfrm_aevent_rseqth;
|
||||||
extern int sysctl_xfrm_larval_drop;
|
extern int sysctl_xfrm_larval_drop;
|
||||||
|
extern u32 sysctl_xfrm_acq_expires;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ctl_table core_table[] = {
|
ctl_table core_table[] = {
|
||||||
|
@ -127,6 +128,14 @@ ctl_table core_table[] = {
|
||||||
.mode = 0644,
|
.mode = 0644,
|
||||||
.proc_handler = &proc_dointvec
|
.proc_handler = &proc_dointvec
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.ctl_name = CTL_UNNUMBERED,
|
||||||
|
.procname = "xfrm_acq_expires",
|
||||||
|
.data = &sysctl_xfrm_acq_expires,
|
||||||
|
.maxlen = sizeof(int),
|
||||||
|
.mode = 0644,
|
||||||
|
.proc_handler = &proc_dointvec
|
||||||
|
},
|
||||||
#endif /* CONFIG_XFRM */
|
#endif /* CONFIG_XFRM */
|
||||||
#endif /* CONFIG_NET */
|
#endif /* CONFIG_NET */
|
||||||
{
|
{
|
||||||
|
|
|
@ -21,18 +21,21 @@
|
||||||
#include <linux/cache.h>
|
#include <linux/cache.h>
|
||||||
#include <asm/uaccess.h>
|
#include <asm/uaccess.h>
|
||||||
#include <linux/audit.h>
|
#include <linux/audit.h>
|
||||||
|
#include <linux/cache.h>
|
||||||
|
|
||||||
#include "xfrm_hash.h"
|
#include "xfrm_hash.h"
|
||||||
|
|
||||||
struct sock *xfrm_nl;
|
struct sock *xfrm_nl;
|
||||||
EXPORT_SYMBOL(xfrm_nl);
|
EXPORT_SYMBOL(xfrm_nl);
|
||||||
|
|
||||||
u32 sysctl_xfrm_aevent_etime = XFRM_AE_ETIME;
|
u32 sysctl_xfrm_aevent_etime __read_mostly = XFRM_AE_ETIME;
|
||||||
EXPORT_SYMBOL(sysctl_xfrm_aevent_etime);
|
EXPORT_SYMBOL(sysctl_xfrm_aevent_etime);
|
||||||
|
|
||||||
u32 sysctl_xfrm_aevent_rseqth = XFRM_AE_SEQT_SIZE;
|
u32 sysctl_xfrm_aevent_rseqth __read_mostly = XFRM_AE_SEQT_SIZE;
|
||||||
EXPORT_SYMBOL(sysctl_xfrm_aevent_rseqth);
|
EXPORT_SYMBOL(sysctl_xfrm_aevent_rseqth);
|
||||||
|
|
||||||
|
u32 sysctl_xfrm_acq_expires __read_mostly = 30;
|
||||||
|
|
||||||
/* Each xfrm_state may be linked to two tables:
|
/* Each xfrm_state may be linked to two tables:
|
||||||
|
|
||||||
1. Hash table by (spi,daddr,ah/esp) to find SA by SPI. (input,ctl)
|
1. Hash table by (spi,daddr,ah/esp) to find SA by SPI. (input,ctl)
|
||||||
|
@ -622,8 +625,8 @@ xfrm_state_find(xfrm_address_t *daddr, xfrm_address_t *saddr,
|
||||||
h = xfrm_spi_hash(&x->id.daddr, x->id.spi, x->id.proto, family);
|
h = xfrm_spi_hash(&x->id.daddr, x->id.spi, x->id.proto, family);
|
||||||
hlist_add_head(&x->byspi, xfrm_state_byspi+h);
|
hlist_add_head(&x->byspi, xfrm_state_byspi+h);
|
||||||
}
|
}
|
||||||
x->lft.hard_add_expires_seconds = XFRM_ACQ_EXPIRES;
|
x->lft.hard_add_expires_seconds = sysctl_xfrm_acq_expires;
|
||||||
x->timer.expires = jiffies + XFRM_ACQ_EXPIRES*HZ;
|
x->timer.expires = jiffies + sysctl_xfrm_acq_expires*HZ;
|
||||||
add_timer(&x->timer);
|
add_timer(&x->timer);
|
||||||
xfrm_state_num++;
|
xfrm_state_num++;
|
||||||
xfrm_hash_grow_check(x->bydst.next != NULL);
|
xfrm_hash_grow_check(x->bydst.next != NULL);
|
||||||
|
@ -772,9 +775,9 @@ static struct xfrm_state *__find_acq_core(unsigned short family, u8 mode, u32 re
|
||||||
x->props.family = family;
|
x->props.family = family;
|
||||||
x->props.mode = mode;
|
x->props.mode = mode;
|
||||||
x->props.reqid = reqid;
|
x->props.reqid = reqid;
|
||||||
x->lft.hard_add_expires_seconds = XFRM_ACQ_EXPIRES;
|
x->lft.hard_add_expires_seconds = sysctl_xfrm_acq_expires;
|
||||||
xfrm_state_hold(x);
|
xfrm_state_hold(x);
|
||||||
x->timer.expires = jiffies + XFRM_ACQ_EXPIRES*HZ;
|
x->timer.expires = jiffies + sysctl_xfrm_acq_expires*HZ;
|
||||||
add_timer(&x->timer);
|
add_timer(&x->timer);
|
||||||
hlist_add_head(&x->bydst, xfrm_state_bydst+h);
|
hlist_add_head(&x->bydst, xfrm_state_bydst+h);
|
||||||
h = xfrm_src_hash(daddr, saddr, family);
|
h = xfrm_src_hash(daddr, saddr, family);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user