]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
ip-monitor: allow to monitor ip rules
authorNicolas Dichtel <nicolas.dichtel@6wind.com>
Tue, 24 Feb 2015 15:15:00 +0000 (16:15 +0100)
committerStephen Hemminger <shemming@brocade.com>
Tue, 24 Feb 2015 23:59:44 +0000 (15:59 -0800)
Now done by default or with 'ip monitor rule'.

Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
ip/ipmonitor.c
man/man8/ip-monitor.8

index 5ec8f4181222bc4c45a32907a5a3070ee27ba68d..6b5e66534551f0204d913acc43d9619f93cb4512 100644 (file)
@@ -32,7 +32,7 @@ static void usage(void)
        fprintf(stderr, "Usage: ip monitor [ all | LISTofOBJECTS ] [ FILE ]"
                        "[ label ] [dev DEVICE]\n");
        fprintf(stderr, "LISTofOBJECTS := link | address | route | mroute | prefix |\n");
-       fprintf(stderr, "                 neigh | netconf\n");
+       fprintf(stderr, "                 neigh | netconf | rule\n");
        fprintf(stderr, "FILE := file FILENAME\n");
        exit(-1);
 }
@@ -150,6 +150,7 @@ int do_ipmonitor(int argc, char **argv)
        int lprefix=0;
        int lneigh=0;
        int lnetconf=0;
+       int lrule=0;
        int ifindex=0;
 
        groups |= nl_mgrp(RTNLGRP_LINK);
@@ -163,6 +164,8 @@ int do_ipmonitor(int argc, char **argv)
        groups |= nl_mgrp(RTNLGRP_NEIGH);
        groups |= nl_mgrp(RTNLGRP_IPV4_NETCONF);
        groups |= nl_mgrp(RTNLGRP_IPV6_NETCONF);
+       groups |= nl_mgrp(RTNLGRP_IPV4_RULE);
+       groups |= nl_mgrp(RTNLGRP_IPV6_RULE);
 
        rtnl_close(&rth);
 
@@ -193,6 +196,9 @@ int do_ipmonitor(int argc, char **argv)
                } else if (matches(*argv, "netconf") == 0) {
                        lnetconf = 1;
                        groups = 0;
+               } else if (matches(*argv, "rule") == 0) {
+                       lrule = 1;
+                       groups = 0;
                } else if (strcmp(*argv, "all") == 0) {
                        prefix_banner=1;
                } else if (matches(*argv, "help") == 0) {
@@ -249,6 +255,12 @@ int do_ipmonitor(int argc, char **argv)
                if (!preferred_family || preferred_family == AF_INET6)
                        groups |= nl_mgrp(RTNLGRP_IPV6_NETCONF);
        }
+       if (lrule) {
+               if (!preferred_family || preferred_family == AF_INET)
+                       groups |= nl_mgrp(RTNLGRP_IPV4_RULE);
+               if (!preferred_family || preferred_family == AF_INET6)
+                       groups |= nl_mgrp(RTNLGRP_IPV6_RULE);
+       }
        if (file) {
                FILE *fp;
                fp = fopen(file, "r");
index 544b62567c4df970b32f9c5fce0dfc5a19d11f86..5ce8dc736efdeb162101895844372b516addfac4 100644 (file)
@@ -49,7 +49,7 @@ command is the first in the command line and then the object list follows:
 is the list of object types that we want to monitor.
 It may contain
 .BR link ", " address ", " route ", " mroute ", " prefix ", "
-.BR neigh " and " netconf "."
+.BR neigh ", " netconf " and " rule "."
 If no
 .B file
 argument is given,