aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/route.c
diff options
context:
space:
mode:
authorMatti Vaittinen <matti.vaittinen@nsn.com>2011-11-14 00:14:49 +0000
committerDavid S. Miller <davem@davemloft.net>2011-11-14 14:35:33 -0500
commitd71314b4ac88637f9ac2770a9f635babdf6f2ff9 (patch)
treed783319152ab7107b680c0654b2bd8dad2173d23 /net/ipv6/route.c
parentnet/can/mscan: Fix buggy listen only mode setting (diff)
downloadlinux-dev-d71314b4ac88637f9ac2770a9f635babdf6f2ff9.tar.xz
linux-dev-d71314b4ac88637f9ac2770a9f635babdf6f2ff9.zip
IPv6 routing, NLM_F_* flag support: warn if new route is created without NLM_F_CREATE
The support for NLM_F_* flags at IPv6 routing requests. Warn if NLM_F_CREATE flag is not defined for RTM_NEWROUTE request, creating new table. Later NLM_F_CREATE may be required for new route creation. Patch created against linux-3.2-rc1 Signed-off-by: Matti Vaittinen <Mazziesaccount@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/route.c')
-rw-r--r--net/ipv6/route.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index 8473016bba4a..05c89be04c9f 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -1230,9 +1230,18 @@ int ip6_route_add(struct fib6_config *cfg)
if (cfg->fc_metric == 0)
cfg->fc_metric = IP6_RT_PRIO_USER;
- table = fib6_new_table(net, cfg->fc_table);
+ err = -ENOBUFS;
+ if (NULL != cfg->fc_nlinfo.nlh &&
+ !(cfg->fc_nlinfo.nlh->nlmsg_flags&NLM_F_CREATE)) {
+ table = fib6_get_table(net, cfg->fc_table);
+ if (table == NULL) {
+ printk(KERN_WARNING "IPv6: NLM_F_CREATE should be specified when creating new route\n");
+ table = fib6_new_table(net, cfg->fc_table);
+ }
+ } else {
+ table = fib6_new_table(net, cfg->fc_table);
+ }
if (table == NULL) {
- err = -ENOBUFS;
goto out;
}