diff --git a/server/BandwidthControllerTest.cpp b/server/BandwidthControllerTest.cpp
index 9337ac5..0966b7f 100644
--- a/server/BandwidthControllerTest.cpp
+++ b/server/BandwidthControllerTest.cpp
@@ -61,12 +61,12 @@
         "-A bw_OUTPUT -o ipsec+ -j RETURN\n"
         "-A bw_OUTPUT -m policy --pol ipsec --dir out -j RETURN\n"
         "-A bw_OUTPUT -m owner --socket-exists\n"
-        "-A bw_costly_shared --jump bw_penalty_box\n"
+        "-A bw_costly_shared -j bw_penalty_box\n"
         "\n"
-        "-A bw_penalty_box --jump bw_happy_box\n"
-        "-A bw_happy_box --jump bw_data_saver\n"
+        "-A bw_penalty_box -j bw_happy_box\n"
+        "-A bw_happy_box -j bw_data_saver\n"
         "-A bw_data_saver -j RETURN\n"
-        "-I bw_happy_box -m owner --uid-owner 0-9999 --jump RETURN\n"
+        "-I bw_happy_box -m owner --uid-owner 0-9999 -j RETURN\n"
         "COMMIT\n"
         "*raw\n"
         "-A bw_raw_PREROUTING -i ipsec+ -j RETURN\n"
@@ -92,11 +92,11 @@
         "-A bw_OUTPUT -o ipsec+ -j RETURN\n"
         "-A bw_OUTPUT -m policy --pol ipsec --dir out -j RETURN\n"
         "\n"
-        "-A bw_costly_shared --jump bw_penalty_box\n" +
+        "-A bw_costly_shared -j bw_penalty_box\n" +
         StringPrintf("-I bw_penalty_box -m bpf --object-pinned %s -j REJECT\n",
                      XT_BPF_BLACKLIST_PROG_PATH) +
-        "-A bw_penalty_box --jump bw_happy_box\n"
-        "-A bw_happy_box --jump bw_data_saver\n"
+        "-A bw_penalty_box -j bw_happy_box\n"
+        "-A bw_happy_box -j bw_data_saver\n"
         "-A bw_data_saver -j RETURN\n" +
         StringPrintf("-I bw_happy_box -m bpf --object-pinned %s -j RETURN\n",
                      XT_BPF_WHITELIST_PROG_PATH) +
