]> err.no Git - linux-2.6/commitdiff
[NETFILTER]: nf_conntrack_sip: remove redundant function arguments
authorPatrick McHardy <kaber@trash.net>
Wed, 26 Mar 2008 03:17:13 +0000 (20:17 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 26 Mar 2008 03:17:13 +0000 (20:17 -0700)
The conntrack reference and ctinfo can be derived from the packet.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/netfilter/nf_conntrack_sip.h
net/ipv4/netfilter/nf_nat_sip.c
net/netfilter/nf_conntrack_sip.c

index 9d0dbfb26300b7699741fb65370a979bd5cc2712..b94de3d60303a67d218973ca427c678227da8031 100644 (file)
@@ -22,15 +22,12 @@ enum sip_header_pos {
 };
 
 extern unsigned int (*nf_nat_sip_hook)(struct sk_buff *skb,
-                                      enum ip_conntrack_info ctinfo,
-                                      struct nf_conn *ct,
                                       const char **dptr,
                                       unsigned int *datalen);
 extern unsigned int (*nf_nat_sdp_hook)(struct sk_buff *skb,
-                                      enum ip_conntrack_info ctinfo,
-                                      struct nf_conntrack_expect *exp,
                                       const char **dptr,
-                                      unsigned int *datalen);
+                                      unsigned int *datalen,
+                                      struct nf_conntrack_expect *exp);
 
 extern int ct_sip_get_info(const struct nf_conn *ct, const char *dptr,
                            size_t dlen, unsigned int *matchoff,
index e77122e65283ce132d0b94ad0a7a8a359ba4371e..acaa7d4569fa7955e3ce39a185c999c18619957f 100644 (file)
@@ -78,11 +78,12 @@ static unsigned int mangle_packet(struct sk_buff *skb,
        return 1;
 }
 
-static int map_sip_addr(struct sk_buff *skb, enum ip_conntrack_info ctinfo,
-                       struct nf_conn *ct,
+static int map_sip_addr(struct sk_buff *skb,
                        const char **dptr, unsigned int *datalen,
                        enum sip_header_pos pos, struct addr_map *map)
 {
+       enum ip_conntrack_info ctinfo;
+       struct nf_conn *ct = nf_ct_get(skb, &ctinfo);
        enum ip_conntrack_dir dir = CTINFO2DIR(ctinfo);
        unsigned int matchlen, matchoff, addrlen;
        char *addr;
@@ -109,10 +110,10 @@ static int map_sip_addr(struct sk_buff *skb, enum ip_conntrack_info ctinfo,
 }
 
 static unsigned int ip_nat_sip(struct sk_buff *skb,
-                              enum ip_conntrack_info ctinfo,
-                              struct nf_conn *ct,
                               const char **dptr, unsigned int *datalen)
 {
+       enum ip_conntrack_info ctinfo;
+       struct nf_conn *ct = nf_ct_get(skb, &ctinfo);
        enum sip_header_pos pos;
        struct addr_map map;
 
@@ -134,25 +135,25 @@ static unsigned int ip_nat_sip(struct sk_buff *skb,
                else
                        pos = POS_REQ_URI;
 
-               if (!map_sip_addr(skb, ctinfo, ct, dptr, datalen, pos, &map))
+               if (!map_sip_addr(skb, dptr, datalen, pos, &map))
                        return NF_DROP;
        }
 
-       if (!map_sip_addr(skb, ctinfo, ct, dptr, datalen, POS_FROM, &map) ||
-           !map_sip_addr(skb, ctinfo, ct, dptr, datalen, POS_TO, &map) ||
-           !map_sip_addr(skb, ctinfo, ct, dptr, datalen, POS_VIA, &map) ||
-           !map_sip_addr(skb, ctinfo, ct, dptr, datalen, POS_CONTACT, &map))
+       if (!map_sip_addr(skb, dptr, datalen, POS_FROM, &map) ||
+           !map_sip_addr(skb, dptr, datalen, POS_TO, &map) ||
+           !map_sip_addr(skb, dptr, datalen, POS_VIA, &map) ||
+           !map_sip_addr(skb, dptr, datalen, POS_CONTACT, &map))
                return NF_DROP;
        return NF_ACCEPT;
 }
 
 static unsigned int mangle_sip_packet(struct sk_buff *skb,
-                                     enum ip_conntrack_info ctinfo,
-                                     struct nf_conn *ct,
                                      const char **dptr, unsigned int *datalen,
                                      char *buffer, int bufflen,
                                      enum sip_header_pos pos)
 {
+       enum ip_conntrack_info ctinfo;
+       struct nf_conn *ct = nf_ct_get(skb, &ctinfo);
        unsigned int matchlen, matchoff;
 
        if (ct_sip_get_info(ct, *dptr, *datalen, &matchoff, &matchlen,
@@ -164,10 +165,10 @@ static unsigned int mangle_sip_packet(struct sk_buff *skb,
 }
 
 static int mangle_content_len(struct sk_buff *skb,
-                             enum ip_conntrack_info ctinfo,
-                             struct nf_conn *ct,
                              const char **dptr, unsigned int *datalen)
 {
+       enum ip_conntrack_info ctinfo;
+       struct nf_conn *ct = nf_ct_get(skb, &ctinfo);
        unsigned int matchoff, matchlen;
        char buffer[sizeof("65536")];
        int bufflen;
@@ -204,21 +205,21 @@ static unsigned int mangle_sdp(struct sk_buff *skb,
 
        /* Mangle owner and contact info. */
        bufflen = sprintf(buffer, "%u.%u.%u.%u", NIPQUAD(newip));
-       if (!mangle_sip_packet(skb, ctinfo, ct, dptr, datalen,
-                              buffer, bufflen, POS_OWNER_IP4))
+       if (!mangle_sip_packet(skb, dptr, datalen, buffer, bufflen,
+                              POS_OWNER_IP4))
                return 0;
 
-       if (!mangle_sip_packet(skb, ctinfo, ct, dptr, datalen,
-                              buffer, bufflen, POS_CONNECTION_IP4))
+       if (!mangle_sip_packet(skb, dptr, datalen, buffer, bufflen,
+                              POS_CONNECTION_IP4))
                return 0;
 
        /* Mangle media port. */
        bufflen = sprintf(buffer, "%u", port);
-       if (!mangle_sip_packet(skb, ctinfo, ct, dptr, datalen,
-                              buffer, bufflen, POS_MEDIA))
+       if (!mangle_sip_packet(skb, dptr, datalen, buffer, bufflen,
+                              POS_MEDIA))
                return 0;
 
-       return mangle_content_len(skb, ctinfo, ct, dptr, datalen);
+       return mangle_content_len(skb, dptr, datalen);
 }
 
 static void ip_nat_sdp_expect(struct nf_conn *ct,
@@ -245,11 +246,11 @@ static void ip_nat_sdp_expect(struct nf_conn *ct,
 /* So, this packet has hit the connection tracking matching code.
    Mangle it, and change the expectation to match the new version. */
 static unsigned int ip_nat_sdp(struct sk_buff *skb,
-                              enum ip_conntrack_info ctinfo,
-                              struct nf_conntrack_expect *exp,
-                              const char **dptr, unsigned int *datalen)
+                              const char **dptr, unsigned int *datalen,
+                              struct nf_conntrack_expect *exp)
 {
-       struct nf_conn *ct = exp->master;
+       enum ip_conntrack_info ctinfo;
+       struct nf_conn *ct = nf_ct_get(skb, &ctinfo);
        enum ip_conntrack_dir dir = CTINFO2DIR(ctinfo);
        __be32 newip;
        u_int16_t port;
index fa0d5599ff248046aa00149d7ff57a51896c6712..38e1e7a053349ed3d9de430bf42c1762441998cd 100644 (file)
@@ -37,17 +37,14 @@ module_param(sip_timeout, uint, 0600);
 MODULE_PARM_DESC(sip_timeout, "timeout for the master SIP session");
 
 unsigned int (*nf_nat_sip_hook)(struct sk_buff *skb,
-                               enum ip_conntrack_info ctinfo,
-                               struct nf_conn *ct,
                                const char **dptr,
                                unsigned int *datalen) __read_mostly;
 EXPORT_SYMBOL_GPL(nf_nat_sip_hook);
 
 unsigned int (*nf_nat_sdp_hook)(struct sk_buff *skb,
-                               enum ip_conntrack_info ctinfo,
-                               struct nf_conntrack_expect *exp,
                                const char **dptr,
-                               unsigned int *datalen) __read_mostly;
+                               unsigned int *datalen,
+                               struct nf_conntrack_expect *exp) __read_mostly;
 EXPORT_SYMBOL_GPL(nf_nat_sdp_hook);
 
 static int digits_len(const struct nf_conn *, const char *, const char *, int *);
@@ -367,13 +364,12 @@ int ct_sip_get_info(const struct nf_conn *ct,
 EXPORT_SYMBOL_GPL(ct_sip_get_info);
 
 static int set_expected_rtp(struct sk_buff *skb,
-                           struct nf_conn *ct,
-                           enum ip_conntrack_info ctinfo,
-                           union nf_inet_addr *addr,
-                           __be16 port,
-                           const char **dptr, unsigned int *datalen)
+                           const char **dptr, unsigned int *datalen,
+                           union nf_inet_addr *addr, __be16 port)
 {
        struct nf_conntrack_expect *exp;
+       enum ip_conntrack_info ctinfo;
+       struct nf_conn *ct = nf_ct_get(skb, &ctinfo);
        enum ip_conntrack_dir dir = CTINFO2DIR(ctinfo);
        int family = ct->tuplehash[!dir].tuple.src.l3num;
        int ret;
@@ -388,7 +384,7 @@ static int set_expected_rtp(struct sk_buff *skb,
 
        nf_nat_sdp = rcu_dereference(nf_nat_sdp_hook);
        if (nf_nat_sdp && ct->status & IPS_NAT_MASK)
-               ret = nf_nat_sdp(skb, ctinfo, exp, dptr, datalen);
+               ret = nf_nat_sdp(skb, dptr, datalen, exp);
        else {
                if (nf_ct_expect_related(exp) != 0)
                        ret = NF_DROP;
@@ -431,7 +427,7 @@ static int sip_help(struct sk_buff *skb,
 
        nf_nat_sip = rcu_dereference(nf_nat_sip_hook);
        if (nf_nat_sip && ct->status & IPS_NAT_MASK) {
-               if (!nf_nat_sip(skb, ctinfo, ct, &dptr, &datalen)) {
+               if (!nf_nat_sip(skb, &dptr, &datalen)) {
                        ret = NF_DROP;
                        goto out;
                }
@@ -467,8 +463,8 @@ static int sip_help(struct sk_buff *skb,
                                ret = NF_DROP;
                                goto out;
                        }
-                       ret = set_expected_rtp(skb, ct, ctinfo, &addr,
-                                              htons(port), &dptr, &datalen);
+                       ret = set_expected_rtp(skb, &dptr, &datalen,
+                                              &addr, htons(port));
                }
        }
 out: