Add logging for speed limit and traffic control commands
This commit is contained in:
@@ -6,6 +6,11 @@ class TrafficControlService {
|
||||
print('Setting speed limit for peer $peerIP to ${speedKbps}kbps (mark: $mark)');
|
||||
|
||||
try {
|
||||
// Ensure HTB qdisc exists on wg0
|
||||
print('Setting up HTB qdisc on wg0...');
|
||||
await _runTcCommand(['qdisc', 'add', 'dev', 'wg0', 'root', 'handle', '1:', 'htb', 'default', '30']);
|
||||
await _runTcCommand(['class', 'add', 'dev', 'wg0', 'parent', '1:', 'classid', '1:1', 'htb', 'rate', '1000mbit']);
|
||||
|
||||
print('Running iptables MARK commands for $peerIP...');
|
||||
await _runIptablesCommand(['-I', 'FORWARD', '-s', peerIP, '-j', 'MARK', '--set-mark', mark.toString()]);
|
||||
await _runIptablesCommand(['-I', 'FORWARD', '-d', peerIP, '-j', 'MARK', '--set-mark', mark.toString()]);
|
||||
@@ -19,7 +24,10 @@ class TrafficControlService {
|
||||
print('Speed limit set successfully for $peerIP');
|
||||
} catch (e) {
|
||||
print('ERROR setting speed limit for $peerIP: $e');
|
||||
rethrow;
|
||||
// Don't rethrow if it's just because qdisc already exists
|
||||
if (!e.toString().contains('File exists')) {
|
||||
rethrow;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,7 +41,9 @@ class TrafficControlService {
|
||||
}
|
||||
|
||||
static int _getMarkForIP(String ip) {
|
||||
return ip.split('.').last.hashCode % 65535 + 1;
|
||||
// Use last octet of IP + 10 to ensure small, valid class IDs (10-255)
|
||||
final lastOctet = int.parse(ip.split('.').last);
|
||||
return lastOctet + 10;
|
||||
}
|
||||
|
||||
static Future<void> _runIptablesCommand(List<String> args) async {
|
||||
|
||||
Reference in New Issue
Block a user