]> Pileus Git - ~andy/linux/blobdiff - net/core/sysctl_net_core.c
tunnels: harmonize cleanup done on skb on rx path
[~andy/linux] / net / core / sysctl_net_core.c
index 6609686166379765233cdbfab0e3d580a3d23051..cca444190907c9da8ea1ac86f998d76c0574ace9 100644 (file)
 #include <net/sock.h>
 #include <net/net_ratelimit.h>
 #include <net/busy_poll.h>
+#include <net/pkt_sched.h>
 
+static int zero = 0;
 static int one = 1;
+static int ushort_max = USHRT_MAX;
 
 #ifdef CONFIG_RPS
 static int rps_sock_flow_sysctl(struct ctl_table *table, int write,
@@ -191,6 +194,26 @@ static int flow_limit_table_len_sysctl(struct ctl_table *table, int write,
 }
 #endif /* CONFIG_NET_FLOW_LIMIT */
 
+#ifdef CONFIG_NET_SCHED
+static int set_default_qdisc(struct ctl_table *table, int write,
+                            void __user *buffer, size_t *lenp, loff_t *ppos)
+{
+       char id[IFNAMSIZ];
+       struct ctl_table tbl = {
+               .data = id,
+               .maxlen = IFNAMSIZ,
+       };
+       int ret;
+
+       qdisc_get_default(id, IFNAMSIZ);
+
+       ret = proc_dostring(&tbl, write, buffer, lenp, ppos);
+       if (write && ret == 0)
+               ret = qdisc_set_default(id);
+       return ret;
+}
+#endif
+
 static struct ctl_table net_core_table[] = {
 #ifdef CONFIG_NET
        {
@@ -298,7 +321,7 @@ static struct ctl_table net_core_table[] = {
                .proc_handler   = flow_limit_table_len_sysctl
        },
 #endif /* CONFIG_NET_FLOW_LIMIT */
-#ifdef CONFIG_NET_LL_RX_POLL
+#ifdef CONFIG_NET_RX_BUSY_POLL
        {
                .procname       = "busy_poll",
                .data           = &sysctl_net_busy_poll,
@@ -313,7 +336,14 @@ static struct ctl_table net_core_table[] = {
                .mode           = 0644,
                .proc_handler   = proc_dointvec
        },
-#
+#endif
+#ifdef CONFIG_NET_SCHED
+       {
+               .procname       = "default_qdisc",
+               .mode           = 0644,
+               .maxlen         = IFNAMSIZ,
+               .proc_handler   = set_default_qdisc
+       },
 #endif
 #endif /* CONFIG_NET */
        {
@@ -339,7 +369,9 @@ static struct ctl_table netns_core_table[] = {
                .data           = &init_net.core.sysctl_somaxconn,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = proc_dointvec
+               .extra1         = &zero,
+               .extra2         = &ushort_max,
+               .proc_handler   = proc_dointvec_minmax
        },
        { }
 };