net: Make flow cache paths use a const struct flowi.
authorDavid S. Miller <davem@davemloft.net>
Wed, 23 Feb 2011 02:44:31 +0000 (18:44 -0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 23 Feb 2011 02:44:31 +0000 (18:44 -0800)
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/dst.h
include/net/flow.h
net/core/flow.c
net/xfrm/xfrm_policy.c

index 23b564d3e110b421e63abcaf83213b86da1e5712..4fedffd7c56f17f6a114e67ef329835155fec1f0 100644 (file)
@@ -428,20 +428,22 @@ enum {
 struct flowi;
 #ifndef CONFIG_XFRM
 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;
 } 
 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;
 }
 #else
 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,
-                        struct flowi *fl, struct sock *sk, int flags);
+                        const struct flowi *fl, struct sock *sk, int flags);
 #endif
 #endif
 
index f4270d4b22c33a87bb20d1d494baeb0c875a26cb..f2080e65276d14e308095e9cc1676ce5c8158aa1 100644 (file)
@@ -102,11 +102,11 @@ struct flow_cache_ops {
 };
 
 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);
 
 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);
 
 extern void flow_cache_flush(void);
index 127c8a7ffd61fbc350fafe503fe692622e16374e..990703b8863b4d0bdb29619350e7d4aec01bde17 100644 (file)
@@ -172,9 +172,9 @@ static void flow_new_hash_rnd(struct flow_cache *fc,
 
 static u32 flow_hash_code(struct flow_cache *fc,
                          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)
                & (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
  * 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);
 
        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;
 
-       k2 = (flow_compare_t *) key2;
+       k2 = (const flow_compare_t *) key2;
 
        do {
                if (*k1++ != *k2++)
@@ -207,7 +207,7 @@ static int flow_key_compare(struct flowi *key1, struct flowi *key2)
 }
 
 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)
 {
        struct flow_cache *fc = &flow_cache_global;
index ef899a8e33ce5c384f77b852404d6dbfd132d104..28c865adf609af8905f37e9d2498ae6dea9e4ab1 100644 (file)
@@ -954,7 +954,7 @@ __xfrm_policy_lookup(struct net *net, const struct flowi *fl, u16 family, u8 dir
 }
 
 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)
 {
        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;
 
@@ -1629,7 +1630,7 @@ xfrm_resolve_and_create_bundle(struct xfrm_policy **pols, int num_pols,
 }
 
 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 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
  * 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 xfrm_policy *pols[XFRM_POLICY_TYPE_MAX];
@@ -1889,7 +1891,8 @@ dropdst:
 }
 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)
 {
        int err = __xfrm_lookup(net, dst_p, fl, sk, flags);