[pkg-wpa-devel] r1232 - in /wpasupplicant/trunk: debian/ src/common/ src/drivers/ src/eap_peer/ src/eap_server/ src/rsn_supp/ wpa_supplicant/

kelmo-guest at users.alioth.debian.org kelmo-guest at users.alioth.debian.org
Tue Aug 12 15:05:18 UTC 2008


Author: kelmo-guest
Date: Tue Aug 12 15:05:18 2008
New Revision: 1232

URL: http://svn.debian.org/wsvn/pkg-wpa/?sc=1&rev=1232
Log:
New upstream release

Modified:
    wpasupplicant/trunk/debian/changelog
    wpasupplicant/trunk/src/common/version.h
    wpasupplicant/trunk/src/drivers/driver_ndis.c
    wpasupplicant/trunk/src/drivers/driver_wext.c
    wpasupplicant/trunk/src/drivers/driver_wext.h
    wpasupplicant/trunk/src/eap_peer/eap_ikev2.c
    wpasupplicant/trunk/src/eap_peer/eap_tnc.c
    wpasupplicant/trunk/src/eap_server/eap_tnc.c
    wpasupplicant/trunk/src/rsn_supp/wpa.c
    wpasupplicant/trunk/wpa_supplicant/ChangeLog
    wpasupplicant/trunk/wpa_supplicant/Makefile

Modified: wpasupplicant/trunk/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-wpa/wpasupplicant/trunk/debian/changelog?rev=1232&op=diff
==============================================================================
--- wpasupplicant/trunk/debian/changelog (original)
+++ wpasupplicant/trunk/debian/changelog Tue Aug 12 15:05:18 2008
@@ -1,5 +1,6 @@
-wpasupplicant (0.6.4~git20080716.93ef879-2) unstable; urgency=low
-
+wpasupplicant (0.6.4-1) unstable; urgency=low
+
+  * New upstream release
   * Retroactively cleanse past changelog entries of information indicating
     that they were not released, as they were.
   * Use short option for grep (-q) and sed (-n) instead of the busybox
@@ -9,7 +10,7 @@
     the ifup take a long time (eg. dhcp request takes a long time and
     eventually fails).
 
- -- Kel Modderman <kel at otaku42.de>  Mon, 28 Jul 2008 17:53:15 +1000
+ -- Kel Modderman <kel at otaku42.de>  Wed, 13 Aug 2008 00:57:11 +1000
 
 wpasupplicant (0.6.4~git20080716.93ef879-1) unstable; urgency=low
 

Modified: wpasupplicant/trunk/src/common/version.h
URL: http://svn.debian.org/wsvn/pkg-wpa/wpasupplicant/trunk/src/common/version.h?rev=1232&op=diff
==============================================================================
--- wpasupplicant/trunk/src/common/version.h (original)
+++ wpasupplicant/trunk/src/common/version.h Tue Aug 12 15:05:18 2008
@@ -1,6 +1,6 @@
 #ifndef VERSION_H
 #define VERSION_H
 
-#define VERSION_STR "0.6.3"
+#define VERSION_STR "0.6.4"
 
 #endif /* VERSION_H */

Modified: wpasupplicant/trunk/src/drivers/driver_ndis.c
URL: http://svn.debian.org/wsvn/pkg-wpa/wpasupplicant/trunk/src/drivers/driver_ndis.c?rev=1232&op=diff
==============================================================================
--- wpasupplicant/trunk/src/drivers/driver_ndis.c (original)
+++ wpasupplicant/trunk/src/drivers/driver_ndis.c Tue Aug 12 15:05:18 2008
@@ -40,7 +40,9 @@
 #include "driver_ndis.h"
 
 int wpa_driver_register_event_cb(struct wpa_driver_ndis_data *drv);
+#ifdef CONFIG_NDIS_EVENTS_INTEGRATED
 void wpa_driver_ndis_event_pipe_cb(void *eloop_data, void *user_data);
+#endif /* CONFIG_NDIS_EVENTS_INTEGRATED */
 
 static void wpa_driver_ndis_deinit(void *priv);
 static void wpa_driver_ndis_poll(void *drv);

Modified: wpasupplicant/trunk/src/drivers/driver_wext.c
URL: http://svn.debian.org/wsvn/pkg-wpa/wpasupplicant/trunk/src/drivers/driver_wext.c?rev=1232&op=diff
==============================================================================
--- wpasupplicant/trunk/src/drivers/driver_wext.c (original)
+++ wpasupplicant/trunk/src/drivers/driver_wext.c Tue Aug 12 15:05:18 2008
@@ -154,6 +154,8 @@
 
 static int wpa_driver_wext_flush_pmkid(void *priv);
 static int wpa_driver_wext_get_range(void *priv);
+static void wpa_driver_wext_finish_drv_init(struct wpa_driver_wext_data *drv);
+
 
 static int wpa_driver_wext_send_oper_ifla(struct wpa_driver_wext_data *drv,
 					  int linkmode, int operstate)
@@ -689,7 +691,8 @@
 }
 
 
-static void wpa_driver_wext_event_link(void *ctx, char *buf, size_t len,
+static void wpa_driver_wext_event_link(struct wpa_driver_wext_data *drv,
+				       void *ctx, char *buf, size_t len,
 				       int del)
 {
 	union wpa_event_data event;
@@ -706,7 +709,65 @@
 		   event.interface_status.ifname,
 		   del ? "removed" : "added");
 
+	if (os_strcmp(drv->ifname, event.interface_status.ifname) == 0) {
+		if (del)
+			drv->if_removed = 1;
+		else
+			drv->if_removed = 0;
+	}
+
 	wpa_supplicant_event(ctx, EVENT_INTERFACE_STATUS, &event);
+}
+
+
+static int wpa_driver_wext_own_ifname(struct wpa_driver_wext_data *drv,
+				      struct nlmsghdr *h)
+{
+	struct ifinfomsg *ifi;
+	int attrlen, nlmsg_len, rta_len;
+	struct rtattr *attr;
+
+	ifi = NLMSG_DATA(h);
+
+	nlmsg_len = NLMSG_ALIGN(sizeof(struct ifinfomsg));
+
+	attrlen = h->nlmsg_len - nlmsg_len;
+	if (attrlen < 0)
+		return 0;
+
+	attr = (struct rtattr *) (((char *) ifi) + nlmsg_len);
+
+	rta_len = RTA_ALIGN(sizeof(struct rtattr));
+	while (RTA_OK(attr, attrlen)) {
+		if (attr->rta_type == IFLA_IFNAME) {
+			if (os_strcmp(((char *) attr) + rta_len, drv->ifname)
+			    == 0)
+				return 1;
+			else
+				break;
+		}
+		attr = RTA_NEXT(attr, attrlen);
+	}
+
+	return 0;
+}
+
+
+static int wpa_driver_wext_own_ifindex(struct wpa_driver_wext_data *drv,
+				       int ifindex, struct nlmsghdr *h)
+{
+	if (drv->ifindex == ifindex || drv->ifindex2 == ifindex)
+		return 1;
+
+	if (drv->if_removed && wpa_driver_wext_own_ifname(drv, h)) {
+		drv->ifindex = if_nametoindex(drv->ifname);
+		wpa_printf(MSG_DEBUG, "WEXT: Update ifindex for a removed "
+			   "interface");
+		wpa_driver_wext_finish_drv_init(drv);
+		return 1;
+	}
+
+	return 0;
 }
 
 
@@ -723,8 +784,7 @@
 
 	ifi = NLMSG_DATA(h);
 
-	if (drv->ifindex != ifi->ifi_index && drv->ifindex2 != ifi->ifi_index)
-	{
+	if (!wpa_driver_wext_own_ifindex(drv, ifi->ifi_index, h)) {
 		wpa_printf(MSG_DEBUG, "Ignore event for foreign ifindex %d",
 			   ifi->ifi_index);
 		return;
@@ -763,7 +823,7 @@
 				drv, ctx, ((char *) attr) + rta_len,
 				attr->rta_len - rta_len);
 		} else if (attr->rta_type == IFLA_IFNAME) {
-			wpa_driver_wext_event_link(ctx,
+			wpa_driver_wext_event_link(drv, ctx,
 						   ((char *) attr) + rta_len,
 						   attr->rta_len - rta_len, 0);
 		}
@@ -796,7 +856,7 @@
 	rta_len = RTA_ALIGN(sizeof(struct rtattr));
 	while (RTA_OK(attr, attrlen)) {
 		if (attr->rta_type == IFLA_IFNAME) {
-			wpa_driver_wext_event_link(ctx,
+			wpa_driver_wext_event_link(drv,  ctx,
 						   ((char *) attr) + rta_len,
 						   attr->rta_len - rta_len, 1);
 		}
@@ -977,7 +1037,7 @@
  */
 void * wpa_driver_wext_init(void *ctx, const char *ifname)
 {
-	int s, flags;
+	int s;
 	struct sockaddr_nl local;
 	struct wpa_driver_wext_data *drv;
 
@@ -1017,6 +1077,16 @@
 	drv->event_sock = s;
 
 	drv->mlme_sock = -1;
+
+	wpa_driver_wext_finish_drv_init(drv);
+
+	return drv;
+}
+
+
+static void wpa_driver_wext_finish_drv_init(struct wpa_driver_wext_data *drv)
+{
+	int flags;
 
 	if (wpa_driver_wext_get_ifflags(drv, &flags) != 0)
 		printf("Could not get interface '%s' flags\n", drv->ifname);
@@ -1051,7 +1121,7 @@
 
 	drv->ifindex = if_nametoindex(drv->ifname);
 
-	if (os_strncmp(ifname, "wlan", 4) == 0) {
+	if (os_strncmp(drv->ifname, "wlan", 4) == 0) {
 		/*
 		 * Host AP driver may use both wlan# and wifi# interface in
 		 * wireless events. Since some of the versions included WE-18
@@ -1061,14 +1131,12 @@
 		 * driver are not in use anymore.
 		 */
 		char ifname2[IFNAMSIZ + 1];
-		os_strlcpy(ifname2, ifname, sizeof(ifname2));
+		os_strlcpy(ifname2, drv->ifname, sizeof(ifname2));
 		os_memcpy(ifname2, "wifi", 4);
 		wpa_driver_wext_alternative_ifindex(drv, ifname2);
 	}
 
 	wpa_driver_wext_send_oper_ifla(drv, 1, IF_OPER_DORMANT);
-
-	return drv;
 }
 
 

Modified: wpasupplicant/trunk/src/drivers/driver_wext.h
URL: http://svn.debian.org/wsvn/pkg-wpa/wpasupplicant/trunk/src/drivers/driver_wext.h?rev=1232&op=diff
==============================================================================
--- wpasupplicant/trunk/src/drivers/driver_wext.h (original)
+++ wpasupplicant/trunk/src/drivers/driver_wext.h Tue Aug 12 15:05:18 2008
@@ -25,6 +25,7 @@
 	char ifname[IFNAMSIZ + 1];
 	int ifindex;
 	int ifindex2;
+	int if_removed;
 	u8 *assoc_req_ies;
 	size_t assoc_req_ies_len;
 	u8 *assoc_resp_ies;

Modified: wpasupplicant/trunk/src/eap_peer/eap_ikev2.c
URL: http://svn.debian.org/wsvn/pkg-wpa/wpasupplicant/trunk/src/eap_peer/eap_ikev2.c?rev=1232&op=diff
==============================================================================
--- wpasupplicant/trunk/src/eap_peer/eap_ikev2.c (original)
+++ wpasupplicant/trunk/src/eap_peer/eap_ikev2.c Tue Aug 12 15:05:18 2008
@@ -22,7 +22,7 @@
 
 struct eap_ikev2_data {
 	struct ikev2_responder_data ikev2;
-	enum { WAIT_START, MSG, WAIT_FRAG_ACK, DONE, FAIL } state;
+	enum { WAIT_START, PROC_MSG, WAIT_FRAG_ACK, DONE, FAIL } state;
 	struct wpabuf *in_buf;
 	struct wpabuf *out_buf;
 	size_t out_used;
@@ -38,8 +38,8 @@
 	switch (state) {
 	case WAIT_START:
 		return "WAIT_START";
-	case MSG:
-		return "MSG";
+	case PROC_MSG:
+		return "PROC_MSG";
 	case WAIT_FRAG_ACK:
 		return "WAIT_FRAG_ACK";
 	case DONE:
@@ -391,7 +391,7 @@
 			return NULL;
 		}
 		wpa_printf(MSG_DEBUG, "EAP-IKEV2: Fragment acknowledged");
-		eap_ikev2_state(data, MSG);
+		eap_ikev2_state(data, PROC_MSG);
 		return eap_ikev2_build_msg(data, ret, id);
 	}
 
@@ -433,7 +433,7 @@
 		data->out_used = 0;
 	}
 
-	eap_ikev2_state(data, MSG);
+	eap_ikev2_state(data, PROC_MSG);
 	return eap_ikev2_build_msg(data, ret, id);
 }
 

Modified: wpasupplicant/trunk/src/eap_peer/eap_tnc.c
URL: http://svn.debian.org/wsvn/pkg-wpa/wpasupplicant/trunk/src/eap_peer/eap_tnc.c?rev=1232&op=diff
==============================================================================
--- wpasupplicant/trunk/src/eap_peer/eap_tnc.c (original)
+++ wpasupplicant/trunk/src/eap_peer/eap_tnc.c Tue Aug 12 15:05:18 2008
@@ -21,7 +21,7 @@
 
 
 struct eap_tnc_data {
-	enum { WAIT_START, MSG, WAIT_FRAG_ACK, DONE, FAIL } state;
+	enum { WAIT_START, PROC_MSG, WAIT_FRAG_ACK, DONE, FAIL } state;
 	struct tncc_data *tncc;
 	struct wpabuf *in_buf;
 	struct wpabuf *out_buf;
@@ -206,7 +206,7 @@
 	struct eap_tnc_data *data = priv;
 	struct wpabuf *resp;
 	const u8 *pos, *end;
-	u8 *rpos, *rpos1, *start;
+	u8 *rpos, *rpos1;
 	size_t len, rlen;
 	size_t imc_len;
 	char *start_buf, *end_buf;
@@ -269,7 +269,7 @@
 			return NULL;
 		}
 		wpa_printf(MSG_DEBUG, "EAP-TNC: Fragment acknowledged");
-		data->state = MSG;
+		data->state = PROC_MSG;
 		return eap_tnc_build_msg(data, ret, id);
 	}
 
@@ -300,7 +300,7 @@
 
 		tncc_init_connection(data->tncc);
 
-		data->state = MSG;
+		data->state = PROC_MSG;
 	} else {
 		enum tncc_process_res res;
 
@@ -351,7 +351,7 @@
 	ret->allowNotifications = TRUE;
 
 	if (data->out_buf) {
-		data->state = MSG;
+		data->state = PROC_MSG;
 		return eap_tnc_build_msg(data, ret, id);
 	}
 
@@ -380,17 +380,14 @@
 	}
 	end_len = os_strlen(end_buf);
 
