Here is an alternative that allows runtime based restriction on some
TCP congestion control choices.
Signed-off-by: Stephen Hemminger <[EMAIL PROTECTED]>
---
include/net/tcp.h | 1 +
net/ipv4/tcp_cong.c | 4 ++++
2 files changed, 5 insertions(+)
--- sky2.orig/include/net/tcp.h 2006-10-27 10:46:19.000000000 -0700
+++ sky2/include/net/tcp.h 2006-10-27 10:46:55.000000000 -0700
@@ -651,6 +651,7 @@
char name[TCP_CA_NAME_MAX];
struct module *owner;
+ int restricted; /* NET_ADMIN only */
};
extern int tcp_register_congestion_control(struct tcp_congestion_ops *type);
--- sky2.orig/net/ipv4/tcp_cong.c 2006-10-27 10:51:47.000000000 -0700
+++ sky2/net/ipv4/tcp_cong.c 2006-10-27 10:56:36.000000000 -0700
@@ -10,6 +10,7 @@
#include <linux/mm.h>
#include <linux/types.h>
#include <linux/list.h>
+#include <linux/capability.h>
#include <net/tcp.h>
static DEFINE_SPINLOCK(tcp_cong_list_lock);
@@ -159,6 +160,9 @@
if (!ca)
err = -ENOENT;
+ else if (ca->restricted && !capable(CAP_NET_ADMIN))
+ err = -EPERM;
+
else if (!try_module_get(ca->owner))
err = -EBUSY;
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html