ipv6: move IPV6_TCLASS_SHIFT into ipv6.h and define a helper
Two places defined IPV6_TCLASS_SHIFT, so we should move it into ipv6.h, and use this macro as possible. And define ip6_tclass helper to return tclass Signed-off-by: Li RongQing <roy.qing.li@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
e96a41ebde
Коммит
d76ed22b22
|
@ -239,6 +239,7 @@ struct ip6_flowlabel {
|
||||||
#define IPV6_FLOWINFO_MASK cpu_to_be32(0x0FFFFFFF)
|
#define IPV6_FLOWINFO_MASK cpu_to_be32(0x0FFFFFFF)
|
||||||
#define IPV6_FLOWLABEL_MASK cpu_to_be32(0x000FFFFF)
|
#define IPV6_FLOWLABEL_MASK cpu_to_be32(0x000FFFFF)
|
||||||
#define IPV6_TCLASS_MASK (IPV6_FLOWINFO_MASK & ~IPV6_FLOWLABEL_MASK)
|
#define IPV6_TCLASS_MASK (IPV6_FLOWINFO_MASK & ~IPV6_FLOWLABEL_MASK)
|
||||||
|
#define IPV6_TCLASS_SHIFT 20
|
||||||
|
|
||||||
struct ipv6_fl_socklist {
|
struct ipv6_fl_socklist {
|
||||||
struct ipv6_fl_socklist __rcu *next;
|
struct ipv6_fl_socklist __rcu *next;
|
||||||
|
@ -681,6 +682,10 @@ static inline __be32 ip6_flowlabel(const struct ipv6hdr *hdr)
|
||||||
return *(__be32 *)hdr & IPV6_FLOWLABEL_MASK;
|
return *(__be32 *)hdr & IPV6_FLOWLABEL_MASK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline u8 ip6_tclass(__be32 flowinfo)
|
||||||
|
{
|
||||||
|
return ntohl(flowinfo & IPV6_TCLASS_MASK) >> IPV6_TCLASS_SHIFT;
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
* Prototypes exported by ipv6
|
* Prototypes exported by ipv6
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -169,7 +169,7 @@ static int fib6_rule_match(struct fib_rule *rule, struct flowi *fl, int flags)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (r->tclass && r->tclass != ((ntohl(fl6->flowlabel) >> 20) & 0xff))
|
if (r->tclass && r->tclass != ip6_tclass(fl6->flowlabel))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
@ -61,8 +61,6 @@ static bool log_ecn_error = true;
|
||||||
module_param(log_ecn_error, bool, 0644);
|
module_param(log_ecn_error, bool, 0644);
|
||||||
MODULE_PARM_DESC(log_ecn_error, "Log packets received with corrupted ECN");
|
MODULE_PARM_DESC(log_ecn_error, "Log packets received with corrupted ECN");
|
||||||
|
|
||||||
#define IPV6_TCLASS_SHIFT 20
|
|
||||||
|
|
||||||
#define HASH_SIZE_SHIFT 5
|
#define HASH_SIZE_SHIFT 5
|
||||||
#define HASH_SIZE (1 << HASH_SIZE_SHIFT)
|
#define HASH_SIZE (1 << HASH_SIZE_SHIFT)
|
||||||
|
|
||||||
|
|
|
@ -69,8 +69,6 @@ MODULE_ALIAS_NETDEV("ip6tnl0");
|
||||||
#define IP6_TNL_TRACE(x...) do {;} while(0)
|
#define IP6_TNL_TRACE(x...) do {;} while(0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define IPV6_TCLASS_SHIFT 20
|
|
||||||
|
|
||||||
#define HASH_SIZE_SHIFT 5
|
#define HASH_SIZE_SHIFT 5
|
||||||
#define HASH_SIZE (1 << HASH_SIZE_SHIFT)
|
#define HASH_SIZE (1 << HASH_SIZE_SHIFT)
|
||||||
|
|
||||||
|
|
|
@ -1019,7 +1019,8 @@ static int do_ipv6_getsockopt(struct sock *sk, int level, int optname,
|
||||||
put_cmsg(&msg, SOL_IPV6, IPV6_HOPLIMIT, sizeof(hlim), &hlim);
|
put_cmsg(&msg, SOL_IPV6, IPV6_HOPLIMIT, sizeof(hlim), &hlim);
|
||||||
}
|
}
|
||||||
if (np->rxopt.bits.rxtclass) {
|
if (np->rxopt.bits.rxtclass) {
|
||||||
int tclass = ntohl(np->rcv_flowinfo & IPV6_TCLASS_MASK) >> 20;
|
int tclass = (int)ip6_tclass(np->rcv_flowinfo);
|
||||||
|
|
||||||
put_cmsg(&msg, SOL_IPV6, IPV6_TCLASS, sizeof(tclass), &tclass);
|
put_cmsg(&msg, SOL_IPV6, IPV6_TCLASS, sizeof(tclass), &tclass);
|
||||||
}
|
}
|
||||||
if (np->rxopt.bits.rxoinfo) {
|
if (np->rxopt.bits.rxoinfo) {
|
||||||
|
|
Загрузка…
Ссылка в новой задаче