-	rlen = 1 + start_len + imc_len + end_len;
-	resp = eap_msg_alloc(EAP_VENDOR_IETF, EAP_TYPE_TNC, rlen,
-			     EAP_CODE_RESPONSE, eap_get_id(reqData));
+	rlen = start_len + imc_len + end_len;
+	resp = wpabuf_alloc(rlen);
 	if (resp == NULL) {
 		os_free(start_buf);
 		os_free(end_buf);
 		return NULL;
 	}
 
-	start = wpabuf_put(resp, 0);
-	wpabuf_put_u8(resp, EAP_TNC_VERSION);
 	wpabuf_put_data(resp, start_buf, start_len);
 	os_free(start_buf);
 
@@ -401,10 +398,11 @@
 	wpabuf_put_data(resp, end_buf, end_len);
 	os_free(end_buf);
 
-	wpa_hexdump_ascii(MSG_MSGDUMP, "EAP-TNC: Response", start, rlen);
+	wpa_hexdump_ascii(MSG_MSGDUMP, "EAP-TNC: Response",
+			  wpabuf_head(resp), wpabuf_len(resp));
 
 	data->out_buf = resp;
-	data->state = MSG;
+	data->state = PROC_MSG;
 	return eap_tnc_build_msg(data, ret, id);
 }
 

