mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-19 13:11:14 +00:00
net: Handle different key sizes between address families in flow cache
With the conversion of struct flowi to a union of AF-specific structs, some operations on the flow cache need to account for the exact size of the key. Signed-off-by: David Ward <david.ward@ll.mit.edu> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
728871bc05
commit
aa1c366e4f
2 changed files with 36 additions and 14 deletions
|
@ -7,6 +7,7 @@
|
|||
#ifndef _NET_FLOW_H
|
||||
#define _NET_FLOW_H
|
||||
|
||||
#include <linux/socket.h>
|
||||
#include <linux/in6.h>
|
||||
#include <linux/atomic.h>
|
||||
|
||||
|
@ -161,6 +162,24 @@ static inline struct flowi *flowidn_to_flowi(struct flowidn *fldn)
|
|||
return container_of(fldn, struct flowi, u.dn);
|
||||
}
|
||||
|
||||
typedef unsigned long flow_compare_t;
|
||||
|
||||
static inline size_t flow_key_size(u16 family)
|
||||
{
|
||||
switch (family) {
|
||||
case AF_INET:
|
||||
BUILD_BUG_ON(sizeof(struct flowi4) % sizeof(flow_compare_t));
|
||||
return sizeof(struct flowi4) / sizeof(flow_compare_t);
|
||||
case AF_INET6:
|
||||
BUILD_BUG_ON(sizeof(struct flowi6) % sizeof(flow_compare_t));
|
||||
return sizeof(struct flowi6) / sizeof(flow_compare_t);
|
||||
case AF_DECnet:
|
||||
BUILD_BUG_ON(sizeof(struct flowidn) % sizeof(flow_compare_t));
|
||||
return sizeof(struct flowidn) / sizeof(flow_compare_t);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define FLOW_DIR_IN 0
|
||||
#define FLOW_DIR_OUT 1
|
||||
#define FLOW_DIR_FWD 2
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue