diff options
author | Tom Herbert <tom@herbertland.com> | 2015-08-01 01:52:12 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-08-01 02:07:11 +0200 |
commit | 42240901f7c438636715b9cb6ed93f4441ffc091 (patch) | |
tree | 44dfaaed66aa97ef93dc5921bedfac3808058210 /net/ipv6/sysctl_net_ipv6.c | |
parent | ipv6: Call skb_get_hash_flowi6 to get skb->hash in ip6_make_flowlabel (diff) | |
download | linux-42240901f7c438636715b9cb6ed93f4441ffc091.tar.xz linux-42240901f7c438636715b9cb6ed93f4441ffc091.zip |
ipv6: Implement different admin modes for automatic flow labels
Change the meaning of net.ipv6.auto_flowlabels to provide a mode for
automatic flow labels generation. There are four modes:
0: flow labels are disabled
1: flow labels are enabled, sockets can opt-out
2: flow labels are allowed, sockets can opt-in
3: flow labels are enabled and enforced, no opt-out for sockets
np->autoflowlabel is initialized according to the sysctl value.
Signed-off-by: Tom Herbert <tom@herbertland.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/sysctl_net_ipv6.c')
-rw-r--r-- | net/ipv6/sysctl_net_ipv6.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/net/ipv6/sysctl_net_ipv6.c b/net/ipv6/sysctl_net_ipv6.c index db48aebd9c47..45243bbe5253 100644 --- a/net/ipv6/sysctl_net_ipv6.c +++ b/net/ipv6/sysctl_net_ipv6.c @@ -17,6 +17,9 @@ #include <net/inet_frag.h> static int one = 1; +static int auto_flowlabels_min; +static int auto_flowlabels_max = IP6_AUTO_FLOW_LABEL_MAX; + static struct ctl_table ipv6_table_template[] = { { @@ -45,7 +48,9 @@ static struct ctl_table ipv6_table_template[] = { .data = &init_net.ipv6.sysctl.auto_flowlabels, .maxlen = sizeof(int), .mode = 0644, - .proc_handler = proc_dointvec + .proc_handler = proc_dointvec_minmax, + .extra1 = &auto_flowlabels_min, + .extra2 = &auto_flowlabels_max }, { .procname = "fwmark_reflect", |