netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH iproute2 0/5] Eliminate the term slave in iproute2
@ 2020-06-23 23:53 Stephen Hemminger
  2020-06-23 23:53 ` [PATCH iproute2 1/5] bpf: replace slave with sub Stephen Hemminger
                   ` (6 more replies)
  0 siblings, 7 replies; 9+ messages in thread
From: Stephen Hemminger @ 2020-06-23 23:53 UTC (permalink / raw)
  To: netdev; +Cc: Stephen Hemminger

These patches remove the term slave from the iproute2 visible
command line, documentation, and variable naming.

This needs doing despite the fact it will cause cosmetic
changes to visible outputs.

Stephen Hemminger (5):
  bpf: replace slave with sub
  bridge: remove slave from comments and message
  testsuite: replace Enslave with Insert
  ip: replace slave_kind
  ip: rename slave to subport

 bridge/vlan.c                                 |  4 +-
 ip/Makefile                                   |  4 +-
 ip/ip_common.h                                |  2 +-
 ip/ipaddress.c                                | 44 ++++++++--------
 ip/iplink.c                                   |  4 +-
 ip/iplink_bond.c                              | 44 ++++++++--------
 ...ink_bond_slave.c => iplink_bond_subport.c} | 48 ++++++++---------
 ...bridge_slave.c => iplink_bridge_subport.c} | 52 +++++++++----------
 ip/iplink_hsr.c                               | 20 +++----
 ip/iplink_team.c                              | 10 ++--
 ip/iplink_vrf.c                               |  8 +--
 ip/iplink_xstats.c                            |  2 +-
 lib/bpf.c                                     |  8 +--
 lib/namespace.c                               |  2 +-
 man/man8/ip-address.8.in                      |  8 +--
 man/man8/ip-link.8.in                         | 26 +++++-----
 man/man8/ip-nexthop.8                         |  2 +-
 testsuite/tests/bridge/vlan/show.t            |  4 +-
 testsuite/tests/bridge/vlan/tunnelshow.t      |  4 +-
 19 files changed, 148 insertions(+), 148 deletions(-)
 rename ip/{iplink_bond_slave.c => iplink_bond_subport.c} (74%)
 rename ip/{iplink_bridge_slave.c => iplink_bridge_subport.c} (88%)

-- 
2.26.2


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH iproute2 1/5] bpf: replace slave with sub
  2020-06-23 23:53 [PATCH iproute2 0/5] Eliminate the term slave in iproute2 Stephen Hemminger
@ 2020-06-23 23:53 ` Stephen Hemminger
  2020-06-23 23:53 ` [PATCH iproute2 2/5] bridge: remove slave from comments and message Stephen Hemminger
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 9+ messages in thread
From: Stephen Hemminger @ 2020-06-23 23:53 UTC (permalink / raw)
  To: netdev; +Cc: Stephen Hemminger

The term sub interface is more appropriate for bpf devices.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/bpf.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/lib/bpf.c b/lib/bpf.c
index c7d45077c14e..9271e169a992 100644
--- a/lib/bpf.c
+++ b/lib/bpf.c
@@ -666,7 +666,7 @@ static int bpf_gen_master(const char *base, const char *name)
 	return bpf_gen_global(bpf_sub_dir);
 }
 