Modified: wpasupplicant/trunk/src/eap_server/eap_tnc.c
URL: http://svn.debian.org/wsvn/pkg-wpa/wpasupplicant/trunk/src/eap_server/eap_tnc.c?rev=1232&op=diff
==============================================================================
--- wpasupplicant/trunk/src/eap_server/eap_tnc.c (original)
+++ wpasupplicant/trunk/src/eap_server/eap_tnc.c Tue Aug 12 15:05:18 2008
@@ -94,10 +94,10 @@
 
 
 static struct wpabuf * eap_tnc_build(struct eap_sm *sm,
-				     struct eap_tnc_data *data, u8 id)
+				     struct eap_tnc_data *data)
 {
 	struct wpabuf *req;
-	u8 *rpos, *rpos1, *start;
+	u8 *rpos, *rpos1;
 	size_t rlen;
 	char *start_buf, *end_buf;
 	size_t start_len, end_len;
@@ -116,17 +116,14 @@
 	}
 	end_len = os_strlen(end_buf);
 
-	rlen = 1 + start_len + imv_len + end_len;
-	req = eap_msg_alloc(EAP_VENDOR_IETF, EAP_TYPE_TNC, rlen,
-			    EAP_CODE_REQUEST, id);
+	rlen = start_len + imv_len + end_len;
+	req = wpabuf_alloc(rlen);
 	if (req == NULL) {
 		os_free(start_buf);
 		os_free(end_buf);
 		return NULL;
 	}
 
-	start = wpabuf_put(req, 0);
-	wpabuf_put_u8(req, EAP_TNC_VERSION);
 	wpabuf_put_data(req, start_buf, start_len);
 	os_free(start_buf);
 
@@ -137,15 +134,15 @@
 	wpabuf_put_data(req, end_buf, end_len);
 	os_free(end_buf);
 
-	wpa_hexdump_ascii(MSG_MSGDUMP, "EAP-TNC: Request", start, rlen);
+	wpa_hexdump_ascii(MSG_MSGDUMP, "EAP-TNC: Request",
+			  wpabuf_head(req), wpabuf_len(req));
 
 	return req;
 }
 
 
 static struct wpabuf * eap_tnc_build_recommendation(struct eap_sm *sm,
-						    struct eap_tnc_data *data,
-						    u8 id)
+						    struct eap_tnc_data *data)
 {
 	switch (data->recommendation) {
 	case ALLOW:
@@ -166,7 +163,7 @@
 		return NULL;
 	}
 
-	return eap_tnc_build(sm, data, id);
+	return eap_tnc_build(sm, data);
 }
 
 
