Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 20 Feb 2015 18:39:12 +0000 (UTC)
From:      Xin LI <delphij@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r279071 - head/sys/net
Message-ID:  <201502201839.t1KIdCcW015324@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: delphij
Date: Fri Feb 20 18:39:12 2015
New Revision: 279071
URL: https://svnweb.freebsd.org/changeset/base/279071

Log:
  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

Modified:
  head/sys/net/if_vlan.c

Modified: head/sys/net/if_vlan.c
==============================================================================
--- head/sys/net/if_vlan.c	Fri Feb 20 18:06:33 2015	(r279070)
+++ head/sys/net/if_vlan.c	Fri Feb 20 18:39:12 2015	(r279071)
@@ -1775,6 +1775,27 @@ vlan_ioctl(struct ifnet *ifp, u_long cmd
 		}
 		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;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201502201839.t1KIdCcW015324>