diff options
Diffstat (limited to 'net/ipv6/ip6mr.c')
| -rw-r--r-- | net/ipv6/ip6mr.c | 13 | 
1 files changed, 8 insertions, 5 deletions
diff --git a/net/ipv6/ip6mr.c b/net/ipv6/ip6mr.c index 0eb4038a4d63..8737400af0a0 100644 --- a/net/ipv6/ip6mr.c +++ b/net/ipv6/ip6mr.c @@ -2349,13 +2349,14 @@ int ip6mr_get_route(struct net *net,  }  static int ip6mr_fill_mroute(struct mr6_table *mrt, struct sk_buff *skb, -			     u32 portid, u32 seq, struct mfc6_cache *c, int cmd) +			     u32 portid, u32 seq, struct mfc6_cache *c, int cmd, +			     int flags)  {  	struct nlmsghdr *nlh;  	struct rtmsg *rtm;  	int err; -	nlh = nlmsg_put(skb, portid, seq, cmd, sizeof(*rtm), NLM_F_MULTI); +	nlh = nlmsg_put(skb, portid, seq, cmd, sizeof(*rtm), flags);  	if (nlh == NULL)  		return -EMSGSIZE; @@ -2423,7 +2424,7 @@ static void mr6_netlink_event(struct mr6_table *mrt, struct mfc6_cache *mfc,  	if (skb == NULL)  		goto errout; -	err = ip6mr_fill_mroute(mrt, skb, 0, 0, mfc, cmd); +	err = ip6mr_fill_mroute(mrt, skb, 0, 0, mfc, cmd, 0);  	if (err < 0)  		goto errout; @@ -2462,7 +2463,8 @@ static int ip6mr_rtm_dumproute(struct sk_buff *skb, struct netlink_callback *cb)  				if (ip6mr_fill_mroute(mrt, skb,  						      NETLINK_CB(cb->skb).portid,  						      cb->nlh->nlmsg_seq, -						      mfc, RTM_NEWROUTE) < 0) +						      mfc, RTM_NEWROUTE, +						      NLM_F_MULTI) < 0)  					goto done;  next_entry:  				e++; @@ -2476,7 +2478,8 @@ next_entry:  			if (ip6mr_fill_mroute(mrt, skb,  					      NETLINK_CB(cb->skb).portid,  					      cb->nlh->nlmsg_seq, -					      mfc, RTM_NEWROUTE) < 0) { +					      mfc, RTM_NEWROUTE, +					      NLM_F_MULTI) < 0) {  				spin_unlock_bh(&mfc_unres_lock);  				goto done;  			}  | 