@@ -251,7 +248,7 @@
 		return eap_tnc_build_start(sm, data, id);
 	case CONTINUE:
 		if (data->out_buf == NULL) {
-			data->out_buf = eap_tnc_build(sm, data, id);
+			data->out_buf = eap_tnc_build(sm, data);
 			if (data->out_buf == NULL) {
 				wpa_printf(MSG_DEBUG, "EAP-TNC: Failed to "
 					   "generate message");
@@ -262,8 +259,7 @@
 		return eap_tnc_build_msg(data, id);
 	case RECOMMENDATION:
 		if (data->out_buf == NULL) {
-			data->out_buf = eap_tnc_build_recommendation(sm, data,
-								     id);
+			data->out_buf = eap_tnc_build_recommendation(sm, data);
 			if (data->out_buf == NULL) {
 				wpa_printf(MSG_DEBUG, "EAP-TNC: Failed to "
 					   "generate recommendation message");

Modified: wpasupplicant/trunk/src/rsn_supp/wpa.c
URL: http://svn.debian.org/wsvn/pkg-wpa/wpasupplicant/trunk/src/rsn_supp/wpa.c?rev=1232&op=diff
==============================================================================
--- wpasupplicant/trunk/src/rsn_supp/wpa.c (original)
+++ wpasupplicant/trunk/src/rsn_supp/wpa.c Tue Aug 12 15:05:18 2008
@@ -2014,7 +2014,8 @@
 		sm->eap_conf_ctx = NULL;
 		sm->ssid_len = 0;
 	}
-	pmksa_cache_notify_reconfig(sm->pmksa);
+	if (config == NULL || config->network_ctx != sm->network_ctx)
+		pmksa_cache_notify_reconfig(sm->pmksa);
 }
 
 

Modified: wpasupplicant/trunk/wpa_supplicant/ChangeLog
URL: http://svn.debian.org/wsvn/pkg-wpa/wpasupplicant/trunk/wpa_supplicant/ChangeLog?rev=1232&op=diff
==============================================================================
--- wpasupplicant/trunk/wpa_supplicant/ChangeLog (original)
+++ wpasupplicant/trunk/wpa_supplicant/ChangeLog Tue Aug 12 15:05:18 2008
@@ -1,6 +1,6 @@
 ChangeLog for wpa_supplicant
 
-????-??-?? - v0.6.4
+2008-08-10 - v0.6.4
 	* added support for EAP Sequences in EAP-FAST Phase 2
 	* added support for using TNC with EAP-FAST
 	* added driver_ps3 for the PS3 Linux wireless driver
@@ -16,6 +16,7 @@
 	  calculations (CONFIG_INTERNAL_LIBTOMMATH_FAST=y)
 	* fixed race condition between disassociation event and group key
 	  handshake to avoid getting stuck in incorrect state [Bug 261]
+	* fixed opportunistic key caching (proactive_key_caching)
 
 2008-02-22 - v0.6.3
 	* removed 'nai' and 'eappsk' network configuration variables that were

Modified: wpasupplicant/trunk/wpa_supplicant/Makefile
URL: http://svn.debian.org/wsvn/pkg-wpa/wpasupplicant/trunk/wpa_supplicant/Makefile?rev=1232&op=diff
==============================================================================
--- wpasupplicant/trunk/wpa_supplicant/Makefile (original)
+++ wpasupplicant/trunk/wpa_supplicant/Makefile Tue Aug 12 15:05:18 2008
@@ -189,7 +189,10 @@
 
 ifdef CONFIG_DRIVER_NDIS
 CFLAGS += -DCONFIG_DRIVER_NDIS
-OBJS_d += ../src/drivers/driver_ndis.o ../src/drivers/driver_ndis_.o
+OBJS_d += ../src/drivers/driver_ndis.o
+ifdef CONFIG_NDIS_EVENTS_INTEGRATED
+OBJS_d += ../src/drivers/driver_ndis_.o
+endif
 ifndef CONFIG_L2_PACKET
 CONFIG_L2_PACKET=pcap
 endif




More information about the Pkg-wpa-devel mailing list