mirror of
https://github.com/openvswitch/ovs
synced 2025-08-31 06:15:47 +00:00
netdev-linux: Factor out removing policing.
This is duplicated code that the following commit will rewrite.
This commit is contained in:
@@ -1280,6 +1280,24 @@ done:
|
||||
*/
|
||||
#define POLICE_DEL_CMD "/sbin/tc qdisc del dev %s handle ffff: ingress 2>/dev/null"
|
||||
|
||||
/* Remove ingress policing from 'netdev'. Returns 0 if successful, otherwise a
|
||||
* positive errno value. */
|
||||
static int
|
||||
netdev_linux_remove_policing(struct netdev *netdev)
|
||||
{
|
||||
const char *netdev_name = netdev_get_name(netdev);
|
||||
char command[1024];
|
||||
|
||||
/* xxx This should be more careful about only adding if it
|
||||
* xxx actually exists, as opposed to always deleting it. */
|
||||
snprintf(command, sizeof(command), POLICE_DEL_CMD, netdev_name);
|
||||
if (system(command) == -1) {
|
||||
VLOG_WARN_RL(&rl, "%s: problem removing policing", netdev_name);
|
||||
return ECHILD;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Attempts to set input rate limiting (policing) policy. */
|
||||
static int
|
||||
netdev_linux_set_policing(struct netdev *netdev,
|
||||
@@ -1289,19 +1307,14 @@ netdev_linux_set_policing(struct netdev *netdev,
|
||||
char command[1024];
|
||||
|
||||
COVERAGE_INC(netdev_set_policing);
|
||||
|
||||
netdev_linux_remove_policing(netdev);
|
||||
if (kbits_rate) {
|
||||
if (!kbits_burst) {
|
||||
/* Default to 1000 kilobits if not specified. */
|
||||
kbits_burst = 1000;
|
||||
}
|
||||
|
||||
/* xxx This should be more careful about only adding if it
|
||||
* xxx actually exists, as opposed to always deleting it. */
|
||||
snprintf(command, sizeof(command), POLICE_DEL_CMD, netdev_name);
|
||||
if (system(command) == -1) {
|
||||
VLOG_WARN_RL(&rl, "%s: problem removing policing", netdev_name);
|
||||
}
|
||||
|
||||
snprintf(command, sizeof(command), POLICE_ADD_CMD, netdev_name);
|
||||
if (system(command) != 0) {
|
||||
VLOG_WARN_RL(&rl, "%s: problem adding policing", netdev_name);
|
||||
@@ -1315,11 +1328,6 @@ netdev_linux_set_policing(struct netdev *netdev,
|
||||
netdev_name);
|
||||
return -1;
|
||||
}
|
||||
} else {
|
||||
snprintf(command, sizeof(command), POLICE_DEL_CMD, netdev_name);
|
||||
if (system(command) == -1) {
|
||||
VLOG_WARN_RL(&rl, "%s: problem removing policing", netdev_name);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
Reference in New Issue
Block a user