mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
ipv6: Optmize translation between IPV6_PREFER_SRC_xxx and RT6_LOOKUP_F_xxx.
IPV6_PREFER_SRC_xxx definitions: | #define IPV6_PREFER_SRC_TMP 0x0001 | #define IPV6_PREFER_SRC_PUBLIC 0x0002 | #define IPV6_PREFER_SRC_COA 0x0004 RT6_LOOKUP_F_xxx definitions: | #define RT6_LOOKUP_F_SRCPREF_TMP 0x00000008 | #define RT6_LOOKUP_F_SRCPREF_PUBLIC 0x00000010 | #define RT6_LOOKUP_F_SRCPREF_COA 0x00000020 So, we can translate between these two groups by shift operation instead of multiple 'if's. Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
25dc27d17d
commit
0c9a2ac1f8
3 changed files with 22 additions and 18 deletions
|
@ -37,6 +37,24 @@ struct route_info {
|
|||
#define RT6_LOOKUP_F_SRCPREF_PUBLIC 0x00000010
|
||||
#define RT6_LOOKUP_F_SRCPREF_COA 0x00000020
|
||||
|
||||
/*
|
||||
* rt6_srcprefs2flags() and rt6_flags2srcprefs() translate
|
||||
* between IPV6_ADDR_PREFERENCES socket option values
|
||||
* IPV6_PREFER_SRC_TMP = 0x1
|
||||
* IPV6_PREFER_SRC_PUBLIC = 0x2
|
||||
* IPV6_PREFER_SRC_COA = 0x4
|
||||
* and above RT6_LOOKUP_F_SRCPREF_xxx flags.
|
||||
*/
|
||||
static inline int rt6_srcprefs2flags(unsigned int srcprefs)
|
||||
{
|
||||
/* No need to bitmask because srcprefs have only 3 bits. */
|
||||
return srcprefs << 3;
|
||||
}
|
||||
|
||||
static inline unsigned int rt6_flags2srcprefs(int flags)
|
||||
{
|
||||
return (flags >> 3) & 7;
|
||||
}
|
||||
|
||||
extern void ip6_route_input(struct sk_buff *skb);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue