fix IMQ on linux 2.6.27 and 2.6.28
[openwrt.git] / target / linux / generic-2.4 / patches / 603-netfilter_nat_pptp.patch
index 6a7a16f..b635f41 100644 (file)
@@ -1,7 +1,8 @@
-diff -urN linux-2.4.29-old/include/linux/netfilter_ipv4/ip_conntrack.h linux-2.4.29-dev/include/linux/netfilter_ipv4/ip_conntrack.h
---- linux-2.4.29-old/include/linux/netfilter_ipv4/ip_conntrack.h       2005-04-02 19:04:11.000000000 +0200
-+++ linux-2.4.29-dev/include/linux/netfilter_ipv4/ip_conntrack.h       2005-04-02 19:41:05.000000000 +0200
-@@ -50,16 +50,19 @@
+Index: linux-2.4.35.4/include/linux/netfilter_ipv4/ip_conntrack.h
+===================================================================
+--- linux-2.4.35.4.orig/include/linux/netfilter_ipv4/ip_conntrack.h
++++ linux-2.4.35.4/include/linux/netfilter_ipv4/ip_conntrack.h
+@@ -50,16 +50,19 @@ enum ip_conntrack_status {
  
  #include <linux/netfilter_ipv4/ip_conntrack_tcp.h>
  #include <linux/netfilter_ipv4/ip_conntrack_icmp.h>
@@ -21,7 +22,7 @@ diff -urN linux-2.4.29-old/include/linux/netfilter_ipv4/ip_conntrack.h linux-2.4
  };
  
  /* Add protocol helper include file here */
