diff options
author | Hangbin Liu <liuhangbin@gmail.com> | 2022-06-21 15:51:05 +0800 |
---|---|---|
committer | David Ahern <dsahern@kernel.org> | 2022-06-26 11:23:19 -0600 |
commit | a10a197d715d9a9671b3c6ea0d26471875754fd7 (patch) | |
tree | 0dec4fc05540a34b6e807daf0a1074f97a1babff | |
parent | 3a2e127fcc1105be7789c0da74c5b16feeedbdda (diff) | |
download | iproute2-a10a197d715d9a9671b3c6ea0d26471875754fd7.tar.gz |
iplink: bond_slave: add per port prio support
Add per port priority support for active slave re-selection during
bonding failover. A higher number means higher priority.
This option is only valid for active-backup(1), balance-tlb (5) and
balance-alb (6) mode.
Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
Acked-by: Jonathan Toppins <jtoppins@redhat.com>
Signed-off-by: David Ahern <dsahern@kernel.org>
-rw-r--r-- | ip/iplink_bond_slave.c | 12 | ||||
-rw-r--r-- | man/man8/ip-link.8.in | 8 |
2 files changed, 19 insertions, 1 deletions
diff --git a/ip/iplink_bond_slave.c b/ip/iplink_bond_slave.c index d488aaab4..8103704bc 100644 --- a/ip/iplink_bond_slave.c +++ b/ip/iplink_bond_slave.c @@ -19,7 +19,7 @@ static void print_explain(FILE *f) { - fprintf(f, "Usage: ... bond_slave [ queue_id ID ]\n"); + fprintf(f, "Usage: ... bond_slave [ queue_id ID ] [ prio PRIORITY ]\n"); } static void explain(void) @@ -120,6 +120,10 @@ static void bond_slave_print_opt(struct link_util *lu, FILE *f, struct rtattr *t "queue_id %d ", rta_getattr_u16(tb[IFLA_BOND_SLAVE_QUEUE_ID])); + if (tb[IFLA_BOND_SLAVE_PRIO]) + print_int(PRINT_ANY, "prio", "prio %d ", + rta_getattr_s32(tb[IFLA_BOND_SLAVE_PRIO])); + if (tb[IFLA_BOND_SLAVE_AD_AGGREGATOR_ID]) print_int(PRINT_ANY, "ad_aggregator_id", @@ -151,6 +155,7 @@ static int bond_slave_parse_opt(struct link_util *lu, int argc, char **argv, struct nlmsghdr *n) { __u16 queue_id; + int prio; while (argc > 0) { if (matches(*argv, "queue_id") == 0) { @@ -158,6 +163,11 @@ static int bond_slave_parse_opt(struct link_util *lu, int argc, char **argv, if (get_u16(&queue_id, *argv, 0)) invarg("queue_id is invalid", *argv); addattr16(n, 1024, IFLA_BOND_SLAVE_QUEUE_ID, queue_id); + } else if (strcmp(*argv, "prio") == 0) { + NEXT_ARG(); + if (get_s32(&prio, *argv, 0)) + invarg("prio is invalid", *argv); + addattr32(n, 1024, IFLA_BOND_SLAVE_PRIO, prio); } else { if (matches(*argv, "help") != 0) fprintf(stderr, diff --git a/man/man8/ip-link.8.in b/man/man8/ip-link.8.in index 6f3326450..3dbcdbb60 100644 --- a/man/man8/ip-link.8.in +++ b/man/man8/ip-link.8.in @@ -2567,6 +2567,8 @@ the following additional arguments are supported: .B "ip link set type bond_slave" [ .BI queue_id " ID" +] [ +.BI prio " PRIORITY" ] .in +8 @@ -2574,6 +2576,12 @@ the following additional arguments are supported: .BI queue_id " ID" - set the slave's queue ID (a 16bit unsigned value). +.sp +.BI prio " PRIORITY" +- set the slave's priority for active slave re-selection during failover +(a 32bit signed value). This option only valid for active-backup(1), +balance-tlb (5) and balance-alb (6) mode. + .in -8 .TP |