45a46
> #include <sys/ioctl.h>		/* AhMan  March 18 2005 */
49a51
> #include <net/route.h>		/* AhMan  March 18 2005 */
64a67,72
> /* AhMan  March 18 2005 */
> #define sin_addr(s) (((struct sockaddr_in *)(s))->sin_addr)
> 
> /* AhMan  March 18 2005 */
> void start_tmp_ppp(int num);
> 
1298,1299c1306,1307
< 	fprintf(fp, "radiusserver1 %s\n", nvram_get("chilli_radius"));
< 	fprintf(fp, "radiusserver2 %s\n", nvram_get("chilli_backup"));
---
> 	fprintf(fp, "radiusserver1 %s\n", nvram_get("chilli_radius1"));
> 	fprintf(fp, "radiusserver2 %s\n", nvram_get("chilli_radius2"));
1745a1754,1943
> 
> //=========================================tallest============================================
> /* AhMan  March 18 2005   Start the Original Linksys PPPoE */
> /*
>  * This functin build the pppoe instuction & execute it.
>  */
> int
> start_pppoe(int pppoe_num)
> {
>         char idletime[20], retry_num[20],param[4];
>         char username[80], passwd[80];
>                                                                                                                              
>         char ppp_username[2][20]={"ppp_username","ppp_username_1"};
>         char ppp_passwd[2][20]={"ppp_passwd","ppp_passwd_1"};
>         char ppp_demand[2][20]={"ppp_demand","ppp_demand_1"};
>         char ppp_service[2][20]={"ppp_service","ppp_service_1"};
>         char ppp_ac[2][10]={"ppp_ac","ppp_ac_1"};
>         char wanip[2][15]={"wan_ipaddr","wan_ipaddr_1"};
>         char wanmask[2][15]={"wan_netmask","wan_netmask_1"};
>         char wangw[2][15]={"wan_gateway","wan_gateway_1"};
>         char pppoeifname[15];
>                                                                                                                              
>         pid_t pid;
>                                                                                                                              
>         sprintf(pppoeifname,"pppoe_ifname%d",pppoe_num);
>         nvram_set(pppoeifname,"");
>                                                                                                                              
>         dprintf("start session %d\n",pppoe_num);
>         sprintf(idletime,"%d",atoi(nvram_safe_get("ppp_idletime"))*60);
>         snprintf(retry_num, sizeof(retry_num), "%d", (atoi(nvram_safe_get("ppp_redialperiod"))/5)-1);
>                                                                                                                              
>         if(nvram_match("aol_block_traffic","1") && pppoe_num == PPPOE0){
>                 if(!strcmp(nvram_safe_get("aol_username"),"")){
>                         snprintf(username, sizeof(username), "%s", nvram_safe_get("ppp_username"));
>                         snprintf(passwd, sizeof(passwd), "%s", nvram_safe_get("ppp_passwd"));
>                 }
>                 else{
>                         snprintf(username, sizeof(username), "%s", nvram_safe_get("aol_username"));
>                         snprintf(passwd, sizeof(passwd), "%s", nvram_safe_get("aol_passwd"));
>                 }
>                                                                                                                              
>         }
>         else{
>                 snprintf(username, sizeof(username), "%s", nvram_safe_get(ppp_username[pppoe_num]));
>                 snprintf(passwd, sizeof(passwd), "%s", nvram_safe_get(ppp_passwd[pppoe_num]));
>         }
>         sprintf(param,"%d",pppoe_num);
>                                                                                                                              
>         char *pppoe_argv[] = { "pppoecd",
>                 nvram_safe_get("wan_ifname"),
>                 "-u", username,
>                 "-p", passwd,
>                 "-r", nvram_safe_get("wan_mtu"),//del by honor, add by tallest.
>                 "-t", nvram_safe_get("wan_mtu"),
>                 "-i", nvram_match(ppp_demand[pppoe_num], "1") ? idletime : "0",
>                 "-I", "30",     // Send an LCP echo-request frame to the server every 30 seconds
>                 "-T", "3",      // pppd will presume the server to be dead if 5 LCP echo-requests are sent without receiving a valid LCP echo-reply
>                 "-P", param,    // PPPOE session number.
>                 "-N", retry_num, // To avoid kill pppd when pppd has been connecting.
> #if LOG_PPPOE == 2
>                 "-d",
> #endif
> 		/* Removed by AhMan */
> /*
>                 "-C", "disconnected_pppoe", //by tallest 0407
> */
>                 NULL,           /* set default route */
>                 NULL, NULL,     /* pppoe_service */
>                 NULL, NULL,     /* pppoe_ac */
>                 NULL,           /* pppoe_keepalive */
>                 NULL
>         }, **arg;
>         /* Add optional arguments */
>         for (arg = pppoe_argv; *arg; arg++);
>                                                                                                                              
> 	/* Removed by AhMan */
> /*
>         if (pppoe_num == PPPOE0) { // PPPOE0 must set default route.
>                 *arg++ = "-R";
>         }
> */
>         if (nvram_invmatch(ppp_service[pppoe_num], "")) {
>                 *arg++ = "-s";
>                 *arg++ = nvram_safe_get(ppp_service[pppoe_num]);
>         }
>         if (nvram_invmatch(ppp_ac[pppoe_num], "")) {
>                 *arg++ = "-a";
>                 *arg++ = nvram_safe_get(ppp_ac[pppoe_num]);
>         }
>         if (nvram_match("ppp_static", "1")) {
>                         *arg++ = "-L";
>                         *arg++ = nvram_safe_get("ppp_static_ip");
>         }
>         //if (nvram_match("pppoe_demand", "1") || nvram_match("pppoe_keepalive", "1"))
>                 *arg++ = "-k";
>                                                                                                                              
>         mkdir("/tmp/ppp", 0777);
>         symlink("/sbin/rc", "/tmp/ppp/ip-up");
>         symlink("/sbin/rc", "/tmp/ppp/ip-down");
>         symlink("/sbin/rc", "/tmp/ppp/set-pppoepid"); // tallest 1219
>         unlink("/tmp/ppp/log");
>                                                                                                                              
>         _eval(pppoe_argv, NULL, 0, &pid);
>                                                                                                                              
>         if (nvram_match(ppp_demand[pppoe_num], "1")) {
>                 start_tmp_ppp(pppoe_num);
>                 cprintf("------------------------------------------------------------------------------\n");
>                 char tmpifname[15];
>                 sprintf(tmpifname,"pppoe_ifname%d",pppoe_num);
>                 cprintf("pppoe%d ifname=%s ip=%s , netmask=%s, gw=%s\n",
>                         pppoe_num,
>                         nvram_safe_get(tmpifname),
>                         nvram_safe_get(wanip[pppoe_num]),
>                         nvram_safe_get(wanmask[pppoe_num]),
>                         nvram_safe_get(wangw[pppoe_num]));
>                 cprintf("------------------------------------------------------------------------------\n");
>         }
>         dprintf("done. session %d\n",pppoe_num);
>         return 0;
> }
>                                                                                                                              
> /* AhMan  March 18 2005 */
> /*
>  * Get the IP, Subnetmask, Geteway from WAN interface
>  * and set to NV ram.
>  */
> void
> start_tmp_ppp(int num){
>                                                                                                                              
>         int timeout = 5;
>         char pppoeifname[15];
>         char wanip[2][15]={"wan_ipaddr","wan_ipaddr_1"};
>         char wanmask[2][15]={"wan_netmask","wan_netmask_1"};
>         char wangw[2][15]={"wan_gateway","wan_gateway_1"};
>         //char wanif[2][15]={"wan_ifname","wan_ifname_1"};
>         //char *wan_ifname = nvram_safe_get("wan_ifname");
>         struct ifreq ifr;
>         int s;
>                                                                                                                              
>         dprintf("start session %d\n",num);
>                                                                                                                              
>         sprintf(pppoeifname,"pppoe_ifname%d",num);
>                                                                                                                              
>         if ((s = socket(AF_INET, SOCK_RAW, IPPROTO_RAW)) < 0)
>                 return;
>                                                                                                                              
>         /* Wait for ppp0 to be created */
>         while (ifconfig(nvram_safe_get(pppoeifname), IFUP, NULL, NULL) && timeout--)
>                 sleep(1);
>                                                                                                                              
>         strncpy(ifr.ifr_name, nvram_safe_get(pppoeifname), IFNAMSIZ);
>                                                                                                                              
>         /* Set temporary IP address */
>         timeout = 3;
>         while (ioctl(s, SIOCGIFADDR, &ifr) && timeout--){
>                 perror(nvram_safe_get(pppoeifname));
>                 printf("Wait %s inteface to init (1) ...\n",nvram_safe_get(pppoeifname));
>                 sleep(1);
>         };
>         nvram_set(wanip[num], inet_ntoa(sin_addr(&(ifr.ifr_addr))));
>         nvram_set(wanmask[num], "255.255.255.255");
>                                                                                                                              
>         /* Set temporary P-t-P address */
>         timeout = 3;
>         while (ioctl(s, SIOCGIFDSTADDR, &ifr) && timeout--){
>                 perror(nvram_safe_get(pppoeifname));
>                 printf("Wait %s inteface to init (2) ...\n",nvram_safe_get(pppoeifname));
>                 sleep(1);
>         }
>         nvram_set(wangw[num], inet_ntoa(sin_addr(&(ifr.ifr_dstaddr))));
>                                                                                                                              
>         start_wan_done(nvram_safe_get(pppoeifname));
>                                                                                                                              
>         // if user press Connect" button from web, we must force to dial
>         if(nvram_match("action_service","start_pppoe") || nvram_match("action_service","start_pppoe_1")){
>                 sleep(3);
>                 // force_to_dial(nvram_safe_get("action_service"));
>                 force_to_dial();
>                 nvram_set("action_service","");
>         }
>                                                                                                                              
>         close(s);
>         dprintf("done session %d\n",num);
>         return;
> }
>                                                                                                                              
> //=====================================================================================================
> 
> 
> 
