SHARE
TWEET

tomato7.patch toastman build

a guest Feb 18th, 2011 252 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. diff --git a/release/src/Makefile b/release/src/Makefile
  2. index c5a5487..79ec71f 100644
  3. --- a/release/src/Makefile
  4. +++ b/release/src/Makefile
  5. @@ -441,6 +441,8 @@ define KernelConfig
  6.                         echo "CONFIG_NF_CONNTRACK_IPV6=m" >>$(1); \
  7.                         sed -i "/CONFIG_NETFILTER_XT_MATCH_HL/d" $(1); \
  8.                         echo "CONFIG_NETFILTER_XT_MATCH_HL=m" >>$(1); \
  9. +                       sed -i "/CONFIG_NETFILTER_XT_MATCH_CONNLIMIT/d" $(1); \
  10. +                       echo "CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m" >>$(1); \
  11.                         sed -i "/CONFIG_IPV6_ROUTER_PREF/d" $(1); \
  12.                         echo "CONFIG_IPV6_ROUTER_PREF=y" >>$(1); \
  13.                         sed -i "/CONFIG_IPV6_SIT/d" $(1); \
  14. diff --git a/release/src/router/Makefile b/release/src/router/Makefile
  15. index 726307f..59277e7 100644
  16. --- a/release/src/router/Makefile
  17. +++ b/release/src/router/Makefile
  18. @@ -320,7 +320,6 @@ endif
  19.         @mv $(TARGETDIR)/lib/modules/*/kernel/drivers/usb/usbip*.*o $(PLATFORMDIR)/extras/ || true
  20.         @mv $(TARGETDIR)/lib/modules/*/kernel/drivers/usb/usbkbd.*o $(PLATFORMDIR)/extras/ || true
  21.         @mv $(TARGETDIR)/lib/modules/*/kernel/drivers/usb/usbmouse.*o $(PLATFORMDIR)/extras/ || true
  22. -       @mv $(TARGETDIR)/lib/modules/*/kernel/drivers/usb/hid*.*o $(PLATFORMDIR)/extras/ || true
  23.         @mv $(TARGETDIR)/lib/modules/*/kernel/drivers/usb/ipw.*o $(PLATFORMDIR)/extras/ || true
  24.         @mv $(TARGETDIR)/lib/modules/*/kernel/drivers/usb/audio.*o $(PLATFORMDIR)/extras/ || true
  25.         @mv $(TARGETDIR)/lib/modules/*/kernel/drivers/usb/ov51*.*o $(PLATFORMDIR)/extras/ || true
  26. @@ -338,10 +337,6 @@ endif
  27.         @rm -rf $(TARGETDIR)/lib/modules/*/kernel/drivers/sound || true
  28.         @mv $(TARGETDIR)/lib/modules/*/kernel/sound/* $(PLATFORMDIR)/extras/ || true
  29.         @rm -rf $(TARGETDIR)/lib/modules/*/kernel/sound || true
  30. -       @mv $(TARGETDIR)/lib/modules/*/kernel/drivers/input/* $(PLATFORMDIR)/extras/ || true
  31. -       @rm -rf $(TARGETDIR)/lib/modules/*/kernel/drivers/input || true
  32. -       @mv $(TARGETDIR)/lib/modules/*/kernel/drivers/hid/* $(PLATFORMDIR)/extras/ || true
  33. -       @rm -rf $(TARGETDIR)/lib/modules/*/kernel/drivers/hid || true
  34.         @cp -f $(TARGETDIR)/lib/modules/*/kernel/drivers/net/bcm57*.*o $(PLATFORMDIR)/extras/ || true
  35.         $(if $(TCONFIG_PPTP),@cp -f,@mv) $(TARGETDIR)/lib/modules/*/kernel/drivers/net/pptp.*o $(PLATFORMDIR)/extras/ || true
  36.         $(if $(TCONFIG_L2TP),@cp -f,@mv) $(TARGETDIR)/lib/modules/*/kernel/drivers/net/pppol2tp.*o $(PLATFORMDIR)/extras/ || true
  37. @@ -388,7 +383,7 @@ endif
  38.         [ ! -f $(TARGETDIR)/lib/modules/*/kernel/lib/* ] && rm -rf $(TARGETDIR)/lib/modules/*/kernel/lib || true
  39.         $(if $(TCONFIG_L7),@cp -f,@mv) $(TARGETDIR)/lib/modules/*/kernel/net/ipv4/netfilter/ipt_layer7.*o $(PLATFORMDIR)/extras/ || true
  40.         $(if $(TCONFIG_L7),@cp -f,@mv) $(TARGETDIR)/lib/modules/*/kernel/net/netfilter/xt_layer7.*o $(PLATFORMDIR)/extras/ || true
  41. -
  42. +      
  43.         @mkdir -p $(PLATFORMDIR)/extras/apps
  44.         @mkdir -p $(PLATFORMDIR)/extras/lib
  45.  
  46. diff --git a/release/src/router/rc/firewall.c b/release/src/router/rc/firewall.c
  47. index 004c8cd..227f57d 100644
  48. --- a/release/src/router/rc/firewall.c
  49. +++ b/release/src/router/rc/firewall.c
  50. @@ -389,6 +389,8 @@ static void mangle_table(void)
  51.         if (wanup) {
  52.  
  53.                 ipt_qos();
  54. +               //1 for mangle
  55. +               ipt_qoslimit(1);
  56.  
  57.                 p = nvram_safe_get("nf_ttl");
  58.                 if (strncmp(p, "c:", 2) == 0) {
  59. @@ -449,7 +451,10 @@ static void nat_table(void)
  60.                 ":OUTPUT ACCEPT [0:0]\n"
  61.                 ":%s - [0:0]\n",
  62.                 chain_wan_prerouting);
  63. -
  64. +      
  65. +       //2 for nat
  66. +       ipt_qoslimit(2);
  67. +      
  68.         if (gateway_mode) {
  69.                 strlcpy(lanaddr, nvram_safe_get("lan_ipaddr"), sizeof(lanaddr));
  70.                 strlcpy(lanmask, nvram_safe_get("lan_netmask"), sizeof(lanmask));
  71. @@ -1160,7 +1165,11 @@ int start_firewall(void)
  72.         modprobe("nf_conntrack_ipv6");
  73.         modprobe("ip6t_REJECT");
  74.  #endif
  75. -
  76. +       /*Deon Thomas attempt to start xt_IMQ and imq */
  77. +       modprobe("imq");
  78. +       modprobe("xt_IMQ");
  79. +       modprobe("xt_connlimit");
  80. +      
  81.         mangle_table();
  82.         nat_table();
  83.         filter_table();
  84. diff --git a/release/src/router/rc/new_qoslimit.c b/release/src/router/rc/new_qoslimit.c
  85. index 044f2d5..966a274 100755
  86. --- a/release/src/router/rc/new_qoslimit.c
  87. +++ b/release/src/router/rc/new_qoslimit.c
  88. @@ -2,18 +2,109 @@
  89.  
  90.         Tomato Firmware
  91.         Copyright (C) 2006-2008 Jonathan Zarate
  92. +       Copyright (C) 2011 Deon 'PrinceAMD' Thomas
  93.         rate limit & connection limit by conanxu
  94.  */
  95.  
  96.  #include "rc.h"
  97.  
  98.  #include <sys/stat.h>
  99. +static const char *qoslimitfn = "/etc/qoslimit";
  100.  
  101. +/*int  chain
  102. +1 = MANGLE
  103. +2 = NAT
  104. +*/
  105. +void ipt_qoslimit(int chain)
  106. +{
  107. +       char *buf;
  108. +       char *g;
  109. +       char *p;
  110. +       char *ibw,*obw;//bandwidth
  111. +       char *seq;//mark number
  112. +       char *ipaddr;//ip address
  113. +       char *dlrate,*dlceil;//guaranteed rate & maximum rate for download
  114. +       char *ulrate,*ulceil;//guaranteed rate & maximum rate for upload
  115. +       char *priority;//priority
  116. +       char *lanipaddr; //lan ip address
  117. +       char *lanmask; //lan netmask
  118. +       char *tcplimit,*udplimit;//tcp connection limit & udp packets per second
  119. +       int priority_num;
  120. +       int i;
  121. +
  122. +       //qos1 is enable
  123. +       if (!nvram_get_int("new_qoslimit_enable")) return;
  124. +      
  125. +       //read qos1rules from nvram
  126. +       g = buf = strdup(nvram_safe_get("new_qoslimit_rules"));
  127. +
  128. +       ibw = nvram_safe_get("new_qoslimit_ibw");
  129. +       obw = nvram_safe_get("new_qoslimit_obw");
  130. +      
  131. +       lanipaddr = nvram_safe_get("lan_ipaddr");
  132. +       lanmask = nvram_safe_get("lan_netmask");
  133. +      
  134. +       if (chain == 1)
  135. +       {
  136. +               ipt_write(
  137. +                       "-A PREROUTING -j IMQ --todev 0\n"
  138. +                       "-A POSTROUTING -j IMQ --todev 1\n"
  139. +               );
  140. +       }
  141. +      
  142. +       while (g) {
  143. +               /*
  144. +               seq<ipaddr<dlrate<dlceil<ulrate<ulceil<priority<tcplimit<udplimit
  145. +               */
  146. +               if ((p = strsep(&g, ">")) == NULL) break;
  147. +               i = vstrsep(p, "<", &seq, &ipaddr, &dlrate, &dlceil, &ulrate, &ulceil, &priority, &tcplimit, &udplimit);
  148. +
  149. +               priority_num = atoi(priority);
  150. +               if ((priority_num < 0) || (priority_num > 5)) continue;
  151. +
  152. +               if (!strcmp(ipaddr,"")) continue;
  153. +
  154. +               if (!strcmp(dlceil,"")) strcpy(dlceil, dlrate);
  155. +               if (strcmp(dlrate,"") && strcmp(dlceil, "")) {
  156. +                       if(chain == 1) {
  157. +                               ipt_write(
  158. +                               "-A POSTROUTING ! -s %s/%s -d %s -j MARK --set-mark %s\n"
  159. +                               ,lanipaddr,lanmask,ipaddr,seq);
  160. +                       }
  161. +               }
  162. +              
  163. +               if (!strcmp(ulceil,"")) strcpy(ulceil, dlrate);
  164. +               if (strcmp(ulrate,"") && strcmp(ulceil, "")) {
  165. +                       if (chain == 1) {
  166. +                               ipt_write(
  167. +                                       "-A PREROUTING -s %s ! -d %s/%s -j MARK --set-mark %s\n"
  168. +                                       ,lanipaddr,lanmask,ipaddr,seq);
  169. +                       }
  170. +               }
  171. +              
  172. +               // not sure if to use -I or -A but i am using -I as u can SEE!!!!
  173. +               if(atoi(tcplimit) > 0){
  174. +                       if (chain == 2) {
  175. +                               ipt_write(
  176. +                                       "-A PREROUTING -s %s -p tcp --syn -m connlimit --connlimit-above %s -j DROP\n"
  177. +                                       ,ipaddr,tcplimit);
  178. +                       }
  179. +               }
  180. +               if(atoi(udplimit) > 0){
  181. +                       if (chain == 2) {
  182. +                               ipt_write(
  183. +                                       "-A PREROUTING -s %s -p udp -m limit --limit %s/sec -j ACCEPT\n"
  184. +                                       ,ipaddr,udplimit);
  185. +                       }
  186. +               }
  187. +       }
  188. +       free(buf);
  189. +}
  190.  
  191.  // read nvram into files
  192.  void new_qoslimit_start(void)
  193.  {
  194. -       FILE *f;
  195. +       FILE *tc;
  196.         char *buf;
  197.         char *g;
  198.         char *p;
  199. @@ -27,9 +118,6 @@ void new_qoslimit_start(void)
  200.         char *lanmask; //lan netmask
  201.         char *tcplimit,*udplimit;//tcp connection limit & udp packets per second
  202.         int priority_num;
  203. -       char *s = "/tmp/new_qoslimit_start.sh";
  204. -       char *argv[3];
  205. -       int pid;
  206.         int i;
  207.  
  208.         //qos1 is enable
  209. @@ -44,30 +132,28 @@ void new_qoslimit_start(void)
  210.         lanipaddr = nvram_safe_get("lan_ipaddr");
  211.         lanmask = nvram_safe_get("lan_netmask");
  212.  
  213. -       //read qos1rules into file /tmp/new_qoslimit.sh
  214. -       if ((f = fopen(s, "w")) == NULL) return;
  215. +       if ((tc = fopen(qoslimitfn, "w")) == NULL) return;
  216.  
  217. -       fprintf(f,
  218. +       fprintf(tc,
  219.                 "#!/bin/sh\n"
  220. -               "TCA=\"tc class add dev br0\"\n"
  221. -               "TFA=\"tc filter add dev br0\"\n"
  222. -               "TQA=\"tc qdisc add dev br0\"\n"
  223. -               "SFQ=\"sfq perturb 10\"\n"
  224. -               "tc qdisc del dev br0 root\n"
  225. -               "tc qdisc add dev br0 root handle 1: htb\n"
  226. -               "tc class add dev br0 parent 1: classid 1:1 htb rate %skbit\n"
  227. +               "ip link set imq0 up\n"
  228. +               "ip link set imq1 up\n"
  229. +               "\n"
  230. +               "tc qdisc del dev imq0 root 2>/dev/null\n"
  231. +               "tc qdisc del dev imq1 root 2>/dev/null\n"
  232.                 "\n"
  233. +               "TCA=\"tc class add dev imq1\"\n"
  234. +               "TFA=\"tc filter add dev imq1\"\n"
  235. +               "TQA=\"tc qdisc add dev imq1\"\n"
  236. +               "SFQ=\"sfq perturb 10\"\n"
  237.                 "TCAU=\"tc class add dev imq0\"\n"
  238.                 "TFAU=\"tc filter add dev imq0\"\n"
  239.                 "TQAU=\"tc qdisc add dev imq0\"\n"
  240. -               "modprobe imq\n"
  241. -               "modprobe xt_IMQ\n"
  242. -               "ip link set imq0 up\n"
  243. -               "tc qdisc del dev imq0 root\n"
  244. +               "\n"
  245. +               "tc qdisc add dev imq1 root handle 1: htb\n"
  246. +               "tc class add dev imq1 parent 1: classid 1:1 htb rate %skbit\n"
  247.                 "tc qdisc add dev imq0 root handle 1: htb\n"
  248.                 "tc class add dev imq0 parent 1: classid 1:1 htb rate %skbit\n"
  249. -               "iptables -t mangle -A PREROUTING -j IMQ --todev 0\n"
  250. -               "\n"
  251.                 ,ibw,obw
  252.         );
  253.        
  254. @@ -81,102 +167,59 @@ void new_qoslimit_start(void)
  255.                 priority_num = atoi(priority);
  256.                 if ((priority_num < 0) || (priority_num > 5)) continue;
  257.  
  258. -               if (ipaddr == "") continue;
  259. +               if (!strcmp(ipaddr,"")) continue;
  260.  
  261. -               if (dlceil == "") strcpy(dlceil, dlrate);
  262. -               if (dlrate != "" && dlceil != "") {
  263. -                       fprintf(f,
  264. +               if (!strcmp(dlceil,"")) strcpy(dlceil, dlrate);
  265. +               if (strcmp(dlrate,"") && strcmp(dlceil, "")) {
  266. +                       fprintf(tc,
  267.                                 "$TCA parent 1:1 classid 1:%s htb rate %skbit ceil %skbit prio %s\n"
  268.                                 "$TQA parent 1:%s handle %s: $SFQ\n"
  269.                                 "$TFA parent 1:0 prio %s protocol ip handle %s fw flowid 1:%s\n"
  270. -                               "iptables -t mangle -A POSTROUTING ! -s %s/%s -d %s -j MARK --set-mark %s\n"
  271.                                 "\n"
  272.                                 ,seq,dlrate,dlceil,priority
  273.                                 ,seq,seq
  274. -                               ,priority,seq,seq
  275. -                               ,lanipaddr,lanmask,ipaddr,seq);
  276. +                               ,priority,seq,seq);
  277.                 }
  278.                
  279. -               if (ulceil == "") strcpy(ulceil, ulrate);
  280. -               if (ulrate != "" && ulceil != "") {
  281. -                       fprintf(f,
  282. +               if (!strcmp(ulceil,"")) strcpy(ulceil, dlrate);
  283. +               if (strcmp(ulrate,"") && strcmp(ulceil, "")) {
  284. +                       fprintf(tc,
  285.                                 "$TCAU parent 1:1 classid 1:%s htb rate %skbit ceil %skbit prio %s\n"
  286.                                 "$TQAU parent 1:%s handle %s: $SFQ\n"
  287.                                 "$TFAU parent 1:0 prio %s protocol ip handle %s fw flowid 1:%s\n"
  288. -                               "iptables -t mangle -A PREROUTING -s %s ! -d %s/%s -j MARK --set-mark %s\n"
  289.                                 "\n"
  290.                                 ,seq,ulrate,ulceil,priority
  291.                                 ,seq,seq
  292. -                               ,priority,seq,seq
  293. -                               ,lanipaddr,lanmask,ipaddr,seq);
  294. -               }
  295. -              
  296. -               if(atoi(tcplimit) > 0){
  297. -                       fprintf(f,
  298. -                               "iptables -I FORWARD -s %s -p tcp -m connlimit --connlimit-above %s -j DROP\n"
  299. -                               "\n"
  300. -                               ,ipaddr,tcplimit);
  301. -               }
  302. -              
  303. -               if(atoi(udplimit) > 0){
  304. -                       fprintf(f,
  305. -                               "iptables -I FORWARD -s %s -p udp -m limit --limit %s/sec -j DROP\n"
  306. -                               "\n"
  307. -                               ,ipaddr,udplimit);
  308. +                               ,priority,seq,seq);
  309.                 }
  310.         }
  311.         free(buf);
  312.  
  313. -       fclose(f);
  314. -       chmod(s, 0700);
  315. -
  316. -       chdir("/tmp");
  317. -
  318. -       argv[0] = s;
  319. -       argv[1] = NULL;
  320. -       argv[2] = NULL;
  321. -       if (_eval(argv, NULL, 0, &pid) != 0) {
  322. -               pid = -1;
  323. -       }
  324. -       else {
  325. -               kill(pid, 0);
  326. -       }
  327. -                      
  328. -       chdir("/");
  329. +       fclose(tc);
  330. +       chmod(qoslimitfn, 0700);
  331. +      
  332. +       //fake start
  333. +       eval((char *)qoslimitfn, "start");
  334.  }
  335.  
  336.  void new_qoslimit_stop(void)
  337.  {
  338.         FILE *f;
  339. -       char *s = "/tmp/new_qoslimit_stop.sh";
  340. -       char *argv[3];
  341. -       int pid;
  342. +       char *s = "/tmp/qoslimittc_stop.sh";
  343.  
  344.         if ((f = fopen(s, "w")) == NULL) return;
  345.  
  346.         fprintf(f,
  347.                 "#!/bin/sh\n"
  348. -               "tc qdisc del dev br0 root\n"
  349. +               "tc qdisc del dev imq1 root\n"
  350.                 "tc qdisc del dev imq0 root\n"
  351.                 "\n"
  352.         );
  353.  
  354.         fclose(f);
  355.         chmod(s, 0700);
  356. -
  357. -       chdir("/tmp");
  358. -
  359. -       argv[0] = s;
  360. -       argv[1] = NULL;
  361. -       argv[2] = NULL;
  362. -       if (_eval(argv, NULL, 0, &pid) != 0) {
  363. -               pid = -1;
  364. -       }
  365. -       else {
  366. -               kill(pid, 0);
  367. -       }
  368. -                      
  369. -       chdir("/");
  370. +       //fake stop
  371. +       eval((char *)s, "stop");
  372.  }
  373.  /*
  374.  
  375. diff --git a/release/src/router/rc/rc.h b/release/src/router/rc/rc.h
  376. index d004d9a..68678be 100644
  377. --- a/release/src/router/rc/rc.h
  378. +++ b/release/src/router/rc/rc.h
  379. @@ -411,6 +411,7 @@ static inline void start_vpn_eas() { }
  380.  #endif
  381.  
  382.  // new_qoslimit.c
  383. +extern void ipt_qoslimit(int chain);
  384.  extern void new_qoslimit_start(void);
  385.  extern void new_qoslimit_stop(void);
  386.  
  387. diff --git a/release/src/router/rc/usb.c b/release/src/router/rc/usb.c
  388. index 147dfe7..2be4de8 100644
  389. --- a/release/src/router/rc/usb.c
  390. +++ b/release/src/router/rc/usb.c
  391. @@ -143,6 +143,9 @@ void start_usb(void)
  392.  
  393.                 if (nvram_get_int("usb_ohci") == 1) {
  394.                         modprobe(USBOHCI_MOD);
  395. +                       modprobe("input-core");
  396. +                       modprobe("hid");
  397. +                       modprobe("usbhid");
  398.                 }
  399.  
  400.                 if (nvram_get_int("usb_printer")) {
  401. diff --git a/release/src/router/www/admin-access.asp b/release/src/router/www/admin-access.asp
  402. index 3d06100..a67c65f 100644
  403. --- a/release/src/router/www/admin-access.asp
  404. +++ b/release/src/router/www/admin-access.asp
  405. @@ -286,7 +286,7 @@ var m = [
  406.         { title: 'Allow Wireless Access', name: 'f_http_wireless', type: 'checkbox', value:  nvram.web_wl_filter == 0 },
  407.         null,
  408.         { title: 'Color Scheme', name: 'web_css', type: 'select',
  409. -               options: [['red','Tomato'],['asus','Asustek'],['black','Black'],['blue','Blue'],['bluegreen','Blue &amp; Green (Lighter)'],['bluegreen2','Blue &amp; Green (Darker)'],['bluedream','Bluedream'],['buffalo','Buffalo'],['brown','Brown'],['cyan','Cyan'],['enlightened','Enlightened'],['linksys','Linksys'],['olive','Olive'],['purple','Purple'],['pumpkin','Pumpkin'],['tijuana','Tijuana'],
  410. +               options: [['red','Tomato'],['asus','Asustek'],['asus_red','Asus Red'],['black','Black'],['blue','Blue'],['bluegreen','Blue &amp; Green (Lighter)'],['bluegreen2','Blue &amp; Green (Darker)'],['bluedream','Bluedream'],['buffalo','Buffalo'],['brown','Brown'],['cyan','Cyan'],['enlightened','Enlightened'],['linksys','Linksys'],['olive','Olive'],['purple','Purple'],['pumpkin','Pumpkin'],['tijuana','Tijuana'],
  411.  
  412.  /* THEMES-BEGIN */
  413.                 ['usbred','USB Red'],['usbblue','USB Blue'],
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top