策略路由主要RouteController.cpp
路由优先级:
const uint32_t RULE_PRIORITY_VPN_OVERRIDE_SYSTEM = 10000;
const uint32_t RULE_PRIORITY_VPN_OUTPUT_TO_LOCAL = 11000;
const uint32_t RULE_PRIORITY_SECURE_VPN = 12000;
const uint32_t RULE_PRIORITY_EXPLICIT_NETWORK = 13000;
const uint32_t RULE_PRIORITY_OUTPUT_INTERFACE = 14000;
const uint32_t RULE_PRIORITY_LEGACY_SYSTEM = 15000;
const uint32_t RULE_PRIORITY_LEGACY_NETWORK = 16000;
const uint32_t RULE_PRIORITY_LOCAL_NETWORK = 17000;
const uint32_t RULE_PRIORITY_TETHERING = 18000;
const uint32_t RULE_PRIORITY_IMPLICIT_NETWORK = 19000;
const uint32_t RULE_PRIORITY_BYPASSABLE_VPN = 20000;
const uint32_t RULE_PRIORITY_VPN_FALLTHROUGH = 21000;
const uint32_t RULE_PRIORITY_DEFAULT_NETWORK = 22000;
const uint32_t RULE_PRIORITY_DIRECTLY_CONNECTED = 23000;
const uint32_t RULE_PRIORITY_UNREACHABLE = 32000;
路由ID:
const uint32_t ROUTE_TABLE_LOCAL_NETWORK = 97;
const uint32_t ROUTE_TABLE_LEGACY_NETWORK = 98;
const uint32_t ROUTE_TABLE_LEGACY_SYSTEM = 99;
路由名字:
const char* const ROUTE_TABLE_NAME_LOCAL_NETWORK = "local_network";
const char* const ROUTE_TABLE_NAME_LEGACY_NETWORK = "legacy_network";
const char* const ROUTE_TABLE_NAME_LEGACY_SYSTEM = "legacy_system";
策略路由table路径定义:
const char* const RT_TABLES_PATH = "/data/misc/net/rt_tables";
MARK
--set-xmark value [/ mask ] ,将掩码和XOR值给出的位归零到数据包标记(“nfmark”)中。如果省略掩码,则假定为0xFFFFFFFF。
--set-mark value [/ mask ] ,将掩码和OR值给出的位归零到数据包标记(“nfmark”)中。如果省略掩码,则假定为0xFFFFFFFF。
--and-mark bits ,将nfmark和 bits 进行与操作,助记符: --set-xmark 0/invbits。
--or-mark bits ,将nfmark和 bits 进行或操作,助记符: --set-xmark bits/bits。
--xor-mark bits ,将nfmark和 bits 进行异或操作,助记符: --set-xmark bits/0。