mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-04-02 04:24:05 +00:00
net: Make flow cache paths use a const struct flowi.
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
4ca2e68511
commit
dee9f4bceb
4 changed files with 23 additions and 18 deletions
|
@ -428,20 +428,22 @@ enum {
|
||||||
struct flowi;
|
struct flowi;
|
||||||
#ifndef CONFIG_XFRM
|
#ifndef CONFIG_XFRM
|
||||||
static inline int xfrm_lookup(struct net *net, struct dst_entry **dst_p,
|
static inline int xfrm_lookup(struct net *net, struct dst_entry **dst_p,
|
||||||
struct flowi *fl, struct sock *sk, int flags)
|
const struct flowi *fl, struct sock *sk,
|
||||||
|
int flags)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
static inline int __xfrm_lookup(struct net *net, struct dst_entry **dst_p,
|
static inline int __xfrm_lookup(struct net *net, struct dst_entry **dst_p,
|
||||||
struct flowi *fl, struct sock *sk, int flags)
|
const struct flowi *fl, struct sock *sk,
|
||||||
|
int flags)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
extern int xfrm_lookup(struct net *net, struct dst_entry **dst_p,
|
extern int xfrm_lookup(struct net *net, struct dst_entry **dst_p,
|
||||||
struct flowi *fl, struct sock *sk, int flags);
|
const struct flowi *fl, struct sock *sk, int flags);
|
||||||
extern int __xfrm_lookup(struct net *net, struct dst_entry **dst_p,
|
extern int __xfrm_lookup(struct net *net, struct dst_entry **dst_p,
|
||||||
struct flowi *fl, struct sock *sk, int flags);
|
const struct flowi *fl, struct sock *sk, int flags);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -102,11 +102,11 @@ struct flow_cache_ops {
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct flow_cache_object *(*flow_resolve_t)(
|
typedef struct flow_cache_object *(*flow_resolve_t)(
|
||||||
struct net *net, struct flowi *key, u16 family,
|
struct net *net, const struct flowi *key, u16 family,
|
||||||
u8 dir, struct flow_cache_object *oldobj, void *ctx);
|
u8 dir, struct flow_cache_object *oldobj, void *ctx);
|
||||||
|
|
||||||
extern struct flow_cache_object *flow_cache_lookup(
|
extern struct flow_cache_object *flow_cache_lookup(
|
||||||
struct net *net, struct flowi *key, u16 family,
|
struct net *net, const struct flowi *key, u16 family,
|
||||||
u8 dir, flow_resolve_t resolver, void *ctx);
|
u8 dir, flow_resolve_t resolver, void *ctx);
|
||||||
|
|
||||||
extern void flow_cache_flush(void);
|
extern void flow_cache_flush(void);
|
||||||
|
|
|
@ -172,9 +172,9 @@ static void flow_new_hash_rnd(struct flow_cache *fc,
|
||||||
|
|
||||||
static u32 flow_hash_code(struct flow_cache *fc,
|
static u32 flow_hash_code(struct flow_cache *fc,
|
||||||
struct flow_cache_percpu *fcp,
|
struct flow_cache_percpu *fcp,
|
||||||
struct flowi *key)
|
const struct flowi *key)
|
||||||
{
|
{
|
||||||
u32 *k = (u32 *) key;
|
const u32 *k = (const u32 *) key;
|
||||||
|
|
||||||
return jhash2(k, (sizeof(*key) / sizeof(u32)), fcp->hash_rnd)
|
return jhash2(k, (sizeof(*key) / sizeof(u32)), fcp->hash_rnd)
|
||||||
& (flow_cache_hash_size(fc) - 1);
|
& (flow_cache_hash_size(fc) - 1);
|
||||||
|
@ -186,17 +186,17 @@ typedef unsigned long flow_compare_t;
|
||||||
* important assumptions that we can here, such as alignment and
|
* important assumptions that we can here, such as alignment and
|
||||||
* constant size.
|
* constant size.
|
||||||
*/
|
*/
|
||||||
static int flow_key_compare(struct flowi *key1, struct flowi *key2)
|
static int flow_key_compare(const struct flowi *key1, const struct flowi *key2)
|
||||||
{
|
{
|
||||||
flow_compare_t *k1, *k1_lim, *k2;
|
const flow_compare_t *k1, *k1_lim, *k2;
|
||||||
const int n_elem = sizeof(struct flowi) / sizeof(flow_compare_t);
|
const int n_elem = sizeof(struct flowi) / sizeof(flow_compare_t);
|
||||||
|
|
||||||
BUILD_BUG_ON(sizeof(struct flowi) % sizeof(flow_compare_t));
|
BUILD_BUG_ON(sizeof(struct flowi) % sizeof(flow_compare_t));
|
||||||
|
|
||||||
k1 = (flow_compare_t *) key1;
|
k1 = (const flow_compare_t *) key1;
|
||||||
k1_lim = k1 + n_elem;
|
k1_lim = k1 + n_elem;
|
||||||
|
|
||||||
k2 = (flow_compare_t *) key2;
|
k2 = (const flow_compare_t *) key2;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
if (*k1++ != *k2++)
|
if (*k1++ != *k2++)
|
||||||
|
@ -207,7 +207,7 @@ static int flow_key_compare(struct flowi *key1, struct flowi *key2)
|
||||||
}
|
}
|
||||||
|
|
||||||
struct flow_cache_object *
|
struct flow_cache_object *
|
||||||
flow_cache_lookup(struct net *net, struct flowi *key, u16 family, u8 dir,
|
flow_cache_lookup(struct net *net, const struct flowi *key, u16 family, u8 dir,
|
||||||
flow_resolve_t resolver, void *ctx)
|
flow_resolve_t resolver, void *ctx)
|
||||||
{
|
{
|
||||||
struct flow_cache *fc = &flow_cache_global;
|
struct flow_cache *fc = &flow_cache_global;
|
||||||
|
|
|
@ -954,7 +954,7 @@ __xfrm_policy_lookup(struct net *net, const struct flowi *fl, u16 family, u8 dir
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct flow_cache_object *
|
static struct flow_cache_object *
|
||||||
xfrm_policy_lookup(struct net *net, struct flowi *fl, u16 family,
|
xfrm_policy_lookup(struct net *net, const struct flowi *fl, u16 family,
|
||||||
u8 dir, struct flow_cache_object *old_obj, void *ctx)
|
u8 dir, struct flow_cache_object *old_obj, void *ctx)
|
||||||
{
|
{
|
||||||
struct xfrm_policy *pol;
|
struct xfrm_policy *pol;
|
||||||
|
@ -990,7 +990,8 @@ static inline int policy_to_flow_dir(int dir)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct xfrm_policy *xfrm_sk_policy_lookup(struct sock *sk, int dir, struct flowi *fl)
|
static struct xfrm_policy *xfrm_sk_policy_lookup(struct sock *sk, int dir,
|
||||||
|
const struct flowi *fl)
|
||||||
{
|
{
|
||||||
struct xfrm_policy *pol;
|
struct xfrm_policy *pol;
|
||||||
|
|
||||||
|
@ -1629,7 +1630,7 @@ xfrm_resolve_and_create_bundle(struct xfrm_policy **pols, int num_pols,
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct flow_cache_object *
|
static struct flow_cache_object *
|
||||||
xfrm_bundle_lookup(struct net *net, struct flowi *fl, u16 family, u8 dir,
|
xfrm_bundle_lookup(struct net *net, const struct flowi *fl, u16 family, u8 dir,
|
||||||
struct flow_cache_object *oldflo, void *ctx)
|
struct flow_cache_object *oldflo, void *ctx)
|
||||||
{
|
{
|
||||||
struct dst_entry *dst_orig = (struct dst_entry *)ctx;
|
struct dst_entry *dst_orig = (struct dst_entry *)ctx;
|
||||||
|
@ -1733,7 +1734,8 @@ error:
|
||||||
* At the moment we eat a raw IP route. Mostly to speed up lookups
|
* At the moment we eat a raw IP route. Mostly to speed up lookups
|
||||||
* on interfaces with disabled IPsec.
|
* on interfaces with disabled IPsec.
|
||||||
*/
|
*/
|
||||||
int __xfrm_lookup(struct net *net, struct dst_entry **dst_p, struct flowi *fl,
|
int __xfrm_lookup(struct net *net, struct dst_entry **dst_p,
|
||||||
|
const struct flowi *fl,
|
||||||
struct sock *sk, int flags)
|
struct sock *sk, int flags)
|
||||||
{
|
{
|
||||||
struct xfrm_policy *pols[XFRM_POLICY_TYPE_MAX];
|
struct xfrm_policy *pols[XFRM_POLICY_TYPE_MAX];
|
||||||
|
@ -1889,7 +1891,8 @@ dropdst:
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(__xfrm_lookup);
|
EXPORT_SYMBOL(__xfrm_lookup);
|
||||||
|
|
||||||
int xfrm_lookup(struct net *net, struct dst_entry **dst_p, struct flowi *fl,
|
int xfrm_lookup(struct net *net, struct dst_entry **dst_p,
|
||||||
|
const struct flowi *fl,
|
||||||
struct sock *sk, int flags)
|
struct sock *sk, int flags)
|
||||||
{
|
{
|
||||||
int err = __xfrm_lookup(net, dst_p, fl, sk, flags);
|
int err = __xfrm_lookup(net, dst_p, fl, sk, flags);
|
||||||
|
|
Loading…
Add table
Reference in a new issue