Similar to other print functions we need to flush buffered data
in order to work with pipes and output redirects.

After this patch ip monitor mroute &>log works properly.

Signed-off-by: Nikolay Aleksandrov <niko...@cumulusnetworks.com>
---
 ip/ipmroute.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/ip/ipmroute.c b/ip/ipmroute.c
index b29c78e4cc86..ede09ca96412 100644
--- a/ip/ipmroute.c
+++ b/ip/ipmroute.c
@@ -57,6 +57,7 @@ int print_mroute(struct nlmsghdr *n, void *arg)
        struct rtmsg *r = NLMSG_DATA(n);
        int len = n->nlmsg_len;
        struct rtattr *tb[RTA_MAX+1];
+       FILE *fp = (FILE *)arg;
        const char *src, *dst;
        SPRINT_BUF(b1);
        SPRINT_BUF(b2);
@@ -209,6 +210,7 @@ int print_mroute(struct nlmsghdr *n, void *arg)
 
        print_string(PRINT_FP, NULL, "\n", NULL);
        close_json_object();
+       fflush(fp);
        return 0;
 }
 
-- 
2.20.1

Reply via email to