the vlan specific output is redundant because vlan supports the generic vnetid and parent ioctls now.
this leaves the code for setting vlan specific stuff because there's a slight semantic change i want to discuss separately. ifconfig output on a vlan interface changes a little like this: vlan8: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 lladdr 00:1b:21:bc:25:e7 index 6 priority 0 llprio 3 - vlan: 8 parent interface: ix1 encap: vnetid 8 parent ix1 groups: vlan status: active inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255 vlan77: flags=8002<BROADCAST,MULTICAST> mtu 1500 lladdr 00:1b:21:bc:25:e6 index 8 priority 0 llprio 3 - vlan: 0 parent interface: ix0 encap: vnetid none parent ix0 groups: vlan status: no carrier ok? Index: ifconfig.c =================================================================== RCS file: /cvs/src/sbin/ifconfig/ifconfig.c,v retrieving revision 1.341 diff -u -p -r1.341 ifconfig.c --- ifconfig.c 31 May 2017 05:25:12 -0000 1.341 +++ ifconfig.c 31 May 2017 05:26:37 -0000 @@ -221,7 +221,6 @@ void setvlandev(const char *, int); void unsetvlandev(const char *, int); void mpe_status(void); void mpw_status(void); -void vlan_status(void); void setrdomain(const char *, int); int prefix(void *val, int); void getifgroups(void); @@ -3001,7 +3000,6 @@ status(int link, struct sockaddr_dl *sdl if_indextoname(ifrdesc.ifr_index, ifname) != NULL) printf("\tpatch: %s\n", ifname); #endif - vlan_status(); getencap(); #ifndef SMALL carp_status(); @@ -3774,23 +3772,6 @@ getencap(void) static int __tag = 0; static int __have_tag = 0; - -void -vlan_status(void) -{ - struct vlanreq vreq; - - bzero((char *)&vreq, sizeof(struct vlanreq)); - ifr.ifr_data = (caddr_t)&vreq; - - if (ioctl(s, SIOCGETVLAN, (caddr_t)&ifr) == -1) - return; - - if (vreq.vlr_tag || (vreq.vlr_parent[0] != '\0')) - printf("\tvlan: %d parent interface: %s\n", - vreq.vlr_tag, vreq.vlr_parent[0] == '\0' ? - "<none>" : vreq.vlr_parent); -} /* ARGSUSED */ void