svn commit: r215877 - stable/8/sbin/ifconfig

Marius Strobl marius at FreeBSD.org
Fri Nov 26 18:44:01 UTC 2010


Author: marius
Date: Fri Nov 26 18:44:01 2010
New Revision: 215877
URL: http://svn.freebsd.org/changeset/base/215877

Log:
  MFC: r215259, r215272
  
  - When printing media with more than one media option set aggregate these
    in a comma delimited list instead of repeating "mediaopt" for each one.
    This matches how the options of the active media are printed with
    print_media_word() and brings us in line what NetBSD does.
  - When setting a media with no sub-type specified also reset the type
    specific options along with the global ones so these options don't
    stick when f.e. switching to IFM_AUTO.

Modified:
  stable/8/sbin/ifconfig/ifmedia.c
Directory Properties:
  stable/8/sbin/ifconfig/   (props changed)

Modified: stable/8/sbin/ifconfig/ifmedia.c
==============================================================================
--- stable/8/sbin/ifconfig/ifmedia.c	Fri Nov 26 17:31:02 2010	(r215876)
+++ stable/8/sbin/ifconfig/ifmedia.c	Fri Nov 26 18:44:01 2010	(r215877)
@@ -276,7 +276,7 @@ setmedia(const char *val, int d, int s, 
 	    IFM_TYPE(ifmr->ifm_ulist[0]) | subtype;
 
 	if ((ifr.ifr_media & IFM_TMASK) == 0) {
-		ifr.ifr_media &= ~IFM_GMASK;
+		ifr.ifr_media &= ~(IFM_GMASK | IFM_OMASK);
 	}
 
 	ifmr->ifm_current = ifr.ifr_media;
@@ -757,7 +757,7 @@ print_media_word_ifconfig(int ifmw)
 {
 	struct ifmedia_description *desc;
 	struct ifmedia_type_to_subtype *ttos;
-	int i;
+	int seen_option = 0, i;
 
 	/* Find the top-level interface type. */
 	desc = get_toptype_desc(ifmw);
@@ -792,7 +792,10 @@ print_media_word_ifconfig(int ifmw)
 		for (desc = ttos->options[i].desc;
 		    desc->ifmt_string != NULL; desc++) {
 			if (ifmw & desc->ifmt_word) {
-				printf(" mediaopt %s", desc->ifmt_string);
+				if (seen_option == 0)
+					printf(" mediaopt ");
+				printf("%s%s", seen_option++ ? "," : "",
+				    desc->ifmt_string);
 			}
 		}
 	}


More information about the svn-src-all mailing list