diff options
Diffstat (limited to 'net/ipv4/fib_rules.c')
-rw-r--r-- | net/ipv4/fib_rules.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/net/ipv4/fib_rules.c b/net/ipv4/fib_rules.c index 39d0aadb9a2a..0b298bbc1518 100644 --- a/net/ipv4/fib_rules.c +++ b/net/ipv4/fib_rules.c | |||
@@ -367,13 +367,14 @@ static struct notifier_block fib_rules_notifier = { | |||
367 | 367 | ||
368 | static __inline__ int inet_fill_rule(struct sk_buff *skb, | 368 | static __inline__ int inet_fill_rule(struct sk_buff *skb, |
369 | struct fib_rule *r, | 369 | struct fib_rule *r, |
370 | struct netlink_callback *cb) | 370 | struct netlink_callback *cb, |
371 | unsigned int flags) | ||
371 | { | 372 | { |
372 | struct rtmsg *rtm; | 373 | struct rtmsg *rtm; |
373 | struct nlmsghdr *nlh; | 374 | struct nlmsghdr *nlh; |
374 | unsigned char *b = skb->tail; | 375 | unsigned char *b = skb->tail; |
375 | 376 | ||
376 | nlh = NLMSG_PUT(skb, NETLINK_CREDS(cb->skb)->pid, cb->nlh->nlmsg_seq, RTM_NEWRULE, sizeof(*rtm)); | 377 | nlh = NLMSG_NEW_ANSWER(skb, cb, RTM_NEWRULE, sizeof(*rtm), flags); |
377 | rtm = NLMSG_DATA(nlh); | 378 | rtm = NLMSG_DATA(nlh); |
378 | rtm->rtm_family = AF_INET; | 379 | rtm->rtm_family = AF_INET; |
379 | rtm->rtm_dst_len = r->r_dst_len; | 380 | rtm->rtm_dst_len = r->r_dst_len; |
@@ -422,7 +423,7 @@ int inet_dump_rules(struct sk_buff *skb, struct netlink_callback *cb) | |||
422 | for (r=fib_rules, idx=0; r; r = r->r_next, idx++) { | 423 | for (r=fib_rules, idx=0; r; r = r->r_next, idx++) { |
423 | if (idx < s_idx) | 424 | if (idx < s_idx) |
424 | continue; | 425 | continue; |
425 | if (inet_fill_rule(skb, r, cb) < 0) | 426 | if (inet_fill_rule(skb, r, cb, NLM_F_MULTI) < 0) |
426 | break; | 427 | break; |
427 | } | 428 | } |
428 | read_unlock(&fib_rules_lock); | 429 | read_unlock(&fib_rules_lock); |