From 08e5736618f30a8de160de01eb73573edce85c8a Mon Sep 17 00:00:00 2001 From: Xin LI Date: Fri, 20 Feb 2015 18:39:12 +0000 Subject: [PATCH] Handle SIOCSIFCAP by propogating the request to the parent interface. This allows adding an vlan interface into a bridge. Thanks for William Katsak for testing and fixing an issue in my previous patch draft. MFC after: 2 weeks --- sys/net/if_vlan.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/sys/net/if_vlan.c b/sys/net/if_vlan.c index 1be28888201..54c4833bcdd 100644 --- a/sys/net/if_vlan.c +++ b/sys/net/if_vlan.c @@ -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;