Advertisement
Guest User

tomato7.patch toastman build

a guest
Feb 18th, 2011
374
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 13.34 KB | None | 0 0
  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'],
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement