fib: introduce FIB notification infrastructure
[cascardo/linux.git] / net / ipv4 / fib_rules.c
index 770bebe..ebadf6b 100644 (file)
@@ -164,6 +164,14 @@ static struct fib_table *fib_empty_table(struct net *net)
        return NULL;
 }
 
+static int call_fib_rule_notifiers(struct net *net,
+                                  enum fib_event_type event_type)
+{
+       struct fib_notifier_info info;
+
+       return call_fib_notifiers(net, event_type, &info);
+}
+
 static const struct nla_policy fib4_rule_policy[FRA_MAX+1] = {
        FRA_GENERIC_POLICY,
        [FRA_FLOW]      = { .type = NLA_U32 },
@@ -221,6 +229,7 @@ static int fib4_rule_configure(struct fib_rule *rule, struct sk_buff *skb,
 
        net->ipv4.fib_has_custom_rules = true;
        fib_flush_external(rule->fr_net);
+       call_fib_rule_notifiers(net, FIB_EVENT_RULE_ADD);
 
        err = 0;
 errout:
@@ -243,6 +252,7 @@ static int fib4_rule_delete(struct fib_rule *rule)
 #endif
        net->ipv4.fib_has_custom_rules = true;
        fib_flush_external(rule->fr_net);
+       call_fib_rule_notifiers(net, FIB_EVENT_RULE_DEL);
 errout:
        return err;
 }