BWM and static ARP optimizations
[tomato.git] / release / src / router / rc / bwclimon.c
blobe7490b0ffb9b7dff72f602a9e27b500823021b7a
1 #include <shared.h>
2 #include "rc.h"
4 void start_bwclimon(void) {
6 char *nvp, *nv, *b;
7 // const char *ipaddr, *hostname;
9 nvp = nv = strdup(nvram_safe_get("bwm_client"));
10 if (!nv) return;
12 // clear rules first
13 stop_bwclimon();
15 eval("iptables", "-N", "traffic_in");
16 eval("iptables", "-N", "traffic_out");
17 eval("iptables", "-I", "FORWARD", "1", "-j", "traffic_in");
18 eval("iptables", "-I", "FORWARD", "2", "-j", "traffic_out");
20 // while ((b = strsep(&nvp, ">")) != NULL) {
22 * previously:
23 ip.ad.dr.ess<hostname>other.ip.addr.ess<anotherhost>
24 currently, only the IP address is used
27 // if ((vstrsep(b, "<", &ipaddr, &hostname)) != 2) continue;
29 // eval("iptables", "-A", "traffic_in", "-d", (char *)ipaddr);
30 // eval("iptables", "-A", "traffic_out", "-s", (char *)ipaddr);
33 * currently:
34 ip.ad.dr.ess,other.ip.addr.ess,another.ip.addr.ess
37 while ((b = strsep(&nvp, ",")) != NULL) {
38 if (strlen(b) > INET_ADDRSTRLEN)
39 continue;
40 eval("iptables", "-A", "traffic_in", "-d", (char *)b);
41 eval("iptables", "-A", "traffic_out", "-s", (char *)b);
43 free(nv);
46 void stop_bwclimon(void) {
48 eval("iptables", "-D", "FORWARD", "-j", "traffic_in");
49 eval("iptables", "-D", "FORWARD", "-j", "traffic_out");
51 eval("iptables", "-F", "traffic_in");
52 eval("iptables", "-F", "traffic_out");
54 eval("iptables", "-X", "traffic_in");
55 eval("iptables", "-X", "traffic_out");