Commit b6d77d9e authored by Hiroshi Shimamoto's avatar Hiroshi Shimamoto Committed by Stephen Hemminger

iplink: Support VF Trust

Add IFLA_VF_TRUST message to trust the VF.
PF can accept some privileged operation from the trusted VF.
For example, ixgbe PF doesn't allow to enable VF promiscuous mode until
the VF is trusted because it may hurt performance.

To trust VF.
 # ip link set dev eth0 vf 1 trust on

To untrust VF.
 # ip link set dev eth0 vf 1 trust off
Signed-off-by: default avatarHiroshi Shimamoto <h-shimamoto@ct.jp.nec.com>
parent 8a4cd394
...@@ -82,6 +82,7 @@ void iplink_usage(void) ...@@ -82,6 +82,7 @@ void iplink_usage(void)
fprintf(stderr, " [ spoofchk { on | off} ] ]\n"); fprintf(stderr, " [ spoofchk { on | off} ] ]\n");
fprintf(stderr, " [ query_rss { on | off} ] ]\n"); fprintf(stderr, " [ query_rss { on | off} ] ]\n");
fprintf(stderr, " [ state { auto | enable | disable} ] ]\n"); fprintf(stderr, " [ state { auto | enable | disable} ] ]\n");
fprintf(stderr, " [ trust { on | off} ] ]\n");
fprintf(stderr, " [ master DEVICE ]\n"); fprintf(stderr, " [ master DEVICE ]\n");
fprintf(stderr, " [ nomaster ]\n"); fprintf(stderr, " [ nomaster ]\n");
fprintf(stderr, " [ addrgenmode { eui64 | none | stable_secret | random } ]\n"); fprintf(stderr, " [ addrgenmode { eui64 | none | stable_secret | random } ]\n");
...@@ -356,6 +357,18 @@ static int iplink_parse_vf(int vf, int *argcp, char ***argvp, ...@@ -356,6 +357,18 @@ static int iplink_parse_vf(int vf, int *argcp, char ***argvp,
ivs.vf = vf; ivs.vf = vf;
addattr_l(&req->n, sizeof(*req), IFLA_VF_RSS_QUERY_EN, &ivs, sizeof(ivs)); addattr_l(&req->n, sizeof(*req), IFLA_VF_RSS_QUERY_EN, &ivs, sizeof(ivs));
} else if (matches(*argv, "trust") == 0) {
struct ifla_vf_trust ivt;
NEXT_ARG();
if (matches(*argv, "on") == 0)
ivt.setting = 1;
else if (matches(*argv, "off") == 0)
ivt.setting = 0;
else
invarg("Invalid \"trust\" value\n", *argv);
ivt.vf = vf;
addattr_l(&req->n, sizeof(*req), IFLA_VF_TRUST, &ivt, sizeof(ivt));
} else if (matches(*argv, "state") == 0) { } else if (matches(*argv, "state") == 0) {
struct ifla_vf_link_state ivl; struct ifla_vf_link_state ivl;
......
...@@ -142,7 +142,8 @@ ip-link \- network device configuration ...@@ -142,7 +142,8 @@ ip-link \- network device configuration
.B min_tx_rate .B min_tx_rate
.IR TXRATE " ] [" .IR TXRATE " ] ["
.B spoofchk { on | off } ] [ .B spoofchk { on | off } ] [
.B state { auto | enable | disable} .B state { auto | enable | disable} ] [
.B trust { on | off }
] | ] |
.br .br
.B master .B master
...@@ -1019,6 +1020,10 @@ parameter must be specified. ...@@ -1019,6 +1020,10 @@ parameter must be specified.
reflection of the PF link state, enable lets the VF to communicate with other VFs on reflection of the PF link state, enable lets the VF to communicate with other VFs on
this host even if the PF link state is down, disable causes the HW to drop any packets this host even if the PF link state is down, disable causes the HW to drop any packets
sent by the VF. sent by the VF.
.sp
.BI trust " on|off"
- trust the specified VF user. This enables that VF user can set a specific feature
which may impact security and/or performance. (e.g. VF multicast promiscuous mode)
.in -8 .in -8
.TP .TP
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment