tc: use mac as filter and mask

This commit is contained in:
Tim Niemeyer 2018-04-02 19:42:16 +02:00
parent fd74179fbb
commit 670f0e6a8f
1 changed files with 14 additions and 6 deletions

20
tc.c
View File

@ -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);
}