1
0
mirror of https://git.FreeBSD.org/src.git synced 2025-01-03 12:35:02 +00:00

Back out rev. 1.107 because it introduced as many problems

as it tried to solve:

- it smuggled hidden 802.1q details into otherwise protocol-neutral code;
- it put an important code consistency check under DEBUG, which was never
  defined by anyone but a developer hacking this file for the moment;
- lastly, the former bcopy() call had been correct as long as the "dead"
  code was there.

(A new version of the fix for tag of -1 to come in the next commit.)

Agreed by:	qingli
This commit is contained in:
Yaroslav Tykhiy 2006-08-03 09:50:15 +00:00
parent 66ebe2912f
commit db8b5973e7
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=160950

View File

@ -917,15 +917,21 @@ vlan_input(struct ifnet *ifp, struct mbuf *m)
__func__, ntohs(evl->evl_encap_proto)));
tag = EVL_VLANOFTAG(ntohs(evl->evl_tag));
/*
* Restore the original ethertype. We'll remove
* the encapsulation after we've found the vlan
* interface corresponding to the tag.
*/
evl->evl_encap_proto = evl->evl_proto;
break;
default:
#ifdef DEBUG
/* XXX rate limit? */
if_printf(ifp, "unsupported if_type %u", ifp->if_type);
tag = (uint16_t) -1;
#ifdef INVARIANTS
panic("%s: unsupported if_type (%u)",
__func__, ifp->if_type);
#endif
m_freem(m);
ifp->if_noproto++; /* XXX? */
return;
break;
}
}
@ -946,12 +952,12 @@ vlan_input(struct ifnet *ifp, struct mbuf *m)
if (mtag == NULL) {
/*
* Packet had an in-line encapsulation header;
* remove it. Note that we leave the type field
* unchanged; we only copy up the mac addresses.
* remove it. The original header has already
* been fixed up above.
*/
bcopy(mtod(m, caddr_t),
mtod(m, caddr_t) + ETHER_VLAN_ENCAP_LEN,
ETHER_HDR_LEN - ETHER_TYPE_LEN);
ETHER_HDR_LEN);
m_adj(m, ETHER_VLAN_ENCAP_LEN);
}