cosmetics
[tomato.git] / release / src / router / rc / bwclimon.c
blobcbdd757453295207f24209bf434303bc3bf0ef7c
1 #include "rc.h"
3 void start_bwclimon(void) {
5 char *nvp, *nv, *b;
6 const char *ipaddr, *hostname;
8 nvp = nv = strdup(nvram_safe_get("bwm_client"));
9 if (!nv) return;
11 // clear rules first
12 stop_bwclimon();
14 eval("iptables", "-N", "traffic_in");
15 eval("iptables", "-N", "traffic_out");
16 eval("iptables", "-I", "FORWARD", "1", "-j", "traffic_in");
17 eval("iptables", "-I", "FORWARD", "2", "-j", "traffic_out");
19 while ((b = strsep(&nvp, ">")) != NULL) {
21 ip.ad.dr.ess<hostname>other.ip.addr.ess<anotherhost>
22 currently, only the IP address is used
24 if ((vstrsep(b, "<", &ipaddr, &hostname)) != 2) continue;
26 eval("iptables", "-A", "traffic_in", "-d", (char *)ipaddr);
27 eval("iptables", "-A", "traffic_out", "-s", (char *)ipaddr);
29 free(nv);
32 void stop_bwclimon(void) {
34 eval("iptables", "-D", "FORWARD", "-j", "traffic_in");
35 eval("iptables", "-D", "FORWARD", "-j", "traffic_out");
37 eval("iptables", "-F", "traffic_in");
38 eval("iptables", "-F", "traffic_out");
40 eval("iptables", "-X", "traffic_in");
41 eval("iptables", "-X", "traffic_out");