Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 15 Jan 2004 12:53:59 -0800 (PST)
From:      Sam Leffler <sam@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 45406 for review
Message-ID:  <200401152053.i0FKrxDh072778@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=45406

Change 45406 by sam@sam_ebb on 2004/01/15 12:53:09

	o consolidate the logic to enable WEP in ieee80211_encap
	o don't enable WEP for EAPOL frames for 802.1x (not exactly
	  right but close enough for now)
	o add equivalent logic to awi's private encapsulation code

Affected files ...

.. //depot/projects/netperf+sockets/sys/dev/ath/if_ath.c#15 edit
.. //depot/projects/netperf+sockets/sys/dev/awi/awi.c#3 edit
.. //depot/projects/netperf+sockets/sys/dev/wi/if_wi.c#5 edit
.. //depot/projects/netperf+sockets/sys/net/ethernet.h#3 edit
.. //depot/projects/netperf+sockets/sys/net80211/ieee80211_output.c#4 edit

Differences ...

==== //depot/projects/netperf+sockets/sys/dev/ath/if_ath.c#15 (text+ko) ====

@@ -789,8 +789,6 @@
 				goto bad;
 			}
 			wh = mtod(m, struct ieee80211_frame *);
-			if (ic->ic_flags & IEEE80211_F_WEPON)
-				wh->i_fc[1] |= IEEE80211_FC1_WEP;
 		} else {
 			/*
 			 * Hack!  The referenced node pointer is in the

==== //depot/projects/netperf+sockets/sys/dev/awi/awi.c#3 (text+ko) ====

@@ -744,7 +744,7 @@
 	struct ieee80211_node *ni;
 	struct ieee80211_frame *wh;
 	struct mbuf *m, *m0;
-	int len, dowep;
+	int len;
 	u_int32_t txd, frame, ntxd;
 	u_int8_t rate;
 
@@ -754,7 +754,6 @@
 	for (;;) {
 		txd = sc->sc_txnext;
 		IF_POLL(&ic->ic_mgtq, m0);
-		dowep = 0;
 		if (m0 != NULL) {
 			len = m0->m_pkthdr.len;
 			if (awi_next_txd(sc, len, &frame, &ntxd)) {
@@ -762,6 +761,7 @@
 				break;
 			}
 			IF_DEQUEUE(&ic->ic_mgtq, m0);
+			wh = mtod(m0, struct ieee80211_frame *);
 		} else {
 			if (ic->ic_state != IEEE80211_S_RUN)
 				break;
@@ -777,7 +777,6 @@
 				len += sizeof(struct llc) -
 				    sizeof(struct ether_header);
 			if (ic->ic_flags & IEEE80211_F_WEPON) {
-				dowep = 1;
 				len += IEEE80211_WEP_IVLEN +
 				    IEEE80211_WEP_KIDLEN + IEEE80211_WEP_CRCLEN;
 			}
@@ -818,7 +817,7 @@
 		if (ic->ic_rawbpf)
 			bpf_mtap(ic->ic_rawbpf, m0);
 #endif
-		if (dowep) {
+		if (wh->i_fc[1] & IEEE80211_FC1_WEP) {
 			if ((m0 = ieee80211_wep_crypt(ifp, m0, 1)) == NULL) {
 				ifp->if_oerrors++;
 				continue;
@@ -2154,6 +2153,10 @@
 		IEEE80211_ADDR_COPY(wh->i_addr2, eh->ether_shost);
 		IEEE80211_ADDR_COPY(wh->i_addr3, eh->ether_dhost);
 	}
+	/* NB: EAPOL frames have their own encryption policy */
+	if (ic->ic_flags & IEEE80211_F_WEPON &&
+	    eh.ether_type != ETHERTYPE_EAPOL)
+		wh->i_fc[1] |= IEEE80211_FC1_WEP;
 	return m;
 }
 

==== //depot/projects/netperf+sockets/sys/dev/wi/if_wi.c#5 (text+ko) ====

@@ -921,9 +921,6 @@
 				continue;
 			}
                         wh = mtod(m0, struct ieee80211_frame *);
-			if (ic->ic_flags & IEEE80211_F_WEPON)
-				wh->i_fc[1] |= IEEE80211_FC1_WEP;
-
 		}
 #if NBPFILTER > 0
 		if (ic->ic_rawbpf)

==== //depot/projects/netperf+sockets/sys/net/ethernet.h#3 (text+ko) ====

@@ -319,6 +319,7 @@
 #define	ETHERTYPE_PPPOEDISC	0x8863	/* PPP Over Ethernet Discovery Stage */
 #define	ETHERTYPE_PPPOE		0x8864	/* PPP Over Ethernet Session Stage */
 #define	ETHERTYPE_LANPROBE	0x8888	/* HP LanProbe test? */
+#define	ETHERTYPE_EAPOL		0x888E	/* EAPOL/802.1x */
 #define	ETHERTYPE_LOOPBACK	0x9000	/* Loopback: used to test interfaces */
 #define	ETHERTYPE_LBACK		ETHERTYPE_LOOPBACK	/* DEC MOP loopback */
 #define	ETHERTYPE_XNSSM		0x9001	/* 3Com (Formerly Bridge Communications), XNS Systems Management */

==== //depot/projects/netperf+sockets/sys/net80211/ieee80211_output.c#4 (text+ko) ====

@@ -242,6 +242,10 @@
 	case IEEE80211_M_MONITOR:
 		goto bad;
 	}
+	/* NB: EAPOL frames have their own encryption policy */
+	if (ic->ic_flags & IEEE80211_F_WEPON &&
+	    eh.ether_type != ETHERTYPE_EAPOL)
+		wh->i_fc[1] |= IEEE80211_FC1_WEP;
 	*pni = ni;
 	return m;
 bad:



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