On 23/06/15 06:12, Lidong Zhong wrote:
>>>> On 6/18/2015 at 10:03 PM, in message <[email protected]>, 
>>>> Christine
> Caulfield <[email protected]> wrote: 
>> On 18/06/15 03:20, Lidong Zhong wrote: 
>>> Hi Christine, 
>>>  
>>> Any news about this patch? 
>>>  
>>  
>> Hi Lidong, 
>>  
> Hi Christine, 
> 
> Thanks for your reply.
> 
>> I'm afraid I'm going to have to NAK it. Although it technically matches 
>> the man page, it breaks existing behaviour (the ability to bind to a 
>> host IP address) and that behaviour is also valid in corosync 2. If you 
>> can come up with a patch that allows that behaviour AND fixes this 
>> problem then I'll he happy to review it. 
>>  
> I think the condition you described here has already been considered in the 
> original logic.
> The code is here
> 611                 if (tb[IFA_LOCAL]) {
> 612                     memcpy(ipaddr.addr, RTA_DATA(tb[IFA_LOCAL]), 
> TOTEMIP_ADDRLEN);
> 613                     if (totemip_equal(&ipaddr, bindnet)) {
> 614                         found_if = 1;
> 615                         exact_match_found = 1;
> 616                     }
> 617                 }
> Then it will check if the bindnetwork address with netmask.
> 

You are correct, I took the time to test it today :)

It's been such a long time since that code was looked at, I'd forgotten
how that bit worked.

I'll check it into the flatiron branch, but it's unlikely to make RHEL
unless there's a compelling bugzilla to go with it.

Thanks for being persistent and patient.
Chrissie


> Regards,
> Lidong
> 
>> Sorry for delay in responding, I was away for a while. 
>>  
>> Chrissie 
>>  
>>> Regards, 
>>> Lidong 
>>>  
>>>>>> On 5/15/2015 at 09:52 AM, in  
>>>> message  
>>> <[email protected]>, "Lidong  
>>>> Zhong"  
>>> <[email protected]> wrote:  
>>>  On 5/14/2015 at 08:23 PM, in message  
>>>> <[email protected]>, Christine  
>>>> Caulfield <[email protected]> wrote:   
>>>>> On 14/05/15 06:36, Lidong Zhong wrote:   
>>>>>> For instance, the IPs are:   
>>>>>> eth0: 10.150.10.81/8   
>>>>>> eth1: 10.150.10.91/24    
>>>>>> The bindnetaddr in corosync is: 10.150.10.0 and the addr of eth1 is   
>>>>>> selected in UDPU mode. Then the bindto address probably mistakenly 
>>>>>> choose   
>>>>>> the addr of eth0.   
>>>>>>    
>>>>>    
>>>>> Hiya,   
>>>>>    
>>>>> Thanks for the patch but I'm not convinced it's the right thing to do   
>>>>> for all situations. If the bindnet_addr is set to an actual IP address   
>>>>> and not a subnet mask then it will fail I think. What does your   
>>>>> corosync.conf look like?   
>>>>>    
>>>> Hi Chrissie,  
>>>>   
>>>> Thanks for your reply. The full corosync.conf is attached below.  
>>>> As the man page says, the bindnetaddr always is the local interface ip  
>>>> with netmask. It should be a full ip address only in IPv6 case. And I 
>>>> think  
>>   
>>>> there  
>>>> is no problem for the current code to handle IPv6 address.  
>>>>   
>>>> Regards,  
>>>> Lidong  
>>>>   
>>>>> Chrissie   
>>>>>    
>>>>>> Signed-off-by: Lidong Zhong <[email protected]>   
>>>>>> ---   
>>>>>>  exec/totemip.c | 2 +-   
>>>>>>  1 file changed, 1 insertion(+), 1 deletion(-)   
>>>>>>    
>>>>>> diff --git a/exec/totemip.c b/exec/totemip.c   
>>>>>> index ab175a8..c1fa800 100644   
>>>>>> --- a/exec/totemip.c   
>>>>>> +++ b/exec/totemip.c   
>>>>>> @@ -626,7 +626,7 @@ int totemip_iface_check(struct totem_ip_address    
>>>>> *bindnet,   
>>>>>>                                          memcpy(&network, 
>>>>>> RTA_DATA(tb[IFA_LOCAL]), sizeof(uint32_t));   
>>>>>>                                          memcpy(&addr, bindnet->addr, 
>>>>>> sizeof(uint32_t));   
>>>>>>     
>>>>>> -                                        if ((addr & netmask) == 
>>>>>> (network & netmask)) {   
>>>>>> +                                        if (addr == (network & 
>>>>>> netmask)) {   
>>>>>>                                                  memcpy(ipaddr.addr, 
>>>>>> RTA_DATA(tb[IFA_ADDRESS]), TOTEMIP_ADDRLEN);   
>>>>>>                                                  found_if = 1;   
>>>>>>                                          }   
>>>>>>    
>>>>>    
>>>>> _______________________________________________   
>>>>> discuss mailing list   
>>>>> [email protected]   
>>>>> http://lists.corosync.org/mailman/listinfo/discuss   
>>>>>    
>>>>>    
>>>>   
>>>>   
>>>>   
>>>  
>>>  
>>  
>>  
>>  
> 

_______________________________________________
discuss mailing list
[email protected]
http://lists.corosync.org/mailman/listinfo/discuss

Reply via email to