From mboxrd@z Thu Jan 1 00:00:00 1970 From: YOSHIFUJI Hideaki Subject: Re: [PATCH net-next v2 1/4] ipv6: introduce new type ipv6_addr_props to hold ipv6 address type and scope Date: Sun, 17 Feb 2013 11:52:26 +0900 Message-ID: <512045EA.9090309@linux-ipv6.org> References: <20130216191008.GA23272@order.stressinduktion.org> <512013B8.3000608@linux-ipv6.org> <512016E8.30305@linux-ipv6.org> <20130217014718.GA28547@order.stressinduktion.org> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit To: netdev@vger.kernel.org, brian.haley@hp.com, Hannes Frederic Sowa , YOSHIFUJI Hideaki Return-path: Received: from 94.43.138.210.xn.2iij.net ([210.138.43.94]:33523 "EHLO mail.st-paulia.net" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754269Ab3BQCw3 (ORCPT ); Sat, 16 Feb 2013 21:52:29 -0500 In-Reply-To: <20130217014718.GA28547@order.stressinduktion.org> Sender: netdev-owner@vger.kernel.org List-ID: Hannes Frederic Sowa wrote: > On Sun, Feb 17, 2013 at 08:31:52AM +0900, YOSHIFUJI Hideaki wrote: >>>> -extern int __ipv6_addr_type(const struct in6_addr *addr); >>>> -static inline int ipv6_addr_type(const struct in6_addr *addr) >>>> +struct ipv6_addr_props { >>>> + u16 type; >>>> + s16 scope; >>>> +}; >>>> + >>>> +extern struct ipv6_addr_props __ipv6_addr_props(const struct in6_addr *addr); >>>> +static inline unsigned int ipv6_addr_type(const struct in6_addr *addr) >>>> { >>>> - return __ipv6_addr_type(addr) & 0xffff; >>>> + return __ipv6_addr_props(addr).type; >>>> } >>>> >>>> static inline int ipv6_addr_scope(const struct in6_addr *addr) >>>> { >>>> - return __ipv6_addr_type(addr) & IPV6_ADDR_SCOPE_MASK; >>>> + return __ipv6_addr_props(addr).scope; >>>> } >>>> >>> >>> NAK. This does not return correct value as before. >>> If you are going to covert this, please do not try to >>> change usage of inlines. >> >> I meant >> >> struct ipv6_addrtype { >> __u16 type; >> __s16 scope; >> }; >> >> struct ipv6_addrtype __ipv6_addr_type(const struct in6_addr *addr); >> int ipv6_addr_type(const struct in6_addr *addr) >> { >> return __ipv6_addr_type(addr).type; >> } >> >> And most users should not be touched except for it type name >> (int => struct addrtype). > > Sorry, I am a bit confused. The missing '& IPV6_ADDR_SCOPE_MASK' is clearly a > bug. I implied a bitmask for the IPV6_ADDR_SCOPE_* macros. But I don't > understand to what you do refer in your second mail. > No, return __ipv6_addr_type(addr).type & IPV6_ADDR_SCOPE_MASK, see? You have changed too many things in a single patch. Please do not try to change function arguments, and so on e.g. if original takes int by __ipv6_addr_type() value, please leave it semantics as is. I think you can concentrate on your original work for multicast/scoping issues first. Thanks. --yoshfuji