From patchwork Sat Jan 28 20:41:05 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: ibss_rsn.c: provide ibss_rsn_get_peer() helper function From: Antonio Quartulli X-Patchwork-Id: 138413 Message-Id: <1327783265-12987-1-git-send-email-ordex@autistici.org> To: hostap Date: Sat, 28 Jan 2012 21:41:05 +0100 This is a useful function that simplifies some code and can eventually be used somewhere else in future. Signed-hostap: Antonio Quartulli --- wpa_supplicant/ibss_rsn.c | 32 ++++++++++++++++++++------------ 1 files changed, 20 insertions(+), 12 deletions(-) diff --git a/wpa_supplicant/ibss_rsn.c b/wpa_supplicant/ibss_rsn.c index 40fc7e0..dccb1af 100644 --- a/wpa_supplicant/ibss_rsn.c +++ b/wpa_supplicant/ibss_rsn.c @@ -25,6 +25,17 @@ #include "ibss_rsn.h" +static ibss_rsn_peer *ibss_rsn_get_peer(struct ibss_rsn *ibss_rsn, u8 *addr) +{ + struct ibss_rsn_peer *peer = NULL; + + for (peer = ibss_rsn->peers; peer; peer = peer->next) + if (os_memcmp(src_addr, peer->addr, ETH_ALEN) == 0) + break; + return peer; +} + + static void ibss_rsn_free(struct ibss_rsn_peer *peer) { wpa_auth_sta_deinit(peer->auth); @@ -384,13 +395,11 @@ int ibss_rsn_start(struct ibss_rsn *ibss_rsn, const u8 *addr) if (ibss_rsn == NULL) return -1; - for (peer = ibss_rsn->peers; peer; peer = peer->next) { - if (os_memcmp(addr, peer->addr, ETH_ALEN) == 0) { - wpa_printf(MSG_DEBUG, "RSN: IBSS Authenticator and " - "Supplicant for peer " MACSTR " already " - "running", MAC2STR(addr)); - return 0; - } + if (ibss_rsn_get_peer(ibss_rsn, addr)) { + wpa_printf(MSG_DEBUG, "RSN: IBSS Authenticator and " + "Supplicant for peer " MACSTR " already " + "running", MAC2STR(addr)); + return 0; } wpa_printf(MSG_DEBUG, "RSN: Starting IBSS Authenticator and " @@ -593,11 +602,10 @@ int ibss_rsn_rx_eapol(struct ibss_rsn *ibss_rsn, const u8 *src_addr, if (ibss_rsn == NULL) return -1; - for (peer = ibss_rsn->peers; peer; peer = peer->next) { - if (os_memcmp(src_addr, peer->addr, ETH_ALEN) == 0) - return ibss_rsn_process_rx_eapol(ibss_rsn, peer, - buf, len); - } + peer = ibss_rsn_get_peer(ibss_rsn, src_addr); + if (peer) + return ibss_rsn_process_rx_eapol(ibss_rsn, peer, + buf, len); if (ibss_rsn_eapol_dst_supp(buf, len) > 0) { /*