Handle SIOCSIFCAP by propogating the request to the parent interface. This

allows adding an vlan interface into a bridge.

Thanks for William Katsak <wkatsak cs rutgers edu> for testing and fixing
an issue in my previous patch draft.

MFC after:	2 weeks
This commit is contained in:
delphij 2015-02-20 18:39:12 +00:00
parent 989552348a
commit e422dfb4e0

View File

@ -1775,6 +1775,27 @@ vlan_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
}
break;
case SIOCSIFCAP:
VLAN_LOCK();
if (TRUNK(ifv) != NULL) {
p = PARENT(ifv);
VLAN_UNLOCK();
if ((p->if_type != IFT_ETHER) &&
(ifr->ifr_reqcap & IFCAP_VLAN_HWTAGGING) == 0) {
error = EINVAL;
break;
}
error = (*p->if_ioctl)(p, cmd, data);
if (error)
break;
/* Propogate vlan interface capabilities */
vlan_trunk_capabilities(p);
} else {
VLAN_UNLOCK();
error = EINVAL;
}
break;
default:
error = EINVAL;
break;