-@@ -67,6 +70,7 @@
+@@ -67,6 +70,7 @@ union ip_conntrack_expect_proto {
  
  #include <linux/netfilter_ipv4/ip_conntrack_ftp.h>
  #include <linux/netfilter_ipv4/ip_conntrack_irc.h>
@@ -29,7 +30,7 @@ diff -urN linux-2.4.29-old/include/linux/netfilter_ipv4/ip_conntrack.h linux-2.4
  
  /* per expectation: application helper private data */
  union ip_conntrack_expect_help {
-@@ -74,6 +78,7 @@
+@@ -74,6 +78,7 @@ union ip_conntrack_expect_help {
        struct ip_ct_amanda_expect exp_amanda_info;
        struct ip_ct_ftp_expect exp_ftp_info;
        struct ip_ct_irc_expect exp_irc_info;
@@ -37,7 +38,7 @@ diff -urN linux-2.4.29-old/include/linux/netfilter_ipv4/ip_conntrack.h linux-2.4
  
  #ifdef CONFIG_IP_NF_NAT_NEEDED
        union {
-@@ -87,14 +92,17 @@
+@@ -87,14 +92,17 @@ union ip_conntrack_help {
        /* insert conntrack helper private data (master) here */
        struct ip_ct_ftp_master ct_ftp_info;
        struct ip_ct_irc_master ct_irc_info;
@@ -55,9 +56,10 @@ diff -urN linux-2.4.29-old/include/linux/netfilter_ipv4/ip_conntrack.h linux-2.4
  };
  #endif
  
-diff -urN linux-2.4.29-old/include/linux/netfilter_ipv4/ip_conntrack_pptp.h linux-2.4.29-dev/include/linux/netfilter_ipv4/ip_conntrack_pptp.h
---- linux-2.4.29-old/include/linux/netfilter_ipv4/ip_conntrack_pptp.h  1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.29-dev/include/linux/netfilter_ipv4/ip_conntrack_pptp.h  2005-04-02 19:09:07.000000000 +0200
+Index: linux-2.4.35.4/include/linux/netfilter_ipv4/ip_conntrack_pptp.h
+===================================================================
+--- /dev/null
++++ linux-2.4.35.4/include/linux/netfilter_ipv4/ip_conntrack_pptp.h
 @@ -0,0 +1,313 @@
 +/* PPTP constants and structs */
 +#ifndef _CONNTRACK_PPTP_H
@@ -372,9 +374,10 @@ diff -urN linux-2.4.29-old/include/linux/netfilter_ipv4/ip_conntrack_pptp.h linu
 +
 +#endif /* __KERNEL__ */
 +#endif /* _CONNTRACK_PPTP_H */
-diff -urN linux-2.4.29-old/include/linux/netfilter_ipv4/ip_conntrack_proto_gre.h linux-2.4.29-dev/include/linux/netfilter_ipv4/ip_conntrack_proto_gre.h
---- linux-2.4.29-old/include/linux/netfilter_ipv4/ip_conntrack_proto_gre.h     1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.29-dev/include/linux/netfilter_ipv4/ip_conntrack_proto_gre.h     2005-04-02 19:10:45.000000000 +0200
+Index: linux-2.4.35.4/include/linux/netfilter_ipv4/ip_conntrack_proto_gre.h
+===================================================================
+--- /dev/null
++++ linux-2.4.35.4/include/linux/netfilter_ipv4/ip_conntrack_proto_gre.h
 @@ -0,0 +1,123 @@
 +#ifndef _CONNTRACK_PROTO_GRE_H
 +#define _CONNTRACK_PROTO_GRE_H
@@ -499,9 +502,10 @@ diff -urN linux-2.4.29-old/include/linux/netfilter_ipv4/ip_conntrack_proto_gre.h
 +#endif /* __KERNEL__ */
 +
 +#endif /* _CONNTRACK_PROTO_GRE_H */
-diff -urN linux-2.4.29-old/include/linux/netfilter_ipv4/ip_conntrack_tuple.h linux-2.4.29-dev/include/linux/netfilter_ipv4/ip_conntrack_tuple.h
---- linux-2.4.29-old/include/linux/netfilter_ipv4/ip_conntrack_tuple.h 2003-11-28 19:26:21.000000000 +0100
-+++ linux-2.4.29-dev/include/linux/netfilter_ipv4/ip_conntrack_tuple.h 2005-04-02 19:07:18.000000000 +0200
+Index: linux-2.4.35.4/include/linux/netfilter_ipv4/ip_conntrack_tuple.h
+===================================================================
+--- linux-2.4.35.4.orig/include/linux/netfilter_ipv4/ip_conntrack_tuple.h
++++ linux-2.4.35.4/include/linux/netfilter_ipv4/ip_conntrack_tuple.h
 @@ -14,7 +14,7 @@
  union ip_conntrack_manip_proto
  {
@@ -511,7 +515,7 @@ diff -urN linux-2.4.29-old/include/linux/netfilter_ipv4/ip_conntrack_tuple.h lin
  
        struct {
                u_int16_t port;
-@@ -25,6 +25,9 @@
+@@ -25,6 +25,9 @@ union ip_conntrack_manip_proto
        struct {
                u_int16_t id;
        } icmp;
@@ -521,7 +525,7 @@ diff -urN linux-2.4.29-old/include/linux/netfilter_ipv4/ip_conntrack_tuple.h lin
  };
  
  /* The manipulable part of the tuple. */
-@@ -44,7 +47,7 @@
+@@ -44,7 +47,7 @@ struct ip_conntrack_tuple
                u_int32_t ip;
                union {
                        /* Add other protocols here. */
@@ -530,7 +534,7 @@ diff -urN linux-2.4.29-old/include/linux/netfilter_ipv4/ip_conntrack_tuple.h lin
  
                        struct {
                                u_int16_t port;
-@@ -55,6 +58,9 @@
+@@ -55,6 +58,9 @@ struct ip_conntrack_tuple
                        struct {
                                u_int8_t type, code;
                        } icmp;
@@ -540,7 +544,7 @@ diff -urN linux-2.4.29-old/include/linux/netfilter_ipv4/ip_conntrack_tuple.h lin
                } u;
  
                /* The protocol. */
-@@ -80,10 +86,16 @@
+@@ -80,10 +86,16 @@ enum ip_conntrack_dir
  #ifdef __KERNEL__
  
  #define DUMP_TUPLE(tp)                                                \
@@ -560,9 +564,10 @@ diff -urN linux-2.4.29-old/include/linux/netfilter_ipv4/ip_conntrack_tuple.h lin
  
  #define CTINFO2DIR(ctinfo) ((ctinfo) >= IP_CT_IS_REPLY ? IP_CT_DIR_REPLY : IP_CT_DIR_ORIGINAL)
  
-diff -urN linux-2.4.29-old/include/linux/netfilter_ipv4/ip_nat_pptp.h linux-2.4.29-dev/include/linux/netfilter_ipv4/ip_nat_pptp.h
---- linux-2.4.29-old/include/linux/netfilter_ipv4/ip_nat_pptp.h        1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.29-dev/include/linux/netfilter_ipv4/ip_nat_pptp.h        2005-04-02 19:07:18.000000000 +0200
+Index: linux-2.4.35.4/include/linux/netfilter_ipv4/ip_nat_pptp.h
+===================================================================
+--- /dev/null
++++ linux-2.4.35.4/include/linux/netfilter_ipv4/ip_nat_pptp.h
 @@ -0,0 +1,11 @@
 +/* PPTP constants and structs */
 +#ifndef _NAT_PPTP_H
@@ -575,10 +580,11 @@ diff -urN linux-2.4.29-old/include/linux/netfilter_ipv4/ip_nat_pptp.h linux-2.4.
 +};
 +
 +#endif /* _NAT_PPTP_H */
-diff -urN linux-2.4.29-old/net/ipv4/netfilter/Config.in linux-2.4.29-dev/net/ipv4/netfilter/Config.in
---- linux-2.4.29-old/net/ipv4/netfilter/Config.in      2005-04-02 19:04:11.000000000 +0200
-+++ linux-2.4.29-dev/net/ipv4/netfilter/Config.in      2005-04-02 19:07:18.000000000 +0200
-@@ -10,6 +10,8 @@
+Index: linux-2.4.35.4/net/ipv4/netfilter/Config.in
+===================================================================
+--- linux-2.4.35.4.orig/net/ipv4/netfilter/Config.in
++++ linux-2.4.35.4/net/ipv4/netfilter/Config.in
+@@ -10,6 +10,8 @@ if [ "$CONFIG_IP_NF_CONNTRACK" != "n" ];
    dep_tristate '  Amanda protocol support' CONFIG_IP_NF_AMANDA $CONFIG_IP_NF_CONNTRACK
    dep_tristate '  TFTP protocol support' CONFIG_IP_NF_TFTP $CONFIG_IP_NF_CONNTRACK
    dep_tristate '  IRC protocol support' CONFIG_IP_NF_IRC $CONFIG_IP_NF_CONNTRACK
@@ -587,7 +593,7 @@ diff -urN linux-2.4.29-old/net/ipv4/netfilter/Config.in linux-2.4.29-dev/net/ipv
  fi
  
  if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
-@@ -67,6 +69,20 @@
+@@ -63,6 +65,20 @@ if [ "$CONFIG_IP_NF_IPTABLES" != "n" ]; 
        define_bool CONFIG_IP_NF_NAT_NEEDED y
        dep_tristate '    MASQUERADE target support' CONFIG_IP_NF_TARGET_MASQUERADE $CONFIG_IP_NF_NAT
        dep_tristate '    REDIRECT target support' CONFIG_IP_NF_TARGET_REDIRECT $CONFIG_IP_NF_NAT
@@ -608,10 +614,11 @@ diff -urN linux-2.4.29-old/net/ipv4/netfilter/Config.in linux-2.4.29-dev/net/ipv
        if [ "$CONFIG_IP_NF_AMANDA" = "m" ]; then
          define_tristate CONFIG_IP_NF_NAT_AMANDA m
        else
-diff -urN linux-2.4.29-old/net/ipv4/netfilter/ip_conntrack_core.c linux-2.4.29-dev/net/ipv4/netfilter/ip_conntrack_core.c
---- linux-2.4.29-old/net/ipv4/netfilter/ip_conntrack_core.c    2005-04-02 19:04:11.000000000 +0200
-+++ linux-2.4.29-dev/net/ipv4/netfilter/ip_conntrack_core.c    2005-04-02 19:07:18.000000000 +0200
-@@ -142,6 +142,8 @@
+Index: linux-2.4.35.4/net/ipv4/netfilter/ip_conntrack_core.c
+===================================================================
+--- linux-2.4.35.4.orig/net/ipv4/netfilter/ip_conntrack_core.c
++++ linux-2.4.35.4/net/ipv4/netfilter/ip_conntrack_core.c
+@@ -143,6 +143,8 @@ ip_ct_get_tuple(const struct iphdr *iph,
        tuple->dst.ip = iph->daddr;
        tuple->dst.protonum = iph->protocol;
  
@@ -620,7 +627,7 @@ diff -urN linux-2.4.29-old/net/ipv4/netfilter/ip_conntrack_core.c linux-2.4.29-d
        ret = protocol->pkt_to_tuple((u_int32_t *)iph + iph->ihl,
                                     len - 4*iph->ihl,
                                     tuple);
-@@ -157,6 +159,8 @@
+@@ -158,6 +160,8 @@ invert_tuple(struct ip_conntrack_tuple *
        inverse->dst.ip = orig->src.ip;
        inverse->dst.protonum = orig->dst.protonum;
  
@@ -629,7 +636,7 @@ diff -urN linux-2.4.29-old/net/ipv4/netfilter/ip_conntrack_core.c linux-2.4.29-d
        return protocol->invert_tuple(inverse, orig);
  }
  
-@@ -954,8 +958,8 @@
+@@ -970,8 +974,8 @@ int ip_conntrack_expect_related(struct i
         * so there is no need to use the tuple lock too */
  
        DEBUGP("ip_conntrack_expect_related %p\n", related_to);
@@ -640,7 +647,7 @@ diff -urN linux-2.4.29-old/net/ipv4/netfilter/ip_conntrack_core.c linux-2.4.29-d
  
        old = LIST_FIND(&ip_conntrack_expect_list, resent_expect,
                        struct ip_conntrack_expect *, &expect->tuple, 
-@@ -1072,15 +1076,14 @@
+@@ -1089,15 +1093,14 @@ int ip_conntrack_change_expect(struct ip
  
        MUST_BE_READ_LOCKED(&ip_conntrack_lock);
        WRITE_LOCK(&ip_conntrack_expect_tuple_lock);
@@ -660,9 +667,10 @@ diff -urN linux-2.4.29-old/net/ipv4/netfilter/ip_conntrack_core.c linux-2.4.29-d
                    && LIST_FIND(&ip_conntrack_expect_list, expect_clash,
                                 struct ip_conntrack_expect *, newtuple, &expect->mask)) {
                        /* Force NAT to find an unused tuple */
-diff -urN linux-2.4.29-old/net/ipv4/netfilter/ip_conntrack_pptp_priv.h linux-2.4.29-dev/net/ipv4/netfilter/ip_conntrack_pptp_priv.h
---- linux-2.4.29-old/net/ipv4/netfilter/ip_conntrack_pptp_priv.h       1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.29-dev/net/ipv4/netfilter/ip_conntrack_pptp_priv.h       2005-04-02 19:14:10.000000000 +0200
+Index: linux-2.4.35.4/net/ipv4/netfilter/ip_conntrack_pptp_priv.h
+===================================================================
+--- /dev/null
++++ linux-2.4.35.4/net/ipv4/netfilter/ip_conntrack_pptp_priv.h
 @@ -0,0 +1,24 @@
 +#ifndef _IP_CT_PPTP_PRIV_H
 +#define _IP_CT_PPTP_PRIV_H
@@ -688,9 +696,10 @@ diff -urN linux-2.4.29-old/net/ipv4/netfilter/ip_conntrack_pptp_priv.h linux-2.4
 +};
 +
 +#endif
-diff -urN linux-2.4.29-old/net/ipv4/netfilter/ip_conntrack_proto_gre.c linux-2.4.29-dev/net/ipv4/netfilter/ip_conntrack_proto_gre.c
---- linux-2.4.29-old/net/ipv4/netfilter/ip_conntrack_proto_gre.c       1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.29-dev/net/ipv4/netfilter/ip_conntrack_proto_gre.c       2005-04-02 19:14:31.000000000 +0200
+Index: linux-2.4.35.4/net/ipv4/netfilter/ip_conntrack_proto_gre.c
+===================================================================
+--- /dev/null
++++ linux-2.4.35.4/net/ipv4/netfilter/ip_conntrack_proto_gre.c
 @@ -0,0 +1,333 @@
 +/*
 + * ip_conntrack_proto_gre.c - Version 1.2 
@@ -1025,10 +1034,11 @@ diff -urN linux-2.4.29-old/net/ipv4/netfilter/ip_conntrack_proto_gre.c linux-2.4
 +
 +module_init(init);
 +module_exit(fini);
-diff -urN linux-2.4.29-old/net/ipv4/netfilter/ip_nat_core.c linux-2.4.29-dev/net/ipv4/netfilter/ip_nat_core.c
---- linux-2.4.29-old/net/ipv4/netfilter/ip_nat_core.c  2005-01-19 15:10:13.000000000 +0100
-+++ linux-2.4.29-dev/net/ipv4/netfilter/ip_nat_core.c  2005-04-02 19:07:18.000000000 +0200
-@@ -424,7 +424,7 @@
+Index: linux-2.4.35.4/net/ipv4/netfilter/ip_nat_core.c
+===================================================================
+--- linux-2.4.35.4.orig/net/ipv4/netfilter/ip_nat_core.c
++++ linux-2.4.35.4/net/ipv4/netfilter/ip_nat_core.c
+@@ -424,7 +424,7 @@ get_unique_tuple(struct ip_conntrack_tup
        *tuple = *orig_tuple;
        while ((rptr = find_best_ips_proto_fast(tuple, mr, conntrack, hooknum))
               != NULL) {
@@ -1037,7 +1047,7 @@ diff -urN linux-2.4.29-old/net/ipv4/netfilter/ip_nat_core.c linux-2.4.29-dev/net
                /* 3) The per-protocol part of the manip is made to
                   map into the range to make a unique tuple. */
  
-@@ -564,9 +564,9 @@
+@@ -564,9 +564,9 @@ ip_nat_setup_info(struct ip_conntrack *c
                       HOOK2MANIP(hooknum)==IP_NAT_MANIP_SRC ? "SRC" : "DST",
                       conntrack);
                DEBUGP("Original: ");
@@ -1049,10 +1059,11 @@ diff -urN linux-2.4.29-old/net/ipv4/netfilter/ip_nat_core.c linux-2.4.29-dev/net
  #endif
  
                /* We now have two tuples (SRCIP/SRCPT/DSTIP/DSTPT):
-diff -urN linux-2.4.29-old/net/ipv4/netfilter/ip_nat_pptp.c linux-2.4.29-dev/net/ipv4/netfilter/ip_nat_pptp.c
---- linux-2.4.29-old/net/ipv4/netfilter/ip_nat_pptp.c  1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.29-dev/net/ipv4/netfilter/ip_nat_pptp.c  2005-04-02 19:14:52.000000000 +0200
-@@ -0,0 +1,475 @@
+Index: linux-2.4.35.4/net/ipv4/netfilter/ip_nat_pptp.c
+===================================================================
+--- /dev/null
++++ linux-2.4.35.4/net/ipv4/netfilter/ip_nat_pptp.c
+@@ -0,0 +1,482 @@
 +/*
 + * ip_nat_pptp.c      - Version 1.5
 + *
@@ -1341,8 +1352,12 @@ diff -urN linux-2.4.29-old/net/ipv4/netfilter/ip_nat_pptp.c linux-2.4.29-dev/net
 +              } else {
 +                      DEBUGP("can't change expect\n");
 +              }
-+              ip_ct_gre_keymap_change(oldexp->proto.gre.keymap_orig, &t);
-+              ip_ct_gre_keymap_change(oldexp->proto.gre.keymap_reply, &inv_t);
++              if (oldexp->proto.gre.keymap_orig)
++                      ip_ct_gre_keymap_change(oldexp->proto.gre.keymap_orig, 
++                                              &t);
++              if (oldexp->proto.gre.keymap_reply)
++                      ip_ct_gre_keymap_change(oldexp->proto.gre.keymap_reply, 
++                                              &inv_t);
 +              break;
 +      case PPTP_IN_CALL_CONNECT:
 +              pcid = &pptpReq.iccon->peersCallID;
@@ -1375,6 +1390,9 @@ diff -urN linux-2.4.29-old/net/ipv4/netfilter/ip_nat_pptp.c linux-2.4.29-dev/net
 +      case PPTP_CALL_DISCONNECT_NOTIFY:
 +              pcid = &pptpReq.disc->callID;
 +              break;
++      case PPTP_SET_LINK_INFO:
++              pcid = &pptpReq.setlink->peersCallID;
++              break;
 +
 +      default:
 +              DEBUGP("unknown inbound packet %s\n",
@@ -1528,9 +1546,10 @@ diff -urN linux-2.4.29-old/net/ipv4/netfilter/ip_nat_pptp.c linux-2.4.29-dev/net
 +
 +module_init(init);
 +module_exit(fini);
-diff -urN linux-2.4.29-old/net/ipv4/netfilter/ip_nat_proto_gre.c linux-2.4.29-dev/net/ipv4/netfilter/ip_nat_proto_gre.c
---- linux-2.4.29-old/net/ipv4/netfilter/ip_nat_proto_gre.c     1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.29-dev/net/ipv4/netfilter/ip_nat_proto_gre.c     2005-04-02 19:15:10.000000000 +0200
+Index: linux-2.4.35.4/net/ipv4/netfilter/ip_nat_proto_gre.c
+===================================================================
+--- /dev/null
++++ linux-2.4.35.4/net/ipv4/netfilter/ip_nat_proto_gre.c
 @@ -0,0 +1,202 @@
 +/*
 + * ip_nat_proto_gre.c - Version 1.2
@@ -1734,10 +1753,11 @@ diff -urN linux-2.4.29-old/net/ipv4/netfilter/ip_nat_proto_gre.c linux-2.4.29-de
 +
 +module_init(init);
 +module_exit(fini);
-diff -urN linux-2.4.29-old/net/ipv4/netfilter/Makefile linux-2.4.29-dev/net/ipv4/netfilter/Makefile
---- linux-2.4.29-old/net/ipv4/netfilter/Makefile       2005-04-02 19:04:11.000000000 +0200
-+++ linux-2.4.29-dev/net/ipv4/netfilter/Makefile       2005-04-02 19:07:18.000000000 +0200
-@@ -36,23 +36,32 @@
+Index: linux-2.4.35.4/net/ipv4/netfilter/Makefile
+===================================================================
+--- linux-2.4.35.4.orig/net/ipv4/netfilter/Makefile
++++ linux-2.4.35.4/net/ipv4/netfilter/Makefile
+@@ -36,23 +36,32 @@ obj-$(CONFIG_IP_NF_AMANDA) += ip_conntra
  ifdef CONFIG_IP_NF_AMANDA
        export-objs += ip_conntrack_amanda.o
  endif
@@ -1772,8 +1792,10 @@ diff -urN linux-2.4.29-old/net/ipv4/netfilter/Makefile linux-2.4.29-dev/net/ipv4
  
  # generic IP tables 
  obj-$(CONFIG_IP_NF_IPTABLES) += ip_tables.o
---- linux-2.4.32/net/ipv4/netfilter/ip_conntrack_pptp.c        1970-01-01 01:00:00.000000000 +0100
-+++ /home/florian//openwrt/trunk/openwrt/build_mipsel/linux/net/ipv4/netfilter/ip_conntrack_pptp.c     2006-02-04 18:23:27.000000000 +0100
+Index: linux-2.4.35.4/net/ipv4/netfilter/ip_conntrack_pptp.c
+===================================================================
+--- /dev/null
++++ linux-2.4.35.4/net/ipv4/netfilter/ip_conntrack_pptp.c
 @@ -0,0 +1,635 @@
 +/*
 + * ip_conntrack_pptp.c        - Version 1.9
This page took 0.031903 seconds and 4 git commands to generate.