$OpenBSD: patch-if_c,v 1.4 2014/01/29 16:26:17 naddy Exp $
--- if.c.orig	Sun Feb 10 19:36:49 2013
+++ if.c	Tue Jan 28 23:56:58 2014
@@ -170,9 +170,9 @@ show_int(int argc, char **argv)
 	printf("  %s is %s", br ? "Bridge" : "Interface",
 	    flags & IFF_UP ? "up" : "down");
 
-	if (if_lastchange.tv_sec) {
+	if (if_data.ifi_lastchange.tv_sec) {
 		gettimeofday(&tv, (struct timezone *)0);
-		c = difftime(tv.tv_sec, if_lastchange.tv_sec);
+		c = difftime(tv.tv_sec, if_data.ifi_lastchange.tv_sec);
 		days = c / SECSPERDAY;
 		c %= SECSPERDAY;
 		hours = c / SECSPERHOUR;
@@ -182,13 +182,13 @@ show_int(int argc, char **argv)
 		printf(" (last change ");
 		if (days)
 			printf("%id ", days);
-		printf("%02i:%02i:%02i)", hours, mins, c);
+		printf("%02i:%02i:%02i)", hours, mins, (int)c);
 	}
 
 	printf(", protocol is %s", flags & IFF_RUNNING ? "up" : "down");
 	printf("\n");
 
-	type = iftype(if_type);
+	type = iftype(if_data.ifi_type);
 
 	printf("  Interface type %s", type);
 	if (flags & IFF_BROADCAST)
@@ -305,16 +305,17 @@ show_int(int argc, char **argv)
 		/*
 		 * Display MTU, line rate
 		 */
-		printf(" MTU %u bytes", if_mtu);
+		printf(" MTU %u bytes", if_data.ifi_mtu);
 		if (ioctl(ifs, SIOCGIFHARDMTU, (caddr_t)&ifr) != -1) {
 			if (ifr.ifr_hardmtu)
 				printf(" (hardmtu %u)", ifr.ifr_hardmtu);
 		}
-		if (if_baudrate)
+		if (if_data.ifi_baudrate)
 			printf(", Line Rate %qu %s\n",
-			    MBPS(if_baudrate) ? MBPS(if_baudrate) :
-			    if_baudrate / 1000,
-			    MBPS(if_baudrate) ? "Mbps" : "Kbps");
+			    MBPS(if_data.ifi_baudrate) ?
+		    	    MBPS(if_data.ifi_baudrate) :
+			    if_data.ifi_baudrate / 1000,
+			    MBPS(if_data.ifi_baudrate) ? "Mbps" : "Kbps");
 		else
 			printf("\n");
  
@@ -342,25 +343,30 @@ show_int(int argc, char **argv)
 	 * Display remaining info from if_data structure
 	 */
 	printf("  %qu packets input, %qu bytes, %qu errors, %qu drops\n",
-	    if_ipackets, if_ibytes, if_ierrors, if_iqdrops);
+	    if_data.ifi_ipackets, if_data.ifi_ibytes, if_data.ifi_ierrors,
+	    if_data.ifi_iqdrops);
 	printf("  %qu packets output, %qu bytes, %qu errors, %qu unsupported\n",
-	    if_opackets, if_obytes, if_oerrors, if_noproto);
-	if (if_ibytes && if_ipackets && (if_ibytes / if_ipackets) >= ETHERMIN) {
+	    if_data.ifi_opackets, if_data.ifi_obytes, if_data.ifi_oerrors,
+	    if_data.ifi_noproto);
+	if (if_data.ifi_ibytes && if_data.ifi_ipackets &&
+	    (if_data.ifi_ibytes / if_data.ifi_ipackets) >= ETHERMIN) {
 		/* < ETHERMIN means byte counter probably rolled over */
-		printf("  %qu input", if_ibytes / if_ipackets);
+		printf("  %qu input", if_data.ifi_ibytes /
+		    if_data.ifi_ipackets);
 		pntd = 1;
 	} else
 		pntd = 0;
-	if (if_obytes && if_opackets && (if_obytes / if_opackets) >= ETHERMIN) {
+	if (if_data.ifi_obytes && if_data.ifi_opackets &&
+	    (if_data.ifi_obytes / if_data.ifi_opackets) >= ETHERMIN) {
 		/* < ETHERMIN means byte counter probably rolled over */
 		printf("%s%qu output", pntd ? ", " : "  ",
-		    if_obytes / if_opackets);
+		    if_data.ifi_obytes / if_data.ifi_opackets);
 		pntd = 1;
 	}
 	if (pntd)
 		printf(" (average bytes/packet)\n");
 
-	switch(if_type) {
+	switch(if_data.ifi_type) {
 	/*
 	 * These appear to be the only interface types to increase collision
 	 * count in the OpenBSD 3.2 kernel.
@@ -369,7 +375,7 @@ show_int(int argc, char **argv)
 	case IFT_SLIP:
 	case IFT_PROPVIRTUAL:
 	case IFT_IEEE80211:
-		printf("  %qu collisions\n", if_collisions);
+		printf("  %qu collisions\n", if_data.ifi_collisions);
 		break;
 	default:
 		break;
@@ -524,9 +530,9 @@ get_ifdata(char *ifname, int type)
 	ifr.ifr_data = (caddr_t)&if_data;
 	if (ioctl(ifs, SIOCGIFDATA, (caddr_t)&ifr) == 0) {
 		if (type == IFDATA_MTU)
-			value = if_mtu;
+			value = if_data.ifi_mtu;
 		else if (type == IFDATA_BAUDRATE)
-			value = if_baudrate;
+			value = if_data.ifi_baudrate;
 	}
 	close(ifs);
 	return (value);
