Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
dee9f4bc
Commit
dee9f4bc
authored
Feb 22, 2011
by
David S. Miller
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
net: Make flow cache paths use a const struct flowi.
Signed-off-by:
David S. Miller
<
davem@davemloft.net
>
parent
4ca2e685
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
23 additions
and
18 deletions
+23
-18
include/net/dst.h
include/net/dst.h
+6
-4
include/net/flow.h
include/net/flow.h
+2
-2
net/core/flow.c
net/core/flow.c
+7
-7
net/xfrm/xfrm_policy.c
net/xfrm/xfrm_policy.c
+8
-5
No files found.
include/net/dst.h
View file @
dee9f4bc
...
@@ -428,20 +428,22 @@ enum {
...
@@ -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
...
...
include/net/flow.h
View file @
dee9f4bc
...
@@ -102,11 +102,11 @@ struct flow_cache_ops {
...
@@ -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
);
...
...
net/core/flow.c
View file @
dee9f4bc
...
@@ -172,9 +172,9 @@ static void flow_new_hash_rnd(struct flow_cache *fc,
...
@@ -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;
...
@@ -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)
...
@@ -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
;
...
...
net/xfrm/xfrm_policy.c
View file @
dee9f4bc
...
@@ -954,7 +954,7 @@ __xfrm_policy_lookup(struct net *net, const struct flowi *fl, u16 family, u8 dir
...
@@ -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)
...
@@ -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,
...
@@ -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 @@ xfrm_bundle_lookup(struct net *net, struct flowi *fl, u16 family, u8 dir,
...
@@ -1733,7 +1734,8 @@ xfrm_bundle_lookup(struct net *net, struct flowi *fl, u16 family, u8 dir,
* 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 @@ int __xfrm_lookup(struct net *net, struct dst_entry **dst_p, struct flowi *fl,
...
@@ -1889,7 +1891,8 @@ int __xfrm_lookup(struct net *net, struct dst_entry **dst_p, struct flowi *fl,
}
}
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
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment