On 10/20/15 at 03:20pm, Jarno Rajahalme wrote:
> Define a new inline function to map conntrack status to enum
> ip_conntrack_info.  This removes the need to otherwise duplicate this
> code in a later patch.
> 
> Signed-off-by: Jarno Rajahalme <jrajaha...@nicira.com>

LGTM

> ---
>  include/net/netfilter/nf_conntrack.h | 15 +++++++++++++++
>  net/netfilter/nf_conntrack_core.c    | 22 +++-------------------
>  2 files changed, 18 insertions(+), 19 deletions(-)
> 
> diff --git a/include/net/netfilter/nf_conntrack.h 
> b/include/net/netfilter/nf_conntrack.h
> index fde4068..b3de10e 100644
> --- a/include/net/netfilter/nf_conntrack.h
> +++ b/include/net/netfilter/nf_conntrack.h
> @@ -125,6 +125,21 @@ nf_ct_tuplehash_to_ctrack(const struct 
> nf_conntrack_tuple_hash *hash)
>                           tuplehash[hash->tuple.dst.dir]);
>  }
>  
> +static inline enum ip_conntrack_info
> +nf_ct_get_info(const struct nf_conntrack_tuple_hash *h)
> +{
> +     const struct nf_conn *ct = nf_ct_tuplehash_to_ctrack(h);
> +
> +     if (NF_CT_DIRECTION(h) == IP_CT_DIR_REPLY)
> +             return IP_CT_ESTABLISHED_REPLY;
> +     /* Once we've had two way comms, always ESTABLISHED. */
> +     if (test_bit(IPS_SEEN_REPLY_BIT, &ct->status))
> +             return IP_CT_ESTABLISHED;
> +     if (test_bit(IPS_EXPECTED_BIT, &ct->status))
> +             return IP_CT_RELATED;
> +     return IP_CT_NEW;
> +}
> +
>  static inline u_int16_t nf_ct_l3num(const struct nf_conn *ct)
>  {
>       return ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.l3num;
> diff --git a/net/netfilter/nf_conntrack_core.c 
> b/net/netfilter/nf_conntrack_core.c
> index 3cb3cb8..70ddbd8 100644
> --- a/net/netfilter/nf_conntrack_core.c
> +++ b/net/netfilter/nf_conntrack_core.c
> @@ -1056,25 +1056,9 @@ resolve_normal_ct(struct net *net, struct nf_conn 
> *tmpl,
>       ct = nf_ct_tuplehash_to_ctrack(h);
>  
>       /* It exists; we have (non-exclusive) reference. */
> -     if (NF_CT_DIRECTION(h) == IP_CT_DIR_REPLY) {
> -             *ctinfo = IP_CT_ESTABLISHED_REPLY;
> -             /* Please set reply bit if this packet OK */
> -             *set_reply = 1;
> -     } else {
> -             /* Once we've had two way comms, always ESTABLISHED. */
> -             if (test_bit(IPS_SEEN_REPLY_BIT, &ct->status)) {
> -                     pr_debug("nf_conntrack_in: normal packet for %p\n", ct);
> -                     *ctinfo = IP_CT_ESTABLISHED;
> -             } else if (test_bit(IPS_EXPECTED_BIT, &ct->status)) {
> -                     pr_debug("nf_conntrack_in: related packet for %p\n",
> -                              ct);
> -                     *ctinfo = IP_CT_RELATED;
> -             } else {
> -                     pr_debug("nf_conntrack_in: new packet for %p\n", ct);
> -                     *ctinfo = IP_CT_NEW;
> -             }
> -             *set_reply = 0;
> -     }
> +     *ctinfo = nf_ct_get_info(h);
> +     *set_reply = NF_CT_DIRECTION(h) == IP_CT_DIR_REPLY;
> +
>       skb->nfct = &ct->ct_general;
>       skb->nfctinfo = *ctinfo;
>       return ct;
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to