Subject: Re: [iproute2] iproute2: Fix batch-mode for mrules.

From: Ben Greear <[email-masked]>
Date: Fri, 23 Jul 2010 09:09:07 -0700

On 07/23/2010 09:03 AM, Stephen Hemminger wrote:
> On Thu, 15 Jul 2010 15:48:10 -0700
> Ben Greear<[email-masked]>  wrote:
>
>> The do_multirule logic was broken in batch mode because
>> it expected the preferred_family to be AF_INET or AF_INET6,
>> but it then assigned it to RTNL_FAMILY_IPMR or RTNL_FAMILY_IP6MR.
>> So, the next iteration of the batch processing, it failed
>> the check for AF_INET or AF_INET6.
>>
>> Signed-off-by: Ben Greear<[email-masked]>
>> ---
>> :100644 100644 9c8c6ef... d3b97e2... M	ip/iprule.c
>>   ip/iprule.c |    6 +++++-
>>   1 files changed, 5 insertions(+), 1 deletions(-)
>>
>> diff --git a/ip/iprule.c b/ip/iprule.c
>> index 9c8c6ef..d3b97e2 100644
>> --- a/ip/iprule.c
>> +++ b/ip/iprule.c
>> @@ -446,8 +446,12 @@ int do_multirule(int argc, char **argv)
>>   	case AF_INET6:
>>   		preferred_family = RTNL_FAMILY_IP6MR;
>>   		break;
>> +	case RTNL_FAMILY_IPMR:
>> +	case RTNL_FAMILY_IP6MR:
>> +		break;
>>   	default:
>> -		fprintf(stderr, "Multicast rules are only supported for IPv4/IPv6\n");
>> +		fprintf(stderr, "Multicast rules are only supported for IPv4/IPv6, was: %i\n",
>> +			preferred_family);
>>   		exit(-1);
>>   	}
>>
>
> Applied

Thanks.  I recently realized this patch is not quite enough
for full flexibility.

It does help the case where you have 'normal' cmds followed by
mrule commands, but it doesn't fix the case where you have 'normal' commands
after the mrule commands.

I was thinking maybe we should pass the preferred_family in as an argument
to the method(s) instead of twiddling the global value?

Thanks,
Ben

-- 
Ben Greear <[email-masked]>
Candela Technologies Inc  http://www.candelatech.com