@@ -276,21 +276,21 @@
 TEST_F(BandwidthControllerTest, TestEnableDataSaver) {
     mBw.enableDataSaver(true);
     std::string expected4 =
-        "*filter\n"
-        ":bw_data_saver -\n"
-        "-A bw_data_saver --jump REJECT\n"
-        "COMMIT\n";
+            "*filter\n"
+            ":bw_data_saver -\n"
+            "-A bw_data_saver -j REJECT\n"
+            "COMMIT\n";
     std::string expected6 =
-        "*filter\n"
-        ":bw_data_saver -\n"
-        "-A bw_data_saver -p icmpv6 --icmpv6-type packet-too-big -j RETURN\n"
-        "-A bw_data_saver -p icmpv6 --icmpv6-type router-solicitation -j RETURN\n"
-        "-A bw_data_saver -p icmpv6 --icmpv6-type router-advertisement -j RETURN\n"
-        "-A bw_data_saver -p icmpv6 --icmpv6-type neighbour-solicitation -j RETURN\n"
-        "-A bw_data_saver -p icmpv6 --icmpv6-type neighbour-advertisement -j RETURN\n"
-        "-A bw_data_saver -p icmpv6 --icmpv6-type redirect -j RETURN\n"
-        "-A bw_data_saver --jump REJECT\n"
-        "COMMIT\n";
+            "*filter\n"
+            ":bw_data_saver -\n"
+            "-A bw_data_saver -p icmpv6 --icmpv6-type packet-too-big -j RETURN\n"
+            "-A bw_data_saver -p icmpv6 --icmpv6-type router-solicitation -j RETURN\n"
+            "-A bw_data_saver -p icmpv6 --icmpv6-type router-advertisement -j RETURN\n"
+            "-A bw_data_saver -p icmpv6 --icmpv6-type neighbour-solicitation -j RETURN\n"
+            "-A bw_data_saver -p icmpv6 --icmpv6-type neighbour-advertisement -j RETURN\n"
+            "-A bw_data_saver -p icmpv6 --icmpv6-type redirect -j RETURN\n"
+            "-A bw_data_saver -j REJECT\n"
+            "COMMIT\n";
     expectIptablesRestoreCommands({
         {V4, expected4},
         {V6, expected6},
@@ -298,11 +298,10 @@
 
     mBw.enableDataSaver(false);
     std::string expected = {
-        "*filter\n"
-        ":bw_data_saver -\n"
-        "-A bw_data_saver --jump RETURN\n"
-        "COMMIT\n"
-    };
+            "*filter\n"
+            ":bw_data_saver -\n"
+            "-A bw_data_saver -j RETURN\n"
+            "COMMIT\n"};
     expectIptablesRestoreCommands({
         {V4, expected},
         {V6, expected},
@@ -315,16 +314,16 @@
     const char* c_chain = chain.c_str();
     const char* c_iface = iface.c_str();
     std::vector<std::string> cmds = {
-        "*filter",
-        StringPrintf(":%s -", c_chain),
-        StringPrintf("-A %s -j bw_penalty_box", c_chain),
-        StringPrintf("-I bw_INPUT %d -i %s --jump %s", ruleIndex, c_iface, c_chain),
-        StringPrintf("-I bw_OUTPUT %d -o %s --jump %s", ruleIndex, c_iface, c_chain),
-        StringPrintf("-A bw_FORWARD -i %s --jump %s", c_iface, c_chain),
-        StringPrintf("-A bw_FORWARD -o %s --jump %s", c_iface, c_chain),
-        StringPrintf("-A %s -m quota2 ! --quota %" PRIu64 " --name %s --jump REJECT", c_chain,
-                     quota, c_iface),
-        "COMMIT\n",
+            "*filter",
+            StringPrintf(":%s -", c_chain),
+            StringPrintf("-A %s -j bw_penalty_box", c_chain),
+            StringPrintf("-I bw_INPUT %d -i %s -j %s", ruleIndex, c_iface, c_chain),
+            StringPrintf("-I bw_OUTPUT %d -o %s -j %s", ruleIndex, c_iface, c_chain),
+            StringPrintf("-A bw_FORWARD -i %s -j %s", c_iface, c_chain),
+            StringPrintf("-A bw_FORWARD -o %s -j %s", c_iface, c_chain),
+            StringPrintf("-A %s -m quota2 ! --quota %" PRIu64 " --name %s -j REJECT", c_chain,
+                         quota, c_iface),
+            "COMMIT\n",
     };
     return {Join(cmds, "\n")};
 }
@@ -334,14 +333,14 @@
     const char* c_chain = chain.c_str();
     const char* c_iface = iface.c_str();
     std::vector<std::string> cmds = {
-        "*filter",
-        StringPrintf("-D bw_INPUT -i %s --jump %s", c_iface, c_chain),
-        StringPrintf("-D bw_OUTPUT -o %s --jump %s", c_iface, c_chain),
-        StringPrintf("-D bw_FORWARD -i %s --jump %s", c_iface, c_chain),
-        StringPrintf("-D bw_FORWARD -o %s --jump %s", c_iface, c_chain),
-        StringPrintf("-F %s", c_chain),
-        StringPrintf("-X %s", c_chain),
-        "COMMIT\n",
+            "*filter",
+            StringPrintf("-D bw_INPUT -i %s -j %s", c_iface, c_chain),
+            StringPrintf("-D bw_OUTPUT -o %s -j %s", c_iface, c_chain),
+            StringPrintf("-D bw_FORWARD -i %s -j %s", c_iface, c_chain),
+            StringPrintf("-D bw_FORWARD -o %s -j %s", c_iface, c_chain),
+            StringPrintf("-F %s", c_chain),
+            StringPrintf("-X %s", c_chain),
+            "COMMIT\n",
     };
     return {Join(cmds, "\n")};
 }
@@ -372,15 +371,15 @@
     const char* c_chain = chain.c_str();
     const char* c_iface = iface.c_str();
     std::vector<std::string> cmds = {
-        "*filter",
-        StringPrintf("-I bw_INPUT %d -i %s --jump %s", ruleIndex, c_iface, c_chain),
-        StringPrintf("-I bw_OUTPUT %d -o %s --jump %s", ruleIndex, c_iface, c_chain),
-        StringPrintf("-A bw_FORWARD -i %s --jump %s", c_iface, c_chain),
-        StringPrintf("-A bw_FORWARD -o %s --jump %s", c_iface, c_chain),
+            "*filter",
+            StringPrintf("-I bw_INPUT %d -i %s -j %s", ruleIndex, c_iface, c_chain),
+            StringPrintf("-I bw_OUTPUT %d -o %s -j %s", ruleIndex, c_iface, c_chain),
+            StringPrintf("-A bw_FORWARD -i %s -j %s", c_iface, c_chain),
+            StringPrintf("-A bw_FORWARD -o %s -j %s", c_iface, c_chain),
     };
     if (insertQuota) {
-        cmds.push_back(StringPrintf(
-            "-I %s -m quota2 ! --quota %" PRIu64 " --name shared --jump REJECT", c_chain, quota));
+        cmds.push_back(StringPrintf("-I %s -m quota2 ! --quota %" PRIu64 " --name shared -j REJECT",
+                                    c_chain, quota));
     }
     cmds.push_back("COMMIT\n");
     return {Join(cmds, "\n")};
@@ -392,15 +391,15 @@
     const char* c_chain = chain.c_str();
     const char* c_iface = iface.c_str();
     std::vector<std::string> cmds = {
-        "*filter",
-        StringPrintf("-D bw_INPUT -i %s --jump %s", c_iface, c_chain),
-        StringPrintf("-D bw_OUTPUT -o %s --jump %s", c_iface, c_chain),
-        StringPrintf("-D bw_FORWARD -i %s --jump %s", c_iface, c_chain),
-        StringPrintf("-D bw_FORWARD -o %s --jump %s", c_iface, c_chain),
+            "*filter",
+            StringPrintf("-D bw_INPUT -i %s -j %s", c_iface, c_chain),
+            StringPrintf("-D bw_OUTPUT -o %s -j %s", c_iface, c_chain),
+            StringPrintf("-D bw_FORWARD -i %s -j %s", c_iface, c_chain),
+            StringPrintf("-D bw_FORWARD -o %s -j %s", c_iface, c_chain),
     };
     if (deleteQuota) {
-        cmds.push_back(StringPrintf(
-            "-D %s -m quota2 ! --quota %" PRIu64 " --name shared --jump REJECT", c_chain, quota));
+        cmds.push_back(StringPrintf("-D %s -m quota2 ! --quota %" PRIu64 " --name shared -j REJECT",
+                                    c_chain, quota));
     }
     cmds.push_back("COMMIT\n");
     return {Join(cmds, "\n")};
@@ -515,22 +514,20 @@
     std::vector<const char *> appUids = { "1000", "1001", "10012" };
 
     std::vector<std::string> expected = {
-        "*filter\n"
-        "-I bw_happy_box -m owner --uid-owner 1000 --jump RETURN\n"
-        "-I bw_happy_box -m owner --uid-owner 1001 --jump RETURN\n"
-        "-I bw_happy_box -m owner --uid-owner 10012 --jump RETURN\n"
-        "COMMIT\n"
-    };
+            "*filter\n"
+            "-I bw_happy_box -m owner --uid-owner 1000 -j RETURN\n"
+            "-I bw_happy_box -m owner --uid-owner 1001 -j RETURN\n"
+            "-I bw_happy_box -m owner --uid-owner 10012 -j RETURN\n"
+            "COMMIT\n"};
     EXPECT_EQ(0, mBw.addNiceApps(appUids.size(), const_cast<char**>(&appUids[0])));
     expectIptablesRestoreCommands(expected);
 
     expected = {
-        "*filter\n"
-        "-D bw_penalty_box -m owner --uid-owner 1000 --jump REJECT\n"
-        "-D bw_penalty_box -m owner --uid-owner 1001 --jump REJECT\n"
-        "-D bw_penalty_box -m owner --uid-owner 10012 --jump REJECT\n"
-        "COMMIT\n"
-    };
+            "*filter\n"
+            "-D bw_penalty_box -m owner --uid-owner 1000 -j REJECT\n"
+            "-D bw_penalty_box -m owner --uid-owner 1001 -j REJECT\n"
+            "-D bw_penalty_box -m owner --uid-owner 10012 -j REJECT\n"
+            "COMMIT\n"};
     EXPECT_EQ(0, mBw.removeNaughtyApps(appUids.size(), const_cast<char**>(&appUids[0])));
     expectIptablesRestoreCommands(expected);
 }
