[NET] fib_rules: Add no-operation action

The use of nop rules simplifies the usage of goto rules
and adds more flexibility as they allow targets to remain
while the actual content of the branches can change easly.

Signed-off-by: Thomas Graf <tgraf@suug.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
diff --git a/include/linux/fib_rules.h b/include/linux/fib_rules.h
index c151273..f278ba7 100644
--- a/include/linux/fib_rules.h
+++ b/include/linux/fib_rules.h
@@ -54,7 +54,7 @@
 	FR_ACT_UNSPEC,
 	FR_ACT_TO_TBL,		/* Pass to fixed table */
 	FR_ACT_GOTO,		/* Jump to another rule */
-	FR_ACT_RES2,
+	FR_ACT_NOP,		/* No operation */
 	FR_ACT_RES3,
 	FR_ACT_RES4,
 	FR_ACT_BLACKHOLE,	/* Drop without notification */
diff --git a/net/core/fib_rules.c b/net/core/fib_rules.c
index 7ac602c..5824b26 100644
--- a/net/core/fib_rules.c
+++ b/net/core/fib_rules.c
@@ -146,7 +146,9 @@
 				rule = target;
 				goto jumped;
 			}
-		} else
+		} else if (rule->action == FR_ACT_NOP)
+			continue;
+		else
 			err = ops->action(rule, fl, flags, arg);
 
 		if (err != -EAGAIN) {