@@ -3169,21 +3169,14 @@ static int rt6_fill_node(struct net *net,
3169
3169
struct sk_buff * skb , struct rt6_info * rt ,
3170
3170
struct in6_addr * dst , struct in6_addr * src ,
3171
3171
int iif , int type , u32 portid , u32 seq ,
3172
- int prefix , int nowait , unsigned int flags )
3172
+ unsigned int flags )
3173
3173
{
3174
3174
u32 metrics [RTAX_MAX ];
3175
3175
struct rtmsg * rtm ;
3176
3176
struct nlmsghdr * nlh ;
3177
3177
long expires ;
3178
3178
u32 table ;
3179
3179
3180
- if (prefix ) { /* user wants prefix routes only */
3181
- if (!(rt -> rt6i_flags & RTF_PREFIX_RT )) {
3182
- /* success since this is not a prefix route */
3183
- return 1 ;
3184
- }
3185
- }
3186
-
3187
3180
nlh = nlmsg_put (skb , portid , seq , type , sizeof (* rtm ), flags );
3188
3181
if (!nlh )
3189
3182
return - EMSGSIZE ;
@@ -3261,19 +3254,12 @@ static int rt6_fill_node(struct net *net,
3261
3254
if (iif ) {
3262
3255
#ifdef CONFIG_IPV6_MROUTE
3263
3256
if (ipv6_addr_is_multicast (& rt -> rt6i_dst .addr )) {
3264
- int err = ip6mr_get_route (net , skb , rtm , nowait ,
3265
- portid );
3266
-
3267
- if (err <= 0 ) {
3268
- if (!nowait ) {
3269
- if (err == 0 )
3270
- return 0 ;
3271
- goto nla_put_failure ;
3272
- } else {
3273
- if (err == - EMSGSIZE )
3274
- goto nla_put_failure ;
3275
- }
3276
- }
3257
+ int err = ip6mr_get_route (net , skb , rtm , portid );
3258
+
3259
+ if (err == 0 )
3260
+ return 0 ;
3261
+ if (err < 0 )
3262
+ goto nla_put_failure ;
3277
3263
} else
3278
3264
#endif
3279
3265
if (nla_put_u32 (skb , RTA_IIF , iif ))
@@ -3331,18 +3317,22 @@ static int rt6_fill_node(struct net *net,
3331
3317
int rt6_dump_route (struct rt6_info * rt , void * p_arg )
3332
3318
{
3333
3319
struct rt6_rtnl_dump_arg * arg = (struct rt6_rtnl_dump_arg * ) p_arg ;
3334
- int prefix ;
3335
3320
3336
3321
if (nlmsg_len (arg -> cb -> nlh ) >= sizeof (struct rtmsg )) {
3337
3322
struct rtmsg * rtm = nlmsg_data (arg -> cb -> nlh );
3338
- prefix = (rtm -> rtm_flags & RTM_F_PREFIX ) != 0 ;
3339
- } else
3340
- prefix = 0 ;
3323
+
3324
+ /* user wants prefix routes only */
3325
+ if (rtm -> rtm_flags & RTM_F_PREFIX &&
3326
+ !(rt -> rt6i_flags & RTF_PREFIX_RT )) {
3327
+ /* success since this is not a prefix route */
3328
+ return 1 ;
3329
+ }
3330
+ }
3341
3331
3342
3332
return rt6_fill_node (arg -> net ,
3343
3333
arg -> skb , rt , NULL , NULL , 0 , RTM_NEWROUTE ,
3344
3334
NETLINK_CB (arg -> cb -> skb ).portid , arg -> cb -> nlh -> nlmsg_seq ,
3345
- prefix , 0 , NLM_F_MULTI );
3335
+ NLM_F_MULTI );
3346
3336
}
3347
3337
3348
3338
static int inet6_rtm_getroute (struct sk_buff * in_skb , struct nlmsghdr * nlh )
@@ -3433,7 +3423,7 @@ static int inet6_rtm_getroute(struct sk_buff *in_skb, struct nlmsghdr *nlh)
3433
3423
3434
3424
err = rt6_fill_node (net , skb , rt , & fl6 .daddr , & fl6 .saddr , iif ,
3435
3425
RTM_NEWROUTE , NETLINK_CB (in_skb ).portid ,
3436
- nlh -> nlmsg_seq , 0 , 0 , 0 );
3426
+ nlh -> nlmsg_seq , 0 );
3437
3427
if (err < 0 ) {
3438
3428
kfree_skb (skb );
3439
3429
goto errout ;
@@ -3460,7 +3450,7 @@ void inet6_rt_notify(int event, struct rt6_info *rt, struct nl_info *info,
3460
3450
goto errout ;
3461
3451
3462
3452
err = rt6_fill_node (net , skb , rt , NULL , NULL , 0 ,
3463
- event , info -> portid , seq , 0 , 0 , nlm_flags );
3453
+ event , info -> portid , seq , nlm_flags );
3464
3454
if (err < 0 ) {
3465
3455
/* -EMSGSIZE implies BUG in rt6_nlmsg_size() */
3466
3456
WARN_ON (err == - EMSGSIZE );
0 commit comments