Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/release/src/Makefile b/release/src/Makefile
- index c5a5487..79ec71f 100644
- --- a/release/src/Makefile
- +++ b/release/src/Makefile
- @@ -441,6 +441,8 @@ define KernelConfig
- echo "CONFIG_NF_CONNTRACK_IPV6=m" >>$(1); \
- sed -i "/CONFIG_NETFILTER_XT_MATCH_HL/d" $(1); \
- echo "CONFIG_NETFILTER_XT_MATCH_HL=m" >>$(1); \
- + sed -i "/CONFIG_NETFILTER_XT_MATCH_CONNLIMIT/d" $(1); \
- + echo "CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m" >>$(1); \
- sed -i "/CONFIG_IPV6_ROUTER_PREF/d" $(1); \
- echo "CONFIG_IPV6_ROUTER_PREF=y" >>$(1); \
- sed -i "/CONFIG_IPV6_SIT/d" $(1); \
- diff --git a/release/src/router/Makefile b/release/src/router/Makefile
- index 726307f..59277e7 100644
- --- a/release/src/router/Makefile
- +++ b/release/src/router/Makefile
- @@ -320,7 +320,6 @@ endif
- @mv $(TARGETDIR)/lib/modules/*/kernel/drivers/usb/usbip*.*o $(PLATFORMDIR)/extras/ || true
- @mv $(TARGETDIR)/lib/modules/*/kernel/drivers/usb/usbkbd.*o $(PLATFORMDIR)/extras/ || true
- @mv $(TARGETDIR)/lib/modules/*/kernel/drivers/usb/usbmouse.*o $(PLATFORMDIR)/extras/ || true
- - @mv $(TARGETDIR)/lib/modules/*/kernel/drivers/usb/hid*.*o $(PLATFORMDIR)/extras/ || true
- @mv $(TARGETDIR)/lib/modules/*/kernel/drivers/usb/ipw.*o $(PLATFORMDIR)/extras/ || true
- @mv $(TARGETDIR)/lib/modules/*/kernel/drivers/usb/audio.*o $(PLATFORMDIR)/extras/ || true
- @mv $(TARGETDIR)/lib/modules/*/kernel/drivers/usb/ov51*.*o $(PLATFORMDIR)/extras/ || true
- @@ -338,10 +337,6 @@ endif
- @rm -rf $(TARGETDIR)/lib/modules/*/kernel/drivers/sound || true
- @mv $(TARGETDIR)/lib/modules/*/kernel/sound/* $(PLATFORMDIR)/extras/ || true
- @rm -rf $(TARGETDIR)/lib/modules/*/kernel/sound || true
- - @mv $(TARGETDIR)/lib/modules/*/kernel/drivers/input/* $(PLATFORMDIR)/extras/ || true
- - @rm -rf $(TARGETDIR)/lib/modules/*/kernel/drivers/input || true
- - @mv $(TARGETDIR)/lib/modules/*/kernel/drivers/hid/* $(PLATFORMDIR)/extras/ || true
- - @rm -rf $(TARGETDIR)/lib/modules/*/kernel/drivers/hid || true
- @cp -f $(TARGETDIR)/lib/modules/*/kernel/drivers/net/bcm57*.*o $(PLATFORMDIR)/extras/ || true
- $(if $(TCONFIG_PPTP),@cp -f,@mv) $(TARGETDIR)/lib/modules/*/kernel/drivers/net/pptp.*o $(PLATFORMDIR)/extras/ || true
- $(if $(TCONFIG_L2TP),@cp -f,@mv) $(TARGETDIR)/lib/modules/*/kernel/drivers/net/pppol2tp.*o $(PLATFORMDIR)/extras/ || true
- @@ -388,7 +383,7 @@ endif
- [ ! -f $(TARGETDIR)/lib/modules/*/kernel/lib/* ] && rm -rf $(TARGETDIR)/lib/modules/*/kernel/lib || true
- $(if $(TCONFIG_L7),@cp -f,@mv) $(TARGETDIR)/lib/modules/*/kernel/net/ipv4/netfilter/ipt_layer7.*o $(PLATFORMDIR)/extras/ || true
- $(if $(TCONFIG_L7),@cp -f,@mv) $(TARGETDIR)/lib/modules/*/kernel/net/netfilter/xt_layer7.*o $(PLATFORMDIR)/extras/ || true
- -
- +
- @mkdir -p $(PLATFORMDIR)/extras/apps
- @mkdir -p $(PLATFORMDIR)/extras/lib
- diff --git a/release/src/router/rc/firewall.c b/release/src/router/rc/firewall.c
- index 004c8cd..227f57d 100644
- --- a/release/src/router/rc/firewall.c
- +++ b/release/src/router/rc/firewall.c
- @@ -389,6 +389,8 @@ static void mangle_table(void)
- if (wanup) {
- ipt_qos();
- + //1 for mangle
- + ipt_qoslimit(1);
- p = nvram_safe_get("nf_ttl");
- if (strncmp(p, "c:", 2) == 0) {
- @@ -449,7 +451,10 @@ static void nat_table(void)
- ":OUTPUT ACCEPT [0:0]\n"
- ":%s - [0:0]\n",
- chain_wan_prerouting);
- -
- +
- + //2 for nat
- + ipt_qoslimit(2);
- +
- if (gateway_mode) {
- strlcpy(lanaddr, nvram_safe_get("lan_ipaddr"), sizeof(lanaddr));
- strlcpy(lanmask, nvram_safe_get("lan_netmask"), sizeof(lanmask));
- @@ -1160,7 +1165,11 @@ int start_firewall(void)
- modprobe("nf_conntrack_ipv6");
- modprobe("ip6t_REJECT");
- #endif
- -
- + /*Deon Thomas attempt to start xt_IMQ and imq */
- + modprobe("imq");
- + modprobe("xt_IMQ");
- + modprobe("xt_connlimit");
- +
- mangle_table();
- nat_table();
- filter_table();
- diff --git a/release/src/router/rc/new_qoslimit.c b/release/src/router/rc/new_qoslimit.c
- index 044f2d5..966a274 100755
- --- a/release/src/router/rc/new_qoslimit.c
- +++ b/release/src/router/rc/new_qoslimit.c
- @@ -2,18 +2,109 @@
- Tomato Firmware
- Copyright (C) 2006-2008 Jonathan Zarate
- + Copyright (C) 2011 Deon 'PrinceAMD' Thomas
- rate limit & connection limit by conanxu
- */
- #include "rc.h"
- #include <sys/stat.h>
- +static const char *qoslimitfn = "/etc/qoslimit";
- +/*int chain
- +1 = MANGLE
- +2 = NAT
- +*/
- +void ipt_qoslimit(int chain)
- +{
- + char *buf;
- + char *g;
- + char *p;
- + char *ibw,*obw;//bandwidth
- + char *seq;//mark number
- + char *ipaddr;//ip address
- + char *dlrate,*dlceil;//guaranteed rate & maximum rate for download
- + char *ulrate,*ulceil;//guaranteed rate & maximum rate for upload
- + char *priority;//priority
- + char *lanipaddr; //lan ip address
- + char *lanmask; //lan netmask
- + char *tcplimit,*udplimit;//tcp connection limit & udp packets per second
- + int priority_num;
- + int i;
- +
- + //qos1 is enable
- + if (!nvram_get_int("new_qoslimit_enable")) return;
- +
- + //read qos1rules from nvram
- + g = buf = strdup(nvram_safe_get("new_qoslimit_rules"));
- +
- + ibw = nvram_safe_get("new_qoslimit_ibw");
- + obw = nvram_safe_get("new_qoslimit_obw");
- +
- + lanipaddr = nvram_safe_get("lan_ipaddr");
- + lanmask = nvram_safe_get("lan_netmask");
- +
- + if (chain == 1)
- + {
- + ipt_write(
- + "-A PREROUTING -j IMQ --todev 0\n"
- + "-A POSTROUTING -j IMQ --todev 1\n"
- + );
- + }
- +
- + while (g) {
- + /*
- + seq<ipaddr<dlrate<dlceil<ulrate<ulceil<priority<tcplimit<udplimit
- + */
- + if ((p = strsep(&g, ">")) == NULL) break;
- + i = vstrsep(p, "<", &seq, &ipaddr, &dlrate, &dlceil, &ulrate, &ulceil, &priority, &tcplimit, &udplimit);
- +
- + priority_num = atoi(priority);
- + if ((priority_num < 0) || (priority_num > 5)) continue;
- +
- + if (!strcmp(ipaddr,"")) continue;
- +
- + if (!strcmp(dlceil,"")) strcpy(dlceil, dlrate);
- + if (strcmp(dlrate,"") && strcmp(dlceil, "")) {
- + if(chain == 1) {
- + ipt_write(
- + "-A POSTROUTING ! -s %s/%s -d %s -j MARK --set-mark %s\n"
- + ,lanipaddr,lanmask,ipaddr,seq);
- + }
- + }
- +
- + if (!strcmp(ulceil,"")) strcpy(ulceil, dlrate);
- + if (strcmp(ulrate,"") && strcmp(ulceil, "")) {
- + if (chain == 1) {
- + ipt_write(
- + "-A PREROUTING -s %s ! -d %s/%s -j MARK --set-mark %s\n"
- + ,lanipaddr,lanmask,ipaddr,seq);
- + }
- + }
- +
- + // not sure if to use -I or -A but i am using -I as u can SEE!!!!
- + if(atoi(tcplimit) > 0){
- + if (chain == 2) {
- + ipt_write(
- + "-A PREROUTING -s %s -p tcp --syn -m connlimit --connlimit-above %s -j DROP\n"
- + ,ipaddr,tcplimit);
- + }
- + }
- + if(atoi(udplimit) > 0){
- + if (chain == 2) {
- + ipt_write(
- + "-A PREROUTING -s %s -p udp -m limit --limit %s/sec -j ACCEPT\n"
- + ,ipaddr,udplimit);
- + }
- + }
- + }
- + free(buf);
- +}
- // read nvram into files
- void new_qoslimit_start(void)
- {
- - FILE *f;
- + FILE *tc;
- char *buf;
- char *g;
- char *p;
- @@ -27,9 +118,6 @@ void new_qoslimit_start(void)
- char *lanmask; //lan netmask
- char *tcplimit,*udplimit;//tcp connection limit & udp packets per second
- int priority_num;
- - char *s = "/tmp/new_qoslimit_start.sh";
- - char *argv[3];
- - int pid;
- int i;
- //qos1 is enable
- @@ -44,30 +132,28 @@ void new_qoslimit_start(void)
- lanipaddr = nvram_safe_get("lan_ipaddr");
- lanmask = nvram_safe_get("lan_netmask");
- - //read qos1rules into file /tmp/new_qoslimit.sh
- - if ((f = fopen(s, "w")) == NULL) return;
- + if ((tc = fopen(qoslimitfn, "w")) == NULL) return;
- - fprintf(f,
- + fprintf(tc,
- "#!/bin/sh\n"
- - "TCA=\"tc class add dev br0\"\n"
- - "TFA=\"tc filter add dev br0\"\n"
- - "TQA=\"tc qdisc add dev br0\"\n"
- - "SFQ=\"sfq perturb 10\"\n"
- - "tc qdisc del dev br0 root\n"
- - "tc qdisc add dev br0 root handle 1: htb\n"
- - "tc class add dev br0 parent 1: classid 1:1 htb rate %skbit\n"
- + "ip link set imq0 up\n"
- + "ip link set imq1 up\n"
- + "\n"
- + "tc qdisc del dev imq0 root 2>/dev/null\n"
- + "tc qdisc del dev imq1 root 2>/dev/null\n"
- "\n"
- + "TCA=\"tc class add dev imq1\"\n"
- + "TFA=\"tc filter add dev imq1\"\n"
- + "TQA=\"tc qdisc add dev imq1\"\n"
- + "SFQ=\"sfq perturb 10\"\n"
- "TCAU=\"tc class add dev imq0\"\n"
- "TFAU=\"tc filter add dev imq0\"\n"
- "TQAU=\"tc qdisc add dev imq0\"\n"
- - "modprobe imq\n"
- - "modprobe xt_IMQ\n"
- - "ip link set imq0 up\n"
- - "tc qdisc del dev imq0 root\n"
- + "\n"
- + "tc qdisc add dev imq1 root handle 1: htb\n"
- + "tc class add dev imq1 parent 1: classid 1:1 htb rate %skbit\n"
- "tc qdisc add dev imq0 root handle 1: htb\n"
- "tc class add dev imq0 parent 1: classid 1:1 htb rate %skbit\n"
- - "iptables -t mangle -A PREROUTING -j IMQ --todev 0\n"
- - "\n"
- ,ibw,obw
- );
- @@ -81,102 +167,59 @@ void new_qoslimit_start(void)
- priority_num = atoi(priority);
- if ((priority_num < 0) || (priority_num > 5)) continue;
- - if (ipaddr == "") continue;
- + if (!strcmp(ipaddr,"")) continue;
- - if (dlceil == "") strcpy(dlceil, dlrate);
- - if (dlrate != "" && dlceil != "") {
- - fprintf(f,
- + if (!strcmp(dlceil,"")) strcpy(dlceil, dlrate);
- + if (strcmp(dlrate,"") && strcmp(dlceil, "")) {
- + fprintf(tc,
- "$TCA parent 1:1 classid 1:%s htb rate %skbit ceil %skbit prio %s\n"
- "$TQA parent 1:%s handle %s: $SFQ\n"
- "$TFA parent 1:0 prio %s protocol ip handle %s fw flowid 1:%s\n"
- - "iptables -t mangle -A POSTROUTING ! -s %s/%s -d %s -j MARK --set-mark %s\n"
- "\n"
- ,seq,dlrate,dlceil,priority
- ,seq,seq
- - ,priority,seq,seq
- - ,lanipaddr,lanmask,ipaddr,seq);
- + ,priority,seq,seq);
- }
- - if (ulceil == "") strcpy(ulceil, ulrate);
- - if (ulrate != "" && ulceil != "") {
- - fprintf(f,
- + if (!strcmp(ulceil,"")) strcpy(ulceil, dlrate);
- + if (strcmp(ulrate,"") && strcmp(ulceil, "")) {
- + fprintf(tc,
- "$TCAU parent 1:1 classid 1:%s htb rate %skbit ceil %skbit prio %s\n"
- "$TQAU parent 1:%s handle %s: $SFQ\n"
- "$TFAU parent 1:0 prio %s protocol ip handle %s fw flowid 1:%s\n"
- - "iptables -t mangle -A PREROUTING -s %s ! -d %s/%s -j MARK --set-mark %s\n"
- "\n"
- ,seq,ulrate,ulceil,priority
- ,seq,seq
- - ,priority,seq,seq
- - ,lanipaddr,lanmask,ipaddr,seq);
- - }
- -
- - if(atoi(tcplimit) > 0){
- - fprintf(f,
- - "iptables -I FORWARD -s %s -p tcp -m connlimit --connlimit-above %s -j DROP\n"
- - "\n"
- - ,ipaddr,tcplimit);
- - }
- -
- - if(atoi(udplimit) > 0){
- - fprintf(f,
- - "iptables -I FORWARD -s %s -p udp -m limit --limit %s/sec -j DROP\n"
- - "\n"
- - ,ipaddr,udplimit);
- + ,priority,seq,seq);
- }
- }
- free(buf);
- - fclose(f);
- - chmod(s, 0700);
- -
- - chdir("/tmp");
- -
- - argv[0] = s;
- - argv[1] = NULL;
- - argv[2] = NULL;
- - if (_eval(argv, NULL, 0, &pid) != 0) {
- - pid = -1;
- - }
- - else {
- - kill(pid, 0);
- - }
- -
- - chdir("/");
- + fclose(tc);
- + chmod(qoslimitfn, 0700);
- +
- + //fake start
- + eval((char *)qoslimitfn, "start");
- }
- void new_qoslimit_stop(void)
- {
- FILE *f;
- - char *s = "/tmp/new_qoslimit_stop.sh";
- - char *argv[3];
- - int pid;
- + char *s = "/tmp/qoslimittc_stop.sh";
- if ((f = fopen(s, "w")) == NULL) return;
- fprintf(f,
- "#!/bin/sh\n"
- - "tc qdisc del dev br0 root\n"
- + "tc qdisc del dev imq1 root\n"
- "tc qdisc del dev imq0 root\n"
- "\n"
- );
- fclose(f);
- chmod(s, 0700);
- -
- - chdir("/tmp");
- -
- - argv[0] = s;
- - argv[1] = NULL;
- - argv[2] = NULL;
- - if (_eval(argv, NULL, 0, &pid) != 0) {
- - pid = -1;
- - }
- - else {
- - kill(pid, 0);
- - }
- -
- - chdir("/");
- + //fake stop
- + eval((char *)s, "stop");
- }
- /*
- diff --git a/release/src/router/rc/rc.h b/release/src/router/rc/rc.h
- index d004d9a..68678be 100644
- --- a/release/src/router/rc/rc.h
- +++ b/release/src/router/rc/rc.h
- @@ -411,6 +411,7 @@ static inline void start_vpn_eas() { }
- #endif
- // new_qoslimit.c
- +extern void ipt_qoslimit(int chain);
- extern void new_qoslimit_start(void);
- extern void new_qoslimit_stop(void);
- diff --git a/release/src/router/rc/usb.c b/release/src/router/rc/usb.c
- index 147dfe7..2be4de8 100644
- --- a/release/src/router/rc/usb.c
- +++ b/release/src/router/rc/usb.c
- @@ -143,6 +143,9 @@ void start_usb(void)
- if (nvram_get_int("usb_ohci") == 1) {
- modprobe(USBOHCI_MOD);
- + modprobe("input-core");
- + modprobe("hid");
- + modprobe("usbhid");
- }
- if (nvram_get_int("usb_printer")) {
- diff --git a/release/src/router/www/admin-access.asp b/release/src/router/www/admin-access.asp
- index 3d06100..a67c65f 100644
- --- a/release/src/router/www/admin-access.asp
- +++ b/release/src/router/www/admin-access.asp
- @@ -286,7 +286,7 @@ var m = [
- { title: 'Allow Wireless Access', name: 'f_http_wireless', type: 'checkbox', value: nvram.web_wl_filter == 0 },
- null,
- { title: 'Color Scheme', name: 'web_css', type: 'select',
- - options: [['red','Tomato'],['asus','Asustek'],['black','Black'],['blue','Blue'],['bluegreen','Blue & Green (Lighter)'],['bluegreen2','Blue & Green (Darker)'],['bluedream','Bluedream'],['buffalo','Buffalo'],['brown','Brown'],['cyan','Cyan'],['enlightened','Enlightened'],['linksys','Linksys'],['olive','Olive'],['purple','Purple'],['pumpkin','Pumpkin'],['tijuana','Tijuana'],
- + options: [['red','Tomato'],['asus','Asustek'],['asus_red','Asus Red'],['black','Black'],['blue','Blue'],['bluegreen','Blue & Green (Lighter)'],['bluegreen2','Blue & Green (Darker)'],['bluedream','Bluedream'],['buffalo','Buffalo'],['brown','Brown'],['cyan','Cyan'],['enlightened','Enlightened'],['linksys','Linksys'],['olive','Olive'],['purple','Purple'],['pumpkin','Pumpkin'],['tijuana','Tijuana'],
- /* THEMES-BEGIN */
- ['usbred','USB Red'],['usbblue','USB Blue'],
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement