From patchwork Fri Mar 28 05:50:00 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Hefty, Sean" X-Patchwork-Id: 3900901 Return-Path: X-Original-To: patchwork-linux-rdma@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 40D9D9F44E for ; Fri, 28 Mar 2014 05:50:44 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 5E72E202E6 for ; Fri, 28 Mar 2014 05:50:43 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 63A5D202EC for ; Fri, 28 Mar 2014 05:50:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751190AbaC1Fu2 (ORCPT ); Fri, 28 Mar 2014 01:50:28 -0400 Received: from mga01.intel.com ([192.55.52.88]:35279 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751199AbaC1FuS (ORCPT ); Fri, 28 Mar 2014 01:50:18 -0400 Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga101.fm.intel.com with ESMTP; 27 Mar 2014 22:50:17 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.97,748,1389772800"; d="scan'208";a="501476357" Received: from cst-linux.jf.intel.com ([10.23.221.72]) by fmsmga001.fm.intel.com with ESMTP; 27 Mar 2014 22:50:17 -0700 From: sean.hefty@intel.com To: linux-rdma@vger.kernel.org Cc: Ira Weiny Subject: [PATCH 06/16] ibacm: move acm_if_iter_sys to acm_util.c Date: Thu, 27 Mar 2014 22:50:00 -0700 Message-Id: <1395985810-23822-7-git-send-email-sean.hefty@intel.com> X-Mailer: git-send-email 1.7.3 In-Reply-To: <1395985810-23822-1-git-send-email-sean.hefty@intel.com> References: <1395985810-23822-1-git-send-email-sean.hefty@intel.com> Sender: linux-rdma-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org X-Spam-Status: No, score=-7.3 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Ira Weiny Signed-off-by: Ira Weiny --- linux/acme_linux.c | 80 --------------------------------------------------- src/acm_util.c | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+), 80 deletions(-) diff --git a/linux/acme_linux.c b/linux/acme_linux.c index 187507d..33fafd2 100644 --- a/linux/acme_linux.c +++ b/linux/acme_linux.c @@ -30,14 +30,6 @@ #include #include #include -#include -#include -#include -#include -#include -#include -#include -#include #include #include "acm_util.h" @@ -101,75 +93,3 @@ int gen_addr_ip(FILE *f) { return acm_if_iter_sys(iter_cb, (void *)f); } - -int acm_if_iter_sys(acm_if_iter_cb cb, void *ctx) -{ - struct ifconf *ifc; - struct ifreq *ifr; - char ip[INET6_ADDRSTRLEN]; - int s, ret, i, len; - uint16_t pkey; - union ibv_gid sgid; - - s = socket(AF_INET6, SOCK_DGRAM, 0); - if (!s) - return -1; - - len = sizeof(*ifc) + sizeof(*ifr) * 64; - ifc = malloc(len); - if (!ifc) { - ret = -1; - goto out1; - } - - memset(ifc, 0, len); - ifc->ifc_len = len; - ifc->ifc_req = (struct ifreq *) (ifc + 1); - - ret = ioctl(s, SIOCGIFCONF, ifc); - if (ret < 0) { - printf("ioctl ifconf error %d\n", ret); - goto out2; - } - - ifr = ifc->ifc_req; - for (i = 0; i < ifc->ifc_len / sizeof(struct ifreq); i++) { - switch (ifr[i].ifr_addr.sa_family) { - case AF_INET: - inet_ntop(ifr[i].ifr_addr.sa_family, - &((struct sockaddr_in *) &ifr[i].ifr_addr)->sin_addr, ip, sizeof ip); - break; - case AF_INET6: - inet_ntop(ifr[i].ifr_addr.sa_family, - &((struct sockaddr_in6 *) &ifr[i].ifr_addr)->sin6_addr, ip, sizeof ip); - break; - default: - continue; - } - - if (!acm_if_is_ib(ifr[i].ifr_name)) - continue; - - ret = acm_if_get_sgid(ifr[i].ifr_name, &sgid); - if (ret) { - printf("unable to get sgid\n"); - continue; - } - - ret = acm_if_get_pkey(ifr[i].ifr_name, &pkey); - if (ret) { - printf("unable to get pkey\n"); - continue; - } - - cb(ifr[i].ifr_name, &sgid, pkey, 0, NULL, 0, ip, ctx); - } - ret = 0; - -out2: - free(ifc); -out1: - close(s); - return ret; - -} diff --git a/src/acm_util.c b/src/acm_util.c index 519735a..922eceb 100644 --- a/src/acm_util.c +++ b/src/acm_util.c @@ -30,6 +30,15 @@ #include #include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include "acm_util.h" @@ -110,3 +119,75 @@ int acm_if_get_sgid(char *ifname, union ibv_gid *sgid) fclose(f); return ret; } + +int acm_if_iter_sys(acm_if_iter_cb cb, void *ctx) +{ + struct ifconf *ifc; + struct ifreq *ifr; + char ip[INET6_ADDRSTRLEN]; + int s, ret, i, len; + uint16_t pkey; + union ibv_gid sgid; + + s = socket(AF_INET6, SOCK_DGRAM, 0); + if (!s) + return -1; + + len = sizeof(*ifc) + sizeof(*ifr) * 64; + ifc = malloc(len); + if (!ifc) { + ret = -1; + goto out1; + } + + memset(ifc, 0, len); + ifc->ifc_len = len; + ifc->ifc_req = (struct ifreq *) (ifc + 1); + + ret = ioctl(s, SIOCGIFCONF, ifc); + if (ret < 0) { + printf("ioctl ifconf error %d\n", ret); + goto out2; + } + + ifr = ifc->ifc_req; + for (i = 0; i < ifc->ifc_len / sizeof(struct ifreq); i++) { + switch (ifr[i].ifr_addr.sa_family) { + case AF_INET: + inet_ntop(ifr[i].ifr_addr.sa_family, + &((struct sockaddr_in *) &ifr[i].ifr_addr)->sin_addr, ip, sizeof ip); + break; + case AF_INET6: + inet_ntop(ifr[i].ifr_addr.sa_family, + &((struct sockaddr_in6 *) &ifr[i].ifr_addr)->sin6_addr, ip, sizeof ip); + break; + default: + continue; + } + + if (!acm_if_is_ib(ifr[i].ifr_name)) + continue; + + ret = acm_if_get_sgid(ifr[i].ifr_name, &sgid); + if (ret) { + printf("unable to get sgid\n"); + continue; + } + + ret = acm_if_get_pkey(ifr[i].ifr_name, &pkey); + if (ret) { + printf("unable to get pkey\n"); + continue; + } + + cb(ifr[i].ifr_name, &sgid, pkey, 0, NULL, 0, ip, ctx); + } + ret = 0; + +out2: + free(ifc); +out1: + close(s); + return ret; + +}