From 09c0accb630678e1a150310a8852806c5052b2ac Mon Sep 17 00:00:00 2001 From: Yuri Pankov Date: Thu, 18 Aug 2016 17:35:35 +0300 Subject: [PATCH] 1769 dladm show-link truncates OVER field Reviewed by: Richard Lowe Reviewed by: Dan Vatca Approved by: Richard Lowe --- usr/src/cmd/dladm/dladm.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/usr/src/cmd/dladm/dladm.c b/usr/src/cmd/dladm/dladm.c index 8277d60ac2..d5b3bd0951 100644 --- a/usr/src/cmd/dladm/dladm.c +++ b/usr/src/cmd/dladm/dladm.c @@ -18,8 +18,10 @@ * * CDDL HEADER END */ + /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright 2016 Nexenta Systems, Inc. */ #include @@ -666,8 +668,8 @@ typedef struct link_fields_buf_s { char link_class[DLADM_STRSIZE]; char link_mtu[11]; char link_state[DLADM_STRSIZE]; - char link_bridge[MAXLINKNAMELEN]; - char link_over[MAXLINKNAMELEN]; + char link_bridge[MAXLINKNAMELEN * MAXPORT]; + char link_over[MAXLINKNAMELEN * MAXPORT]; char link_phys_state[DLADM_STRSIZE]; char link_phys_media[DLADM_STRSIZE]; char link_phys_speed[DLADM_STRSIZE]; @@ -692,7 +694,7 @@ static const ofmt_field_t link_fields[] = { offsetof(link_fields_buf_t, link_state), print_default_cb}, { "BRIDGE", 11, offsetof(link_fields_buf_t, link_bridge), print_default_cb}, -{ "OVER", DLPI_LINKNAME_MAX, +{ "OVER", 30, offsetof(link_fields_buf_t, link_over), print_default_cb}, { NULL, 0, 0, NULL}} ; @@ -2684,7 +2686,7 @@ print_link_topology(show_state_t *state, datalink_id_t linkid, (void) strlcat(lbuf->link_over, tmpbuf, sizeof (lbuf->link_over)); if (i != (ginfo.lg_nports - 1)) { - (void) strlcat(lbuf->link_over, " ", + (void) strlcat(lbuf->link_over, ",", sizeof (lbuf->link_over)); } } @@ -2747,7 +2749,7 @@ print_link_topology(show_state_t *state, datalink_id_t linkid, (void) strlcat(lbuf->link_over, tmpbuf, sizeof (lbuf->link_over)); if (i != nports - 1) { - (void) strlcat(lbuf->link_over, " ", + (void) strlcat(lbuf->link_over, ",", sizeof (lbuf->link_over)); } } @@ -3501,6 +3503,9 @@ do_show_link(int argc, char *argv[], const char *use) } if (state.ls_parsable) ofmtflags |= OFMT_PARSABLE; + else + ofmtflags |= OFMT_WRAP; + oferr = ofmt_open(fields_str, link_fields, ofmtflags, 0, &ofmt); dladm_ofmt_check(oferr, state.ls_parsable, ofmt); state.ls_ofmt = ofmt; -- 2.11.4.GIT