-static int bpf_slave_via_bind_mnt(const char *full_name,
+static int bpf_sub_via_bind_mnt(const char *full_name,
 				  const char *full_link)
 {
 	int ret;
@@ -689,7 +689,7 @@ static int bpf_slave_via_bind_mnt(const char *full_name,
 	return ret;
 }
 
-static int bpf_gen_slave(const char *base, const char *name,
+static int bpf_gen_sub(const char *base, const char *name,
 			 const char *link)
 {
 	char bpf_lnk_dir[PATH_MAX + NAME_MAX + 1];
@@ -709,7 +709,7 @@ static int bpf_gen_slave(const char *base, const char *name,
 				return ret;
 			}
 
-			return bpf_slave_via_bind_mnt(bpf_sub_dir,
+			return bpf_sub_via_bind_mnt(bpf_sub_dir,
 						      bpf_lnk_dir);
 		}
 
@@ -733,7 +733,7 @@ static int bpf_gen_hierarchy(const char *base)
 
 	ret = bpf_gen_master(base, bpf_prog_to_subdir(__bpf_types[0]));
 	for (i = 1; i < ARRAY_SIZE(__bpf_types) && !ret; i++)
-		ret = bpf_gen_slave(base,
+		ret = bpf_gen_sub(base,
 				    bpf_prog_to_subdir(__bpf_types[i]),
 				    bpf_prog_to_subdir(__bpf_types[0]));
 	return ret;
-- 
2.26.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH iproute2 2/5] bridge: remove slave from comments and message
  2020-06-23 23:53 [PATCH iproute2 0/5] Eliminate the term slave in iproute2 Stephen Hemminger
  2020-06-23 23:53 ` [PATCH iproute2 1/5] bpf: replace slave with sub Stephen Hemminger
@ 2020-06-23 23:53 ` Stephen Hemminger
  2020-06-23 23:53 ` [PATCH iproute2 3/5] testsuite: replace Enslave with Insert Stephen Hemminger
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 9+ messages in thread
From: Stephen Hemminger @ 2020-06-23 23:53 UTC (permalink / raw)
  To: netdev; +Cc: Stephen Hemminger

No need for slave in comment and message.
Can't change API (yet) since part of Linux uapi.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 bridge/vlan.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/bridge/vlan.c b/bridge/vlan.c
index 0d142bc9055d..9128769eaf3d 100644
--- a/bridge/vlan.c
+++ b/bridge/vlan.c
@@ -469,7 +469,7 @@ static void print_vlan_stats_attr(struct rtattr *attr, int ifindex)
 		if (filter_vlan && filter_vlan != vstats->vid)
 			continue;
 
-		/* skip pure port entries, they'll be dumped via the slave stats call */
+		/* skip pure port entries, they'll be dumped via the port stats call */
 		if ((vstats->flags & BRIDGE_VLAN_INFO_MASTER) &&
 		    !(vstats->flags & BRIDGE_VLAN_INFO_BRENTRY))
 			continue;
@@ -592,7 +592,7 @@ static int vlan_show(int argc, char **argv, int subject)
 
 		filt_mask = IFLA_STATS_FILTER_BIT(IFLA_STATS_LINK_XSTATS_SLAVE);
 		if (rtnl_statsdump_req_filter(&rth, AF_UNSPEC, filt_mask) < 0) {
-			perror("Cannot send slave dump request");
+			perror("Cannot send port stats dump request");
 			exit(1);
 		}
 
-- 
2.26.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH iproute2 3/5] testsuite: replace Enslave with Insert
  2020-06-23 23:53 [PATCH iproute2 0/5] Eliminate the term slave in iproute2 Stephen Hemminger
  2020-06-23 23:53 ` [PATCH iproute2 1/5] bpf: replace slave with sub Stephen Hemminger
  2020-06-23 23:53 ` [PATCH iproute2 2/5] bridge: remove slave from comments and message Stephen Hemminger
@ 2020-06-23 23:53 ` Stephen Hemminger
  2020-06-23 23:53 ` [PATCH iproute2 4/5] ip: replace slave_kind Stephen Hemminger
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 9+ messages in thread
From: Stephen Hemminger @ 2020-06-23 23:53 UTC (permalink / raw)
  To: netdev; +Cc: Stephen Hemminger

Use the term insert instead of enslave because it is
more descriptive and less offensive.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 testsuite/tests/bridge/vlan/show.t       | 4 ++--
 testsuite/tests/bridge/vlan/tunnelshow.t | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/testsuite/tests/bridge/vlan/show.t b/testsuite/tests/bridge/vlan/show.t
index 3def202226a4..1f0ac9a9870b 100755
--- a/testsuite/tests/bridge/vlan/show.t
+++ b/testsuite/tests/bridge/vlan/show.t
@@ -12,13 +12,13 @@ ts_ip "$0" "Add $BR_DEV bridge interface" link add $BR_DEV type bridge
 
 ts_ip "$0" "Add $VX0_DEV vxlan interface" \
 	link add $VX0_DEV type vxlan dstport 4789 external
-ts_ip "$0" "Enslave $VX0_DEV under $BR_DEV" \
+ts_ip "$0" "Insert $VX0_DEV under $BR_DEV" \
 	link set dev $VX0_DEV master $BR_DEV
 ts_bridge "$0" "Delete default vlan from $VX0_DEV" \
 	vlan del dev $VX0_DEV vid 1
 ts_ip "$0" "Add $VX1_DEV vxlan interface" \
 	link add $VX1_DEV type vxlan dstport 4790 external
-ts_ip "$0" "Enslave $VX1_DEV under $BR_DEV" \
+ts_ip "$0" "Insert $VX1_DEV under $BR_DEV" \
 	link set dev $VX1_DEV master $BR_DEV
 
 # Test that bridge ports without vlans do not appear in the output
diff --git a/testsuite/tests/bridge/vlan/tunnelshow.t b/testsuite/tests/bridge/vlan/tunnelshow.t
index 3e9c12a21a9c..2cec8d03b47a 100755
--- a/testsuite/tests/bridge/vlan/tunnelshow.t
+++ b/testsuite/tests/bridge/vlan/tunnelshow.t
@@ -11,7 +11,7 @@ ts_ip "$0" "Add $BR_DEV bridge interface" link add $BR_DEV type bridge
 
 ts_ip "$0" "Add $VX_DEV vxlan interface" \
 	link add $VX_DEV type vxlan dstport 4789 external
-ts_ip "$0" "Enslave $VX_DEV under $BR_DEV" \
+ts_ip "$0" "Insert $VX_DEV under $BR_DEV" \
 	link set dev $VX_DEV master $BR_DEV
 ts_ip "$0" "Set vlan_tunnel on $VX_DEV" \
 	link set dev $VX_DEV type bridge_slave vlan_tunnel on
-- 
2.26.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH iproute2 4/5] ip: replace slave_kind
  2020-06-23 23:53 [PATCH iproute2 0/5] Eliminate the term slave in iproute2 Stephen Hemminger
                   ` (2 preceding siblings ...)
  2020-06-23 23:53 ` [PATCH iproute2 3/5] testsuite: replace Enslave with Insert Stephen Hemminger
@ 2020-06-23 23:53 ` Stephen Hemminger
  2020-06-23 23:53 ` [PATCH iproute2 5/5] ip: rename slave to subport Stephen Hemminger
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 9+ messages in thread
From: Stephen Hemminger @ 2020-06-23 23:53 UTC (permalink / raw)
  To: netdev; +Cc: Stephen Hemminger

Instead of slave_kind, rename variable to sub_kind
to describe the kind of sub-device that is being looked for
when filtering messages.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 ip/ip_common.h | 2 +-
 ip/ipaddress.c | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/ip/ip_common.h b/ip/ip_common.h
index d604f7554405..7d0c9f57745a 100644
--- a/ip/ip_common.h
+++ b/ip/ip_common.h
@@ -23,7 +23,7 @@ struct link_filter {
 	int group;
 	int master;
 	char *kind;
-	char *slave_kind;
+	char *sub_kind;
 	int target_nsid;
 };
 
diff --git a/ip/ipaddress.c b/ip/ipaddress.c
index f97eaff3dbbf..4cbff38c9834 100644
--- a/ip/ipaddress.c
+++ b/ip/ipaddress.c
@@ -924,7 +924,7 @@ int print_linkinfo(struct nlmsghdr *n, void *arg)
 	if (filter.kind && match_link_kind(tb, filter.kind, 0))
 		return -1;
 
-	if (filter.slave_kind && match_link_kind(tb, filter.slave_kind, 1))
+	if (filter.sub_kind && match_link_kind(tb, filter.sub_kind, 1))
 		return -1;
 
 	if (n->nlmsg_type == RTM_DELLINK)
@@ -2012,7 +2012,7 @@ static int ipaddr_list_flush_or_save(int argc, char **argv, int action)
 			soff = strlen(*argv) - strlen("_slave");
 			if (!strcmp(*argv + soff, "_slave")) {
 				(*argv)[soff] = '\0';
-				filter.slave_kind = *argv;
+				filter.sub_kind = *argv;
 			} else {
 				filter.kind = *argv;
 			}
-- 
2.26.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH iproute2 5/5] ip: rename slave to subport
  2020-06-23 23:53 [PATCH iproute2 0/5] Eliminate the term slave in iproute2 Stephen Hemminger
                   ` (3 preceding siblings ...)
  2020-06-23 23:53 ` [PATCH iproute2 4/5] ip: replace slave_kind Stephen Hemminger
@ 2020-06-23 23:53 ` Stephen Hemminger
  2020-06-24  0:12 ` [PATCH iproute2 0/5] Eliminate the term slave in iproute2 Jakub Kicinski
  2020-06-24  9:51 ` Michal Kubecek
  6 siblings, 0 replies; 9+ messages in thread
From: Stephen Hemminger @ 2020-06-23 23:53 UTC (permalink / raw)
  To: netdev; +Cc: Stephen Hemminger

Replace use of slave by subport in bridge/bond/team/vrf and hsr.
The word slave is unnecessarily hostile and is not used in
any of the relevant standards from IETF or IEEE.

Use the term subport across the iproute2 command set instead.

Patches to keep old term on input with nag warnings are
underconsideration.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 ip/Makefile                                   |  4 +-
 ip/ip_common.h                                |  2 +-
 ip/ipaddress.c                                | 44 ++++++++--------
 ip/iplink.c                                   |  4 +-
 ip/iplink_bond.c                              | 44 ++++++++--------
 ...ink_bond_slave.c => iplink_bond_subport.c} | 48 ++++++++---------
 ...bridge_slave.c => iplink_bridge_subport.c} | 52 +++++++++----------
 ip/iplink_hsr.c                               | 20 +++----
 ip/iplink_team.c                              | 10 ++--
 ip/iplink_vrf.c                               |  8 +--
 ip/iplink_xstats.c                            |  2 +-
 lib/namespace.c                               |  2 +-
 man/man8/ip-address.8.in                      |  8 +--
 man/man8/ip-link.8.in                         | 26 +++++-----
 man/man8/ip-nexthop.8                         |  2 +-
 testsuite/tests/bridge/vlan/tunnelshow.t      |  2 +-
 16 files changed, 139 insertions(+), 139 deletions(-)
 rename ip/{iplink_bond_slave.c => iplink_bond_subport.c} (74%)
 rename ip/{iplink_bridge_slave.c => iplink_bridge_subport.c} (88%)

diff --git a/ip/Makefile b/ip/Makefile
index 8735b8e4706b..8a43e37b0654 100644
--- a/ip/Makefile
+++ b/ip/Makefile
@@ -7,8 +7,8 @@ IPOBJ=ip.o ipaddress.o ipaddrlabel.o iproute.o iprule.o ipnetns.o \
     iplink_vlan.o link_veth.o link_gre.o iplink_can.o iplink_xdp.o \
     iplink_macvlan.o ipl2tp.o link_vti.o link_vti6.o link_xfrm.o \
     iplink_vxlan.o tcp_metrics.o iplink_ipoib.o ipnetconf.o link_ip6tnl.o \
-    link_iptnl.o link_gre6.o iplink_bond.o iplink_bond_slave.o iplink_hsr.o \
-    iplink_bridge.o iplink_bridge_slave.o ipfou.o iplink_ipvlan.o \
+    link_iptnl.o link_gre6.o iplink_bond.o iplink_bond_subport.o iplink_hsr.o \
+    iplink_bridge.o iplink_bridge_subport.o ipfou.o iplink_ipvlan.o \
     iplink_geneve.o iplink_vrf.o iproute_lwtunnel.o ipmacsec.o ipila.o \
     ipvrf.o iplink_xstats.o ipseg6.o iplink_netdevsim.o iplink_rmnet.o \
     ipnexthop.o ipmptcp.o
diff --git a/ip/ip_common.h b/ip/ip_common.h
index 7d0c9f57745a..cf6710a2f5c2 100644
--- a/ip/ip_common.h
+++ b/ip/ip_common.h
@@ -23,7 +23,7 @@ struct link_filter {
 	int group;
 	int master;
 	char *kind;
-	char *sub_kind;
+	char *subport_kind;
 	int target_nsid;
 };
 
diff --git a/ip/ipaddress.c b/ip/ipaddress.c
index 4cbff38c9834..26cfd30b2c8c 100644
--- a/ip/ipaddress.c
+++ b/ip/ipaddress.c
@@ -78,7 +78,7 @@ static void usage(void)
 		"TYPE := { vlan | veth | vcan | vxcan | dummy | ifb | macvlan | macvtap |\n"
 		"          bridge | bond | ipoib | ip6tnl | ipip | sit | vxlan | lowpan |\n"
 		"          gre | gretap | erspan | ip6gre | ip6gretap | ip6erspan | vti |\n"
-		"          nlmon | can | bond_slave | ipvlan | geneve | bridge_slave |\n"
+		"          nlmon | can | bond_subport | ipvlan | geneve | bridge_subport |\n"
 		"          hsr | macsec | netdevsim }\n");
 
 	exit(-1);
@@ -209,10 +209,10 @@ static void print_linkmode(FILE *f, struct rtattr *tb)
 			     , link_modes[mode]);
 }
 
