diff --git a/tc.c b/tc.c index 6f266d7..deb379c 100644 --- a/tc.c +++ b/tc.c @@ -55,10 +55,14 @@ void tc_block_all() void tc_allow_mac(const uint8_t mac[]) { char cmd[2048]; + char mac32[9]; + char mac16[5]; + snprintf(mac32, 9, "%2x%2x%2x%2x", mac[0], mac[1], mac[2], mac[3]); + snprintf(mac16, 5, "%2x%2x", mac[4], mac[5]); snprintf(cmd, 2048, "tc filter add dev %s protocol all parent ffff: prio 99 " - "basic match \"u32(u32 0x%2x%2x%2x%2x 0xffffffff at -8)\" " - "and \"u32(u16 0x%2x%2x 0xffff at -4)\" flowid :1 action pass", - g_interface, mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); + "basic match \"u32(u32 0x%s 0x%s at -8)\" " + "and \"u32(u16 0x%s 0x%s at -4)\" flowid :1 action pass", + g_interface, mac32, mac32, mac16, mac16); log_debug("CMD: %s\n", cmd); system(cmd); } @@ -66,10 +70,14 @@ void tc_allow_mac(const uint8_t mac[]) void tc_disallow_mac(const uint8_t mac[]) { char cmd[2048]; + char mac32[9]; + char mac16[5]; + snprintf(mac32, 9, "%2x%2x%2x%2x", mac[0], mac[1], mac[2], mac[3]); + snprintf(mac16, 5, "%2x%2x", mac[4], mac[5]); snprintf(cmd, 2048, "tc filter delete dev %s protocol all parent ffff: prio 99 " - "basic match \"u32(u32 0x%2x%2x%2x%2x 0xffffffff at -8)\" " - "and \"u32(u16 0x%2x%2x 0xffff at -4)\" flowid :1 action pass", - g_interface, mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); + "basic match \"u32(u32 0x%s 0x%s at -8)\" " + "and \"u32(u16 0x%s 0x%s at -4)\" flowid :1 action pass", + g_interface, mac32, mac32, mac16, mac16); log_debug("CMD: %s\n", cmd); system(cmd); }