[NETFILTER]: Fix return value confusion in PPTP NAT helper
authorPatrick McHardy <kaber@trash.net>
Tue, 10 Jan 2006 00:44:18 +0000 (16:44 -0800)
committerDavid S. Miller <davem@sunset.davemloft.net>
Tue, 10 Jan 2006 20:54:33 +0000 (12:54 -0800)
ip_nat_mangle_tcp_packet doesn't return NF_* values but 0/1 for
failure/success.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/netfilter/ip_nat_helper_pptp.c

index 50960cb..ac00489 100644 (file)
@@ -299,8 +299,6 @@ pptp_inbound_pkt(struct sk_buff **pskb,
        u_int16_t msg, new_cid = 0, new_pcid;
        unsigned int pcid_off, cid_off = 0;
 
        u_int16_t msg, new_cid = 0, new_pcid;
        unsigned int pcid_off, cid_off = 0;
 
-       int ret = NF_ACCEPT, rv;
-
        new_pcid = htons(nat_pptp_info->pns_call_id);
 
        switch (msg = ntohs(ctlh->messageType)) {
        new_pcid = htons(nat_pptp_info->pns_call_id);
 
        switch (msg = ntohs(ctlh->messageType)) {
@@ -345,32 +343,24 @@ pptp_inbound_pkt(struct sk_buff **pskb,
        /* mangle packet */
        DEBUGP("altering peer call id from 0x%04x to 0x%04x\n",
                ntohs(*(u_int16_t *)pptpReq + pcid_off), ntohs(new_pcid));
        /* mangle packet */
        DEBUGP("altering peer call id from 0x%04x to 0x%04x\n",
                ntohs(*(u_int16_t *)pptpReq + pcid_off), ntohs(new_pcid));
-       
-       rv = ip_nat_mangle_tcp_packet(pskb, ct, ctinfo,
-                                     pcid_off + sizeof(struct pptp_pkt_hdr) +
-                                     sizeof(struct PptpControlHeader),
-                                     sizeof(new_pcid), (char *)&new_pcid, 
-                                     sizeof(new_pcid));
-       if (rv != NF_ACCEPT) 
-               return rv;
+
+       if (ip_nat_mangle_tcp_packet(pskb, ct, ctinfo,
+                                    pcid_off + sizeof(struct pptp_pkt_hdr) +
+                                    sizeof(struct PptpControlHeader),
+                                    sizeof(new_pcid), (char *)&new_pcid,
+                                    sizeof(new_pcid)) == 0)
+               return NF_DROP;
 
        if (new_cid) {
                DEBUGP("altering call id from 0x%04x to 0x%04x\n",
                        ntohs(*(u_int16_t *)pptpReq + cid_off), ntohs(new_cid));
 
        if (new_cid) {
                DEBUGP("altering call id from 0x%04x to 0x%04x\n",
                        ntohs(*(u_int16_t *)pptpReq + cid_off), ntohs(new_cid));
-               rv = ip_nat_mangle_tcp_packet(pskb, ct, ctinfo,
-                                             cid_off + sizeof(struct pptp_pkt_hdr) +
-                                             sizeof(struct PptpControlHeader),
-                                             sizeof(new_cid), (char *)&new_cid, 
-                                             sizeof(new_cid));
-               if (rv != NF_ACCEPT)
-                       return rv;
+               if (ip_nat_mangle_tcp_packet(pskb, ct, ctinfo,
+                                            cid_off + sizeof(struct pptp_pkt_hdr) +
+                                            sizeof(struct PptpControlHeader),
+                                            sizeof(new_cid), (char *)&new_cid,
+                                            sizeof(new_cid)) == 0)
+                       return NF_DROP;
        }
        }
-
-       /* check for earlier return value of 'switch' above */
-       if (ret != NF_ACCEPT)
-               return ret;
-
-       /* great, at least we don't need to resize packets */
        return NF_ACCEPT;
 }
 
        return NF_ACCEPT;
 }