-static char *parse_link_kind(struct rtattr *tb, bool slave)
+static char *parse_link_kind(struct rtattr *tb, bool subport)
 {
 	struct rtattr *linkinfo[IFLA_INFO_MAX+1];
-	int attr = slave ? IFLA_INFO_SLAVE_KIND : IFLA_INFO_KIND;
+	int attr = subport ? IFLA_INFO_SLAVE_KIND : IFLA_INFO_KIND;
 
 	parse_rtattr_nested(linkinfo, IFLA_INFO_MAX, tb);
 
@@ -222,20 +222,20 @@ static char *parse_link_kind(struct rtattr *tb, bool slave)
 	return "";
 }
 
-static int match_link_kind(struct rtattr **tb, const char *kind, bool slave)
+static int match_link_kind(struct rtattr **tb, const char *kind, bool subport)
 {
 	if (!tb[IFLA_LINKINFO])
 		return -1;
 
-	return strcmp(parse_link_kind(tb[IFLA_LINKINFO], slave), kind);
+	return strcmp(parse_link_kind(tb[IFLA_LINKINFO], subport), kind);
 }
 
 static void print_linktype(FILE *fp, struct rtattr *tb)
 {
 	struct rtattr *linkinfo[IFLA_INFO_MAX+1];
 	struct link_util *lu;
-	struct link_util *slave_lu;
-	char slave[32];
+	struct link_util *subport_lu;
+	char subport[32];
 
 	parse_rtattr_nested(linkinfo, IFLA_INFO_MAX, tb);
 	open_json_object("linkinfo");
@@ -270,28 +270,28 @@ static void print_linktype(FILE *fp, struct rtattr *tb)
 	}
 
 	if (linkinfo[IFLA_INFO_SLAVE_KIND]) {
-		const char *slave_kind
+		const char *subport_kind
 			= rta_getattr_str(linkinfo[IFLA_INFO_SLAVE_KIND]);
 
 		print_nl();
 		print_string(PRINT_ANY,
-			     "info_slave_kind",
-			     "    %s_slave ",
-			     slave_kind);
+			     "info_subport_kind",
+			     "    %s_subport ",
+			     subport_kind);
 
-		snprintf(slave, sizeof(slave), "%s_slave", slave_kind);
+		snprintf(subport, sizeof(subport), "%s_subport", subport_kind);
 
-		slave_lu = get_link_kind(slave);
-		if (slave_lu && slave_lu->print_opt) {
-			struct rtattr *attr[slave_lu->maxattr+1], **data = NULL;
+		subport_lu = get_link_kind(subport);
+		if (subport_lu && subport_lu->print_opt) {
+			struct rtattr *attr[subport_lu->maxattr+1], **data = NULL;
 
 			if (linkinfo[IFLA_INFO_SLAVE_DATA]) {
-				parse_rtattr_nested(attr, slave_lu->maxattr,
+				parse_rtattr_nested(attr, subport_lu->maxattr,
 						    linkinfo[IFLA_INFO_SLAVE_DATA]);
 				data = attr;
 			}
-			open_json_object("info_slave_data");
-			slave_lu->print_opt(slave_lu, fp, data);
+			open_json_object("info_subport_data");
+			subport_lu->print_opt(subport_lu, fp, data);
 			close_json_object();
 		}
 	}
@@ -924,7 +924,7 @@ int print_linkinfo(struct nlmsghdr *n, void *arg)
 	if (filter.kind && match_link_kind(tb, filter.kind, 0))
 		return -1;
 
-	if (filter.sub_kind && match_link_kind(tb, filter.sub_kind, 1))
+	if (filter.subport_kind && match_link_kind(tb, filter.subport_kind, 1))
 		return -1;
 
 	if (n->nlmsg_type == RTM_DELLINK)
@@ -2009,10 +2009,10 @@ static int ipaddr_list_flush_or_save(int argc, char **argv, int action)
 			int soff;
 
 			NEXT_ARG();
-			soff = strlen(*argv) - strlen("_slave");
-			if (!strcmp(*argv + soff, "_slave")) {
+			soff = strlen(*argv) - strlen("_subport");
+			if (!strcmp(*argv + soff, "_subport")) {
 				(*argv)[soff] = '\0';
-				filter.sub_kind = *argv;
+				filter.subport_kind = *argv;
 			} else {
 				filter.kind = *argv;
 			}
diff --git a/ip/iplink.c b/ip/iplink.c
index 47f73988c2d5..722416ffc43d 100644
--- a/ip/iplink.c
+++ b/ip/iplink.c
@@ -123,7 +123,7 @@ void iplink_usage(void)
 			"TYPE := { vlan | veth | vcan | vxcan | dummy | ifb | macvlan | macvtap |\n"
 			"	   bridge | bond | team | ipoib | ip6tnl | ipip | sit | vxlan |\n"
 			"	   gre | gretap | erspan | ip6gre | ip6gretap | ip6erspan |\n"
-			"	   vti | nlmon | team_slave | bond_slave | bridge_slave |\n"
+			"	   vti | nlmon | team_subport | bond_subport | bridge_subport |\n"
 			"	   ipvlan | ipvtap | geneve | vrf | macsec | netdevsim | rmnet |\n"
 			"	   xfrm }\n");
 	}
@@ -1052,7 +1052,7 @@ static int iplink_modify(int cmd, unsigned int flags, int argc, char **argv)
 			 strlen(type));
 
 		lu = get_link_kind(type);
-		if (ulinep && !strcmp(ulinep, "_slave"))
+		if (ulinep && !strcmp(ulinep, "_subport"))
 			iflatype = IFLA_INFO_SLAVE_DATA;
 		else
 			iflatype = IFLA_INFO_DATA;
diff --git a/ip/iplink_bond.c b/ip/iplink_bond.c
index 585b6be14c81..33c99a311e18 100644
--- a/ip/iplink_bond.c
+++ b/ip/iplink_bond.c
@@ -117,8 +117,8 @@ static int get_index(const char **tbl, char *name)
 static void print_explain(FILE *f)
 {
 	fprintf(f,
-		"Usage: ... bond [ mode BONDMODE ] [ active_slave SLAVE_DEV ]\n"
-		"                [ clear_active_slave ] [ miimon MIIMON ]\n"
+		"Usage: ... bond [ mode BONDMODE ] [ active_subport SLAVE_DEV ]\n"
+		"                [ clear_active_subport ] [ miimon MIIMON ]\n"
 		"                [ updelay UPDELAY ] [ downdelay DOWNDELAY ]\n"
 		"                [ peer_notify_delay DELAY ]\n"
 		"                [ use_carrier USE_CARRIER ]\n"
@@ -132,10 +132,10 @@ static void print_explain(FILE *f)
 		"                [ xmit_hash_policy XMIT_HASH_POLICY ]\n"
 		"                [ resend_igmp RESEND_IGMP ]\n"
 		"                [ num_grat_arp|num_unsol_na NUM_GRAT_ARP|NUM_UNSOL_NA ]\n"
-		"                [ all_slaves_active ALL_SLAVES_ACTIVE ]\n"
+		"                [ all_subports_active ALL_SLAVES_ACTIVE ]\n"
 		"                [ min_links MIN_LINKS ]\n"
 		"                [ lp_interval LP_INTERVAL ]\n"
-		"                [ packets_per_slave PACKETS_PER_SLAVE ]\n"
+		"                [ packets_per_subport PACKETS_PER_SLAVE ]\n"
 		"                [ tlb_dynamic_lb TLB_DYNAMIC_LB ]\n"
 		"                [ lacp_rate LACP_RATE ]\n"
 		"                [ ad_select AD_SELECT ]\n"
@@ -163,12 +163,12 @@ static int bond_parse_opt(struct link_util *lu, int argc, char **argv,
 			  struct nlmsghdr *n)
 {
 	__u8 mode, use_carrier, primary_reselect, fail_over_mac;
-	__u8 xmit_hash_policy, num_peer_notif, all_slaves_active;
+	__u8 xmit_hash_policy, num_peer_notif, all_subports_active;
 	__u8 lacp_rate, ad_select, tlb_dynamic_lb;
 	__u16 ad_user_port_key, ad_actor_sys_prio;
 	__u32 miimon, updelay, downdelay, peer_notify_delay, arp_interval, arp_validate;
 	__u32 arp_all_targets, resend_igmp, min_links, lp_interval;
-	__u32 packets_per_slave;
+	__u32 packets_per_subport;
 	unsigned int ifindex;
 
 	while (argc > 0) {
@@ -178,13 +178,13 @@ static int bond_parse_opt(struct link_util *lu, int argc, char **argv,
 				invarg("invalid mode", *argv);
 			mode = get_index(mode_tbl, *argv);
 			addattr8(n, 1024, IFLA_BOND_MODE, mode);
-		} else if (matches(*argv, "active_slave") == 0) {
+		} else if (matches(*argv, "active_subport") == 0) {
 			NEXT_ARG();
 			ifindex = ll_name_to_index(*argv);
 			if (!ifindex)
 				return nodev(*argv);
 			addattr32(n, 1024, IFLA_BOND_ACTIVE_SLAVE, ifindex);
-		} else if (matches(*argv, "clear_active_slave") == 0) {
+		} else if (matches(*argv, "clear_active_subport") == 0) {
 			addattr32(n, 1024, IFLA_BOND_ACTIVE_SLAVE, 0);
 		} else if (matches(*argv, "miimon") == 0) {
 			NEXT_ARG();
@@ -289,13 +289,13 @@ static int bond_parse_opt(struct link_util *lu, int argc, char **argv,
 
 			addattr8(n, 1024, IFLA_BOND_NUM_PEER_NOTIF,
 				 num_peer_notif);
-		} else if (matches(*argv, "all_slaves_active") == 0) {
+		} else if (matches(*argv, "all_subports_active") == 0) {
 			NEXT_ARG();
-			if (get_u8(&all_slaves_active, *argv, 0))
-				invarg("invalid all_slaves_active", *argv);
+			if (get_u8(&all_subports_active, *argv, 0))
+				invarg("invalid all_subports_active", *argv);
 
 			addattr8(n, 1024, IFLA_BOND_ALL_SLAVES_ACTIVE,
-				 all_slaves_active);
+				 all_subports_active);
 		} else if (matches(*argv, "min_links") == 0) {
 			NEXT_ARG();
 			if (get_u32(&min_links, *argv, 0))
@@ -308,13 +308,13 @@ static int bond_parse_opt(struct link_util *lu, int argc, char **argv,
 				invarg("invalid lp_interval", *argv);
 
 			addattr32(n, 1024, IFLA_BOND_LP_INTERVAL, lp_interval);
-		} else if (matches(*argv, "packets_per_slave") == 0) {
+		} else if (matches(*argv, "packets_per_subport") == 0) {
 			NEXT_ARG();
-			if (get_u32(&packets_per_slave, *argv, 0))
-				invarg("invalid packets_per_slave", *argv);
+			if (get_u32(&packets_per_subport, *argv, 0))
+				invarg("invalid packets_per_subport", *argv);
 
 			addattr32(n, 1024, IFLA_BOND_PACKETS_PER_SLAVE,
-				  packets_per_slave);
+				  packets_per_subport);
 		} else if (matches(*argv, "lacp_rate") == 0) {
 			NEXT_ARG();
 			if (get_index(lacp_rate_tbl, *argv) < 0)
@@ -392,8 +392,8 @@ static void bond_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
 
 		if (ifindex) {
 			print_string(PRINT_ANY,
-				     "active_slave",
-				     "active_slave %s ",
+				     "active_subport",
+				     "active_subport %s ",
 				     ll_index_to_name(ifindex));
 		}
 	}
@@ -538,8 +538,8 @@ static void bond_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
 
 	if (tb[IFLA_BOND_ALL_SLAVES_ACTIVE])
 		print_uint(PRINT_ANY,
-			   "all_slaves_active",
-			   "all_slaves_active %u ",
+			   "all_subports_active",
+			   "all_subports_active %u ",
 			   rta_getattr_u8(tb[IFLA_BOND_ALL_SLAVES_ACTIVE]));
 
 	if (tb[IFLA_BOND_MIN_LINKS])
@@ -556,8 +556,8 @@ static void bond_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
 
 	if (tb[IFLA_BOND_PACKETS_PER_SLAVE])
 		print_uint(PRINT_ANY,
-			   "packets_per_slave",
-			   "packets_per_slave %u ",
+			   "packets_per_subport",
+			   "packets_per_subport %u ",
 			   rta_getattr_u32(tb[IFLA_BOND_PACKETS_PER_SLAVE]));
 
 	if (tb[IFLA_BOND_AD_LACP_RATE]) {
diff --git a/ip/iplink_bond_slave.c b/ip/iplink_bond_subport.c
similarity index 74%
rename from ip/iplink_bond_slave.c
rename to ip/iplink_bond_subport.c
index d488aaab4fef..4c6cc71f2357 100644
--- a/ip/iplink_bond_slave.c
+++ b/ip/iplink_bond_subport.c
@@ -1,5 +1,5 @@
 /*
- * iplink_bond_slave.c	Bonding slave device support
+ * iplink_bond_subport.c	Bonding subport device support
  *
  *              This program is free software; you can redistribute it and/or
  *              modify it under the terms of the GNU General Public License
@@ -19,7 +19,7 @@
 
 static void print_explain(FILE *f)
 {
-	fprintf(f, "Usage: ... bond_slave [ queue_id ID ]\n");
+	fprintf(f, "Usage: ... bond_subport [ queue_id ID ]\n");
 }
 
 static void explain(void)
@@ -27,36 +27,36 @@ static void explain(void)
 	print_explain(stderr);
 }
 
-static const char *slave_states[] = {
+static const char *subport_states[] = {
 	[BOND_STATE_ACTIVE] = "ACTIVE",
 	[BOND_STATE_BACKUP] = "BACKUP",
 };
 
-static void print_slave_state(FILE *f, struct rtattr *tb)
+static void print_subport_state(FILE *f, struct rtattr *tb)
 {
 	unsigned int state = rta_getattr_u8(tb);
 
-	if (state >= ARRAY_SIZE(slave_states))
+	if (state >= ARRAY_SIZE(subport_states))
 		print_int(PRINT_ANY, "state_index", "state %d ", state);
 	else
 		print_string(PRINT_ANY,
 			     "state",
 			     "state %s ",
-			     slave_states[state]);
+			     subport_states[state]);
 }
 
-static const char *slave_mii_status[] = {
+static const char *subport_mii_status[] = {
 	[BOND_LINK_UP] = "UP",
 	[BOND_LINK_FAIL] = "GOING_DOWN",
 	[BOND_LINK_DOWN] = "DOWN",
 	[BOND_LINK_BACK] = "GOING_BACK",
 };
 
-static void print_slave_mii_status(FILE *f, struct rtattr *tb)
+static void print_subport_mii_status(FILE *f, struct rtattr *tb)
 {
 	unsigned int status = rta_getattr_u8(tb);
 
-	if (status >= ARRAY_SIZE(slave_mii_status))
+	if (status >= ARRAY_SIZE(subport_mii_status))
 		print_int(PRINT_ANY,
 			  "mii_status_index",
 			  "mii_status %d ",
@@ -65,10 +65,10 @@ static void print_slave_mii_status(FILE *f, struct rtattr *tb)
 		print_string(PRINT_ANY,
 			     "mii_status",
 			     "mii_status %s ",
-			     slave_mii_status[status]);
+			     subport_mii_status[status]);
 }
 
-static void print_slave_oper_state(FILE *fp, const char *name, __u16 state)
+static void print_subport_oper_state(FILE *fp, const char *name, __u16 state)
 {
 	open_json_array(PRINT_ANY, name);
 	print_string(PRINT_FP, NULL, " <", NULL);
@@ -88,17 +88,17 @@ static void print_slave_oper_state(FILE *fp, const char *name, __u16 state)
 	close_json_array(PRINT_ANY, "> ");
 }
 
-static void bond_slave_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
+static void bond_subport_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
 {
 	SPRINT_BUF(b1);
 	if (!tb)
 		return;
 
 	if (tb[IFLA_BOND_SLAVE_STATE])
-		print_slave_state(f, tb[IFLA_BOND_SLAVE_STATE]);
+		print_subport_state(f, tb[IFLA_BOND_SLAVE_STATE]);
 
 	if (tb[IFLA_BOND_SLAVE_MII_STATUS])
-		print_slave_mii_status(f, tb[IFLA_BOND_SLAVE_MII_STATUS]);
+		print_subport_mii_status(f, tb[IFLA_BOND_SLAVE_MII_STATUS]);
 
 	if (tb[IFLA_BOND_SLAVE_LINK_FAILURE_COUNT])
 		print_int(PRINT_ANY,
@@ -133,7 +133,7 @@ static void bond_slave_print_opt(struct link_util *lu, FILE *f, struct rtattr *t
 			  "ad_actor_oper_port_state",
 			  "ad_actor_oper_port_state %d ",
 			  state);
-		print_slave_oper_state(f, "ad_actor_oper_port_state_str", state);
+		print_subport_oper_state(f, "ad_actor_oper_port_state_str", state);
 	}
 
 	if (tb[IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE]) {
@@ -143,11 +143,11 @@ static void bond_slave_print_opt(struct link_util *lu, FILE *f, struct rtattr *t
 			  "ad_partner_oper_port_state",
 			  "ad_partner_oper_port_state %d ",
 			  state);
-		print_slave_oper_state(f, "ad_partner_oper_port_state_str", state);
+		print_subport_oper_state(f, "ad_partner_oper_port_state_str", state);
 	}
 }
 
-static int bond_slave_parse_opt(struct link_util *lu, int argc, char **argv,
+static int bond_subport_parse_opt(struct link_util *lu, int argc, char **argv,
 				struct nlmsghdr *n)
 {
 	__u16 queue_id;
@@ -161,7 +161,7 @@ static int bond_slave_parse_opt(struct link_util *lu, int argc, char **argv,
 		} else {
 			if (matches(*argv, "help") != 0)
 				fprintf(stderr,
-					"bond_slave: unknown option \"%s\"?\n",
+					"bond_subport: unknown option \"%s\"?\n",
 					*argv);
 			explain();
 			return -1;
@@ -172,18 +172,18 @@ static int bond_slave_parse_opt(struct link_util *lu, int argc, char **argv,
 	return 0;
 }
 
-static void bond_slave_print_help(struct link_util *lu, int argc, char **argv,
+static void bond_subport_print_help(struct link_util *lu, int argc, char **argv,
 				  FILE *f)
 {
 	print_explain(f);
 }
 
-struct link_util bond_slave_link_util = {
-	.id		= "bond_slave",
+struct link_util bond_subport_link_util = {
+	.id		= "bond_subport",
 	.maxattr	= IFLA_BOND_SLAVE_MAX,
-	.print_opt	= bond_slave_print_opt,
-	.parse_opt	= bond_slave_parse_opt,
-	.print_help	= bond_slave_print_help,
+	.print_opt	= bond_subport_print_opt,
+	.parse_opt	= bond_subport_parse_opt,
+	.print_help	= bond_subport_print_help,
 	.parse_ifla_xstats = bond_parse_xstats,
 	.print_ifla_xstats = bond_print_xstats,
 };
diff --git a/ip/iplink_bridge_slave.c b/ip/iplink_bridge_subport.c
similarity index 88%
rename from ip/iplink_bridge_slave.c
rename to ip/iplink_bridge_subport.c
index 79a1d2f5f5b8..68a31e939fc4 100644
--- a/ip/iplink_bridge_slave.c
+++ b/ip/iplink_bridge_subport.c
@@ -1,5 +1,5 @@
 /*
- * iplink_bridge_slave.c	Bridge slave device support
+ * iplink_bridge_subport.c	Bridge subport device support
  *
  *              This program is free software; you can redistribute it and/or
  *              modify it under the terms of the GNU General Public License
@@ -22,7 +22,7 @@
 static void print_explain(FILE *f)
 {
 	fprintf(f,
-		"Usage: ... bridge_slave [ fdb_flush ]\n"
+		"Usage: ... bridge_subport [ fdb_flush ]\n"
 		"			[ state STATE ]\n"
 		"			[ priority PRIO ]\n"
 		"			[ cost COST ]\n"
@@ -123,7 +123,7 @@ static void _bitmask2str(__u16 bitmask, char *dst, size_t dst_size,
 		dst[len - 1] = 0;
 }
 
-static void bridge_slave_print_opt(struct link_util *lu, FILE *f,
+static void bridge_subport_print_opt(struct link_util *lu, FILE *f,
 				   struct rtattr *tb[])
 {
 	if (!tb)
@@ -294,7 +294,7 @@ static void bridge_slave_print_opt(struct link_util *lu, FILE *f,
 	}
 }
 
-static void bridge_slave_parse_on_off(char *arg_name, char *arg_val,
+static void bridge_subport_parse_on_off(char *arg_name, char *arg_val,
 				      struct nlmsghdr *n, int type)
 {
 	__u8 val;
@@ -309,7 +309,7 @@ static void bridge_slave_parse_on_off(char *arg_name, char *arg_val,
 	addattr8(n, 1024, type, val);
 }
 
-static int bridge_slave_parse_opt(struct link_util *lu, int argc, char **argv,
+static int bridge_subport_parse_opt(struct link_util *lu, int argc, char **argv,
 				  struct nlmsghdr *n)
 {
 	__u8 state;
@@ -336,43 +336,43 @@ static int bridge_slave_parse_opt(struct link_util *lu, int argc, char **argv,
 			addattr32(n, 1024, IFLA_BRPORT_COST, cost);
 		} else if (matches(*argv, "hairpin") == 0) {
 			NEXT_ARG();
-			bridge_slave_parse_on_off("hairpin", *argv, n,
+			bridge_subport_parse_on_off("hairpin", *argv, n,
 						  IFLA_BRPORT_MODE);
 		} else if (matches(*argv, "guard") == 0) {
 			NEXT_ARG();
-			bridge_slave_parse_on_off("guard", *argv, n,
+			bridge_subport_parse_on_off("guard", *argv, n,
 						  IFLA_BRPORT_GUARD);
 		} else if (matches(*argv, "root_block") == 0) {
 			NEXT_ARG();
-			bridge_slave_parse_on_off("root_block", *argv, n,
+			bridge_subport_parse_on_off("root_block", *argv, n,
 						  IFLA_BRPORT_PROTECT);
 		} else if (matches(*argv, "fastleave") == 0) {
 			NEXT_ARG();
-			bridge_slave_parse_on_off("fastleave", *argv, n,
+			bridge_subport_parse_on_off("fastleave", *argv, n,
 						  IFLA_BRPORT_FAST_LEAVE);
 		} else if (matches(*argv, "learning") == 0) {
 			NEXT_ARG();
-			bridge_slave_parse_on_off("learning", *argv, n,
+			bridge_subport_parse_on_off("learning", *argv, n,
 						  IFLA_BRPORT_LEARNING);
 		} else if (matches(*argv, "flood") == 0) {
 			NEXT_ARG();
-			bridge_slave_parse_on_off("flood", *argv, n,
+			bridge_subport_parse_on_off("flood", *argv, n,
 						  IFLA_BRPORT_UNICAST_FLOOD);
 		} else if (matches(*argv, "mcast_flood") == 0) {
 			NEXT_ARG();
-			bridge_slave_parse_on_off("mcast_flood", *argv, n,
+			bridge_subport_parse_on_off("mcast_flood", *argv, n,
 						  IFLA_BRPORT_MCAST_FLOOD);
 		} else if (matches(*argv, "mcast_to_unicast") == 0) {
 			NEXT_ARG();
-			bridge_slave_parse_on_off("mcast_to_unicast", *argv, n,
+			bridge_subport_parse_on_off("mcast_to_unicast", *argv, n,
 						  IFLA_BRPORT_MCAST_TO_UCAST);
 		} else if (matches(*argv, "proxy_arp") == 0) {
 			NEXT_ARG();
-			bridge_slave_parse_on_off("proxy_arp", *argv, n,
+			bridge_subport_parse_on_off("proxy_arp", *argv, n,
 						  IFLA_BRPORT_PROXYARP);
 		} else if (matches(*argv, "proxy_arp_wifi") == 0) {
 			NEXT_ARG();
-			bridge_slave_parse_on_off("proxy_arp_wifi", *argv, n,
+			bridge_subport_parse_on_off("proxy_arp_wifi", *argv, n,
 						  IFLA_BRPORT_PROXYARP_WIFI);
 		} else if (matches(*argv, "mcast_router") == 0) {
 			__u8 mcast_router;
@@ -384,11 +384,11 @@ static int bridge_slave_parse_opt(struct link_util *lu, int argc, char **argv,
 				 mcast_router);
 		} else if (matches(*argv, "mcast_fast_leave") == 0) {
 			NEXT_ARG();
-			bridge_slave_parse_on_off("mcast_fast_leave", *argv, n,
+			bridge_subport_parse_on_off("mcast_fast_leave", *argv, n,
 						  IFLA_BRPORT_FAST_LEAVE);
 		} else if (matches(*argv, "neigh_suppress") == 0) {
 			NEXT_ARG();
-			bridge_slave_parse_on_off("neigh_suppress", *argv, n,
+			bridge_subport_parse_on_off("neigh_suppress", *argv, n,
 						  IFLA_BRPORT_NEIGH_SUPPRESS);
 		} else if (matches(*argv, "group_fwd_mask") == 0) {
 			__u16 mask;
@@ -399,11 +399,11 @@ static int bridge_slave_parse_opt(struct link_util *lu, int argc, char **argv,
 			addattr16(n, 1024, IFLA_BRPORT_GROUP_FWD_MASK, mask);
 		} else if (matches(*argv, "vlan_tunnel") == 0) {
 			NEXT_ARG();
-			bridge_slave_parse_on_off("vlan_tunnel", *argv, n,
+			bridge_subport_parse_on_off("vlan_tunnel", *argv, n,
 						  IFLA_BRPORT_VLAN_TUNNEL);
 		} else if (matches(*argv, "isolated") == 0) {
 			NEXT_ARG();
-			bridge_slave_parse_on_off("isolated", *argv, n,
+			bridge_subport_parse_on_off("isolated", *argv, n,
 						  IFLA_BRPORT_ISOLATED);
 		} else if (matches(*argv, "backup_port") == 0) {
 			int ifindex;
@@ -419,7 +419,7 @@ static int bridge_slave_parse_opt(struct link_util *lu, int argc, char **argv,
 			explain();
 			return -1;
 		} else {
-			fprintf(stderr, "bridge_slave: unknown option \"%s\"?\n",
+			fprintf(stderr, "bridge_subport: unknown option \"%s\"?\n",
 				*argv);
 			explain();
 			return -1;
@@ -430,18 +430,18 @@ static int bridge_slave_parse_opt(struct link_util *lu, int argc, char **argv,
 	return 0;
 }
 
-static void bridge_slave_print_help(struct link_util *lu, int argc, char **argv,
+static void bridge_subport_print_help(struct link_util *lu, int argc, char **argv,
 		FILE *f)
 {
 	print_explain(f);
 }
 
-struct link_util bridge_slave_link_util = {
-	.id		= "bridge_slave",
+struct link_util bridge_subport_link_util = {
+	.id		= "bridge_subport",
 	.maxattr	= IFLA_BRPORT_MAX,
-	.print_opt	= bridge_slave_print_opt,
-	.parse_opt	= bridge_slave_parse_opt,
-	.print_help     = bridge_slave_print_help,
+	.print_opt	= bridge_subport_print_opt,
+	.parse_opt	= bridge_subport_parse_opt,
+	.print_help     = bridge_subport_print_help,
 	.parse_ifla_xstats = bridge_parse_xstats,
 	.print_ifla_xstats = bridge_print_xstats,
 };
diff --git a/ip/iplink_hsr.c b/ip/iplink_hsr.c
index 7d9167d4e6a3..3a12fa2bc484 100644
--- a/ip/iplink_hsr.c
+++ b/ip/iplink_hsr.c
@@ -24,13 +24,13 @@
 static void print_usage(FILE *f)
 {
 	fprintf(f,
-		"Usage:\tip link add name NAME type hsr slave1 SLAVE1-IF slave2 SLAVE2-IF\n"
+		"Usage:\tip link add name NAME type hsr subport1 SLAVE1-IF subport2 SLAVE2-IF\n"
 		"\t[ supervision ADDR-BYTE ] [version VERSION]\n"
 		"\n"
 		"NAME\n"
 		"	name of new hsr device (e.g. hsr0)\n"
 		"SLAVE1-IF, SLAVE2-IF\n"
-		"	the two slave devices bound to the HSR device\n"
+		"	the two subport devices bound to the HSR device\n"
 		"ADDR-BYTE\n"
 		"	0-255; the last byte of the multicast address used for HSR supervision\n"
 		"	frames (default = 0)\n"
@@ -64,13 +64,13 @@ static int hsr_parse_opt(struct link_util *lu, int argc, char **argv,
 				invarg("version is invalid", *argv);
 			addattr_l(n, 1024, IFLA_HSR_VERSION,
 				  &protocol_version, 1);
-		} else if (matches(*argv, "slave1") == 0) {
+		} else if (matches(*argv, "subport1") == 0) {
 			NEXT_ARG();
 			ifindex = ll_name_to_index(*argv);
 			if (ifindex == 0)
 				invarg("No such interface", *argv);
 			addattr_l(n, 1024, IFLA_HSR_SLAVE1, &ifindex, 4);
-		} else if (matches(*argv, "slave2") == 0) {
+		} else if (matches(*argv, "subport2") == 0) {
 			NEXT_ARG();
 			ifindex = ll_name_to_index(*argv);
 			if (ifindex == 0)
@@ -112,19 +112,19 @@ static void hsr_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
 
 	if (tb[IFLA_HSR_SLAVE1])
 		print_string(PRINT_ANY,
-			     "slave1",
-			     "slave1 %s ",
+			     "subport1",
+			     "subport1 %s ",
 			     ll_index_to_name(rta_getattr_u32(tb[IFLA_HSR_SLAVE1])));
 	else
-		print_null(PRINT_ANY, "slave1", "slave1 %s ", "<none>");
+		print_null(PRINT_ANY, "subport1", "subport1 %s ", "<none>");
 
 	if (tb[IFLA_HSR_SLAVE2])
 		print_string(PRINT_ANY,
-			     "slave2",
-			     "slave2 %s ",
+			     "subport2",
+			     "subport2 %s ",
 			     ll_index_to_name(rta_getattr_u32(tb[IFLA_HSR_SLAVE2])));
 	else
-		print_null(PRINT_ANY, "slave2", "slave2 %s ", "<none>");
+		print_null(PRINT_ANY, "subport2", "subport2 %s ", "<none>");
 
 	if (tb[IFLA_HSR_SEQ_NR])
 		print_int(PRINT_ANY,
diff --git a/ip/iplink_team.c b/ip/iplink_team.c
index 58f955a478ac..7b725311d112 100644
--- a/ip/iplink_team.c
+++ b/ip/iplink_team.c
@@ -11,16 +11,16 @@ static void team_print_help(struct link_util *lu,
 	fprintf(f, "Usage: ... team\n");
 }
 
-static void team_slave_print_help(struct link_util *lu,
+static void team_subport_print_help(struct link_util *lu,
 				  int argc, char **argv, FILE *f)
 {
-	fprintf(f, "Usage: ... team_slave\n");
+	fprintf(f, "Usage: ... team_subport\n");
 }
 
 struct link_util team_link_util = {
 	.id		= "team",
 	.print_help	= team_print_help,
-}, team_slave_link_util = {
-	.id		= "team_slave",
-	.print_help	= team_slave_print_help,
+}, team_subport_link_util = {
+	.id		= "team_subport",
+	.print_help	= team_subport_print_help,
 };
diff --git a/ip/iplink_vrf.c b/ip/iplink_vrf.c
index 5d20f29d3526..33b46df706f9 100644
--- a/ip/iplink_vrf.c
+++ b/ip/iplink_vrf.c
@@ -68,7 +68,7 @@ static void vrf_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
 			   rta_getattr_u32(tb[IFLA_VRF_TABLE]));
 }
 
-static void vrf_slave_print_opt(struct link_util *lu, FILE *f,
+static void vrf_subport_print_opt(struct link_util *lu, FILE *f,
 				struct rtattr *tb[])
 {
 	if (!tb)
@@ -96,10 +96,10 @@ struct link_util vrf_link_util = {
 	.print_help	= vrf_print_help,
 };
 
-struct link_util vrf_slave_link_util = {
-	.id             = "vrf_slave",
+struct link_util vrf_subport_link_util = {
+	.id             = "vrf_subport",
 	.maxattr        = IFLA_VRF_PORT_MAX,
-	.print_opt	= vrf_slave_print_opt,
+	.print_opt	= vrf_subport_print_opt,
 };
 
 /* returns table id if name is a VRF device */
diff --git a/ip/iplink_xstats.c b/ip/iplink_xstats.c
index c64e6885678c..8f7983040d03 100644
--- a/ip/iplink_xstats.c
+++ b/ip/iplink_xstats.c
@@ -60,7 +60,7 @@ int iplink_ifla_xstats(int argc, char **argv)
 	    lu->parse_ifla_xstats(lu, argc-1, argv+1))
 		return -1;
 
-	if (strstr(lu->id, "_slave"))
+	if (strstr(lu->id, "_subport"))
 		filt_mask = IFLA_STATS_FILTER_BIT(IFLA_STATS_LINK_XSTATS_SLAVE);
 	else
 		filt_mask = IFLA_STATS_FILTER_BIT(IFLA_STATS_LINK_XSTATS);
diff --git a/lib/namespace.c b/lib/namespace.c
index 06ae0a48c224..93e3263c89db 100644
--- a/lib/namespace.c
+++ b/lib/namespace.c
@@ -75,7 +75,7 @@ int netns_switch(char *name)
 	}
 	/* Don't let any mounts propagate back to the parent */
 	if (mount("", "/", "none", MS_SLAVE | MS_REC, NULL)) {
-		fprintf(stderr, "\"mount --make-rslave /\" failed: %s\n",
+		fprintf(stderr, "\"mount --make-rsubport /\" failed: %s\n",
 			strerror(errno));
 		return -1;
 	}
diff --git a/man/man8/ip-address.8.in b/man/man8/ip-address.8.in
index fe773c91592f..1db324c11a3c 100644
--- a/man/man8/ip-address.8.in
+++ b/man/man8/ip-address.8.in
@@ -108,9 +108,9 @@ ip-address \- protocol address management
 .ti -8
 .IR TYPE " := [ "
 .BR bridge " | "
-.BR bridge_slave " |"
+.BR bridge_subport " |"
 .BR bond " | "
-.BR bond_slave " |"
+.BR bond_subport " |"
 .BR can " | "
 .BR dummy " | "
 .BR hsr " | "
@@ -320,11 +320,11 @@ is a usual shell style pattern.
 
 .TP
 .BI master " DEVICE"
-only list interfaces enslaved to this master device.
+only list interfaces ensubportd to this master device.
 
 .TP
 .BI vrf " NAME "
-only list interfaces enslaved to this vrf.
+only list interfaces ensubportd to this vrf.
 
 .TP
 .BI type " TYPE"
diff --git a/man/man8/ip-link.8.in b/man/man8/ip-link.8.in
index e8a25451f7cd..89b84127bc1b 100644
--- a/man/man8/ip-link.8.in
+++ b/man/man8/ip-link.8.in
@@ -231,7 +231,7 @@ ip-link \- network device configuration
 
 .ti -8
 .IR ETYPE " := [ " TYPE " |"
-.BR bridge_slave " | " bond_slave " ]"
+.BR bridge_subport " | " bond_subport " ]"
 
 .ti -8
 .IR VFVLAN-LIST " := [ "  VFVLAN-LIST " ] " VFVLAN
@@ -1357,7 +1357,7 @@ For a link of type
 the following additional arguments are supported:
 
 .BI "ip link add link " DEVICE " name " NAME " type hsr"
-.BI slave1 " SLAVE1-IF " slave2 " SLAVE2-IF "
+.BI subport1 " SLAVE1-IF " subport2 " SLAVE2-IF "
 .RB [ " supervision"
 .IR ADDR-BYTE " ] ["
 .BR version " { " 0 " | " 1 " } ]"
@@ -1367,10 +1367,10 @@ the following additional arguments are supported:
 .BR type " hsr "
 - specifies the link type to use, here HSR.
 
-.BI slave1 " SLAVE1-IF "
+.BI subport1 " SLAVE1-IF "
 - Specifies the physical device used for the first of the two ring ports.
 
-.BI slave2 " SLAVE2-IF "
+.BI subport2 " SLAVE2-IF "
 - Specifies the physical device used for the second of the two ring ports.
 
 .BI supervision " ADDR-BYTE"
@@ -2136,7 +2136,7 @@ described already.
 
 .TP
 .BI master " DEVICE"
-set master device of the device (enslave device).
+set master device of the device (ensubport device).
 
 .TP
 .BI nomaster
@@ -2168,7 +2168,7 @@ set peer netnsid for a cross-netns interface
 Change type-specific settings. For a list of supported types and arguments refer
 to the description of
 .B "ip link add"
-above. In addition to that, it is possible to manipulate settings to slave
+above. In addition to that, it is possible to manipulate settings to subport
 devices:
 
 .TP
@@ -2177,7 +2177,7 @@ For a link with master
 .B bridge
 the following additional arguments are supported:
 
-.B "ip link set type bridge_slave"
+.B "ip link set type bridge_subport"
 [
 .B fdb_flush
 ] [
@@ -2226,7 +2226,7 @@ the following additional arguments are supported:
 .in +8
 .sp
 .B fdb_flush
-- flush bridge slave's fdb dynamic entries.
+- flush bridge subport's fdb dynamic entries.
 
 .BI state " STATE"
 - Set port state.
@@ -2331,7 +2331,7 @@ For a link with master
 .B bond
 the following additional arguments are supported:
 
-.B "ip link set type bond_slave"
+.B "ip link set type bond_subport"
 [
 .BI queue_id " ID"
 ]
@@ -2339,7 +2339,7 @@ the following additional arguments are supported:
 .in +8
 .sp
 .BI queue_id " ID"
-- set the slave's queue ID (a 16bit unsigned value).
+- set the subport's queue ID (a 16bit unsigned value).
 
 .in -8
 
@@ -2388,12 +2388,12 @@ only display running interfaces.
 .TP
 .BI master " DEVICE "
 .I DEVICE
-specifies the master device which enslaves devices to show.
+specifies the master device which ensubports devices to show.
 
 .TP
 .BI vrf " NAME "
 .I NAME
-speficies the VRF which enslaves devices to show.
+speficies the VRF which ensubports devices to show.
 
 .TP
 .BI type " TYPE "
@@ -2451,7 +2451,7 @@ Shows the vlan devices.
 .PP
 ip link show master br0
 .RS 4
-Shows devices enslaved by br0
+Shows devices ensubportd by br0
 .RE
 .PP
 ip link set dev ppp0 mtu 1400
diff --git a/man/man8/ip-nexthop.8 b/man/man8/ip-nexthop.8
index 68164f3ca84f..92ab5be5dcab 100644
--- a/man/man8/ip-nexthop.8
+++ b/man/man8/ip-nexthop.8
@@ -144,7 +144,7 @@ show the nexthops using the given device.
 show the nexthops using devices associated with the vrf name
 .TP
 .BI master " DEV "
-show the nexthops using devices enslaved to given master device
+show the nexthops using devices ensubportd to given master device
 .TP
 .BI groups
 show only nexthop groups
diff --git a/testsuite/tests/bridge/vlan/tunnelshow.t b/testsuite/tests/bridge/vlan/tunnelshow.t
index 2cec8d03b47a..621c0804bd80 100755
--- a/testsuite/tests/bridge/vlan/tunnelshow.t
+++ b/testsuite/tests/bridge/vlan/tunnelshow.t
@@ -14,7 +14,7 @@ ts_ip "$0" "Add $VX_DEV vxlan interface" \
 ts_ip "$0" "Insert $VX_DEV under $BR_DEV" \
 	link set dev $VX_DEV master $BR_DEV
 ts_ip "$0" "Set vlan_tunnel on $VX_DEV" \
-	link set dev $VX_DEV type bridge_slave vlan_tunnel on
+	link set dev $VX_DEV type bridge_subport vlan_tunnel on
 
 ts_bridge "$0" "Add single vlan" vlan add dev $VX_DEV vid 1000
 ts_bridge "$0" "Add single tunnel" \
-- 
2.26.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH iproute2 0/5] Eliminate the term slave in iproute2
  2020-06-23 23:53 [PATCH iproute2 0/5] Eliminate the term slave in iproute2 Stephen Hemminger
                   ` (4 preceding siblings ...)
  2020-06-23 23:53 ` [PATCH iproute2 5/5] ip: rename slave to subport Stephen Hemminger
@ 2020-06-24  0:12 ` Jakub Kicinski
  2020-06-24  9:51 ` Michal Kubecek
  6 siblings, 0 replies; 9+ messages in thread
From: Jakub Kicinski @ 2020-06-24  0:12 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: netdev

On Tue, 23 Jun 2020 16:53:02 -0700 Stephen Hemminger wrote:
> These patches remove the term slave from the iproute2 visible
> command line, documentation, and variable naming.
> 
> This needs doing despite the fact it will cause cosmetic
> changes to visible outputs.

And non-cosmetic changes in machine-readable (JSON) output :(

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH iproute2 0/5] Eliminate the term slave in iproute2
  2020-06-23 23:53 [PATCH iproute2 0/5] Eliminate the term slave in iproute2 Stephen Hemminger
                   ` (5 preceding siblings ...)
  2020-06-24  0:12 ` [PATCH iproute2 0/5] Eliminate the term slave in iproute2 Jakub Kicinski
@ 2020-06-24  9:51 ` Michal Kubecek
  2020-06-24 15:21   ` Stephen Hemminger
  6 siblings, 1 reply; 9+ messages in thread
From: Michal Kubecek @ 2020-06-24  9:51 UTC (permalink / raw)
  To: netdev; +Cc: Stephen Hemminger

On Tue, Jun 23, 2020 at 04:53:02PM -0700, Stephen Hemminger wrote:
> These patches remove the term slave from the iproute2 visible
> command line, documentation, and variable naming.
> 
> This needs doing despite the fact it will cause cosmetic
> changes to visible outputs.

AFAICS, your patches don't only change output of the command, they also
change command line parsing so that they break backward compatibility
and break existing scripts and tools. This is a very bad idea.

If you really want to go through this exercise - and I don't agree with
the "needs doing" claim - you definitely should preserve existing
keywords as aliases.

Michal

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH iproute2 0/5] Eliminate the term slave in iproute2
  2020-06-24  9:51 ` Michal Kubecek
@ 2020-06-24 15:21   ` Stephen Hemminger
  0 siblings, 0 replies; 9+ messages in thread
From: Stephen Hemminger @ 2020-06-24 15:21 UTC (permalink / raw)
  To: Michal Kubecek; +Cc: netdev

On Wed, 24 Jun 2020 11:51:42 +0200
Michal Kubecek <mkubecek@suse.cz> wrote:

> On Tue, Jun 23, 2020 at 04:53:02PM -0700, Stephen Hemminger wrote:
> > These patches remove the term slave from the iproute2 visible
> > command line, documentation, and variable naming.
> > 
> > This needs doing despite the fact it will cause cosmetic
> > changes to visible outputs.  
> 
> AFAICS, your patches don't only change output of the command, they also
> change command line parsing so that they break backward compatibility
> and break existing scripts and tools. This is a very bad idea.
> 
> If you really want to go through this exercise - and I don't agree with
> the "needs doing" claim - you definitely should preserve existing
> keywords as aliases.
> 
> Michal

Sure the old keywords could be silent aliases for new ones.

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2020-06-24 15:21 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-23 23:53 [PATCH iproute2 0/5] Eliminate the term slave in iproute2 Stephen Hemminger
2020-06-23 23:53 ` [PATCH iproute2 1/5] bpf: replace slave with sub Stephen Hemminger
2020-06-23 23:53 ` [PATCH iproute2 2/5] bridge: remove slave from comments and message Stephen Hemminger
2020-06-23 23:53 ` [PATCH iproute2 3/5] testsuite: replace Enslave with Insert Stephen Hemminger
2020-06-23 23:53 ` [PATCH iproute2 4/5] ip: replace slave_kind Stephen Hemminger
2020-06-23 23:53 ` [PATCH iproute2 5/5] ip: rename slave to subport Stephen Hemminger
2020-06-24  0:12 ` [PATCH iproute2 0/5] Eliminate the term slave in iproute2 Jakub Kicinski
2020-06-24  9:51 ` Michal Kubecek
2020-06-24 15:21   ` Stephen Hemminger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).