Index: /src/router/services/sysinit/defaults.c =================================================================== --- /src/router/services/sysinit/defaults.c (revision 12269) +++ /src/router/services/sysinit/defaults.c (revision 12386) @@ -253,4 +253,6 @@ {"wan_proto", "pptp", 0}, /* [static|dhcp|pppoe|disabled] */ #elif defined(HAVE_GGEW) && defined(HAVE_EOC2610) + {"wan_proto", "pptp", 0}, /* [static|dhcp|pppoe|disabled] */ +#elif defined(HAVE_GGEW) {"wan_proto", "pptp", 0}, /* [static|dhcp|pppoe|disabled] */ #elif HAVE_X86 Index: /src/router/services/networking/firewall.c =================================================================== --- /src/router/services/networking/firewall.c (revision 12384) +++ /src/router/services/networking/firewall.c (revision 12386) @@ -774,6 +774,12 @@ if (strlen(wanface) > 0) save2file("-A POSTROUTING -o %s -j SNAT --to-source %s\n",wanface,nvram_safe_get("wan_ipaddr")); + if (nvram_match("wan_proto", "pptp") && nvram_match("pptp_use_dhcp", "1")) + { + save2file("-A POSTROUTING -o %s -j SNAT --to-source %s\n",nvram_safe_get("pptp_ifname"),nvram_safe_get("pptp_wan_ipaddr")); + }else if (nvram_match("wan_proto", "pptp")) { - save2file("-A POSTROUTING -o %s -j SNAT --to-source %s\n",nvram_safe_get("pptp_ifname"),nvram_safe_get("wan_ipaddr")); + struct in_addr ifaddr; + osl_ifaddr(nvram_safe_get("pptp_ifname"),&ifaddr); + save2file("-A POSTROUTING -o %s -j SNAT --to-source %s\n",nvram_safe_get("pptp_ifname"),inet_ntoa(ifaddr)); } char *method = "MASQUERADE"; Index: /src/router/services/networking/udhcpc.c =================================================================== --- /src/router/services/networking/udhcpc.c (revision 12380) +++ /src/router/services/networking/udhcpc.c (revision 12386) @@ -234,6 +234,8 @@ if (nvram_match("wan_proto", "pptp") && nvram_match("pptp_use_dhcp", "1")) - eval("ifconfig", wan_ifname, temp_wan_ipaddr, "netmask", - temp_wan_netmask, "up"); + { + eval("ifconfig", wan_ifname, temp_wan_ipaddr, "netmask",temp_wan_netmask, "up"); + nvram_set("pptp_wan_ipaddr",temp_wan_ipaddr); + } else eval("ifconfig", wan_ifname, nvram_safe_get("wan_ipaddr"),