From patchwork Tue Nov 1 14:17:58 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jean-Jacques Sarton X-Patchwork-Id: 16798 Return-Path: X-Original-To: patchwork@open-mesh.org Delivered-To: patchwork@open-mesh.org Received: from open-mesh.org (localhost [IPv6:::1]) by open-mesh.org (Postfix) with ESMTP id 059CA831A6; Tue, 1 Nov 2016 15:22:04 +0100 (CET) Authentication-Results: open-mesh.org; dmarc=none header.from=web.de Received: from mout.web.de (mout.web.de [212.227.17.11]) by open-mesh.org (Postfix) with ESMTPS id D09AE83189 for ; Tue, 1 Nov 2016 15:17:59 +0100 (CET) Authentication-Results: open-mesh.org; dmarc=none header.from=web.de Received: from pc3.jjsarton.de ([109.75.223.223]) by smtp.web.de (mrweb103) with ESMTPSA (Nemesis) id 0MOipW-1byqK91JaQ-00689f for ; Tue, 01 Nov 2016 15:17:59 +0100 To: b.a.t.m.a.n@lists.open-mesh.org From: Jean-Jacques Sarton Message-ID: <14097889-e13c-70ae-3408-67fcf0271a96@web.de> Date: Tue, 1 Nov 2016 15:17:58 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 X-Provags-ID: V03:K0:5EsZVxoyW5puiMJsfhY3Qe2eEeoXrGNIFML1w0Uq78vS3YUH5xk u9oXyBH792sj2FqUmBWl2BY7quLVaOjy0RaVbHpFwshGKuZo+YRdOe11I8PGSCYwODZ/gqW z6xXGGHj07cGXxteablqo6OY5A6bSqg1M4bzZTflfQdMi0pky8lrAD/R7zv7zTEhrjbSZB8 q+pwvMVfxB05ajKzrT8ow== X-UI-Out-Filterresults: notjunk:1; V01:K0:9GxRC2NDtVs=:anLBmaMJLjcWH+LrUmbrtd Ql2yS2E1XPCKbF+lu6RsQB7jmx/8c29vUUUBkT75KC+Jvi88hWIYEZ633/J725f9mdLIBsubp XCrfhEt1/EXbhyicobrSl1gly16GvNMs8CPELYWKY26vx0+vVJC3GeCo7WKWvmF/pQ4o+Jwms Drl6MfedCaQSsFshRjZdWQ37GqQ2K0O7nd72ZN52FWS4jt1YuAsKHw/y2UMZ4sqhYtb4WBPHd oSZVHeviwKR8jZqgBD0dJ5ijF1VOD88Viqj1mXSVygDEJxgfDjgL1VHfaMM5pvPuLhOFBkiEl vcNkfAhRptfx3ttnGmuSxfJfHLzm8DSYi8ZkDerStNhIu0amZ4PHmKeZ1lsTPIo4iJZ05FTiO +WvMFydqtpcNGmxeEWRZHzak9w8zb5Pc3q5wLsuLi4m3iklihFJaQXrXcRfiXABKLu2KwWTUo PbTnsVs6nWJNtnNB/ev7NLsq4vGTPQ5C+rYz4L8nm/FJcrzocM+WHqWch9dlK0f42BNRi510T KTmS6pBQ0J3DMEHOWSnwgH48D1mW5atGzqmWj4TQvkqkYNuvJ5vlr6C6dpO1tAH94l9agUmah FZKGOmhmVNu6COImIyjERsXbDFGAgyoFnfWC30y9uBsiJW/Xy6RmE+MMt/DS/4fPYQRVlOThz faIWQY2WQ3i02bo5oPWyU5CNkmFXwvgjUx14+Mulkzdogv/PP97a4Tzj83bycZnADOPhHJ/aa wGvfaUcb2DOfC+LVGmoM5CyJuB3Z/I5FsfyxqC4KSC74HlIrnebGRgUwgLcmFIQNPGZyxbSPA noh2CNf X-Mailman-Approved-At: Tue, 01 Nov 2016 15:22:02 +0100 Subject: [B.A.T.M.A.N.] PATCH alfred X-BeenThere: b.a.t.m.a.n@lists.open-mesh.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: The list for a Better Approach To Mobile Ad-hoc Networking List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: The list for a Better Approach To Mobile Ad-hoc Networking Errors-To: b.a.t.m.a.n-bounces@lists.open-mesh.org Sender: "B.A.T.M.A.N" I had problem with alfre which don't start. I'am using netfs. Swen has proposed a patch which remove the batadv_interface_check() function. May way is an other regarding the transitional period where the old an new feature are to be supported. Signed-off-by: jj.sarton@t-online.de diff --git a/batadv_query.c b/batadv_query.c index a671b79..c8732ef 100644 --- a/batadv_query.c +++ b/batadv_query.c @@ -136,7 +136,7 @@ int ipv6_to_mac(const struct in6_addr *addr, struct ether_addr *mac) return 0; } -int batadv_interface_check(const char *mesh_iface) +int batadv_interface_check_debugfs(const char *mesh_iface) { char full_path[MAX_PATH + 1]; FILE *f; @@ -166,6 +166,18 @@ int batadv_interface_check(const char *mesh_iface) return 0; } +int batadv_interface_check(const char *mesh_iface) +{ + int ret = 0; + enable_net_admin_capability(1); + ret = batadv_interface_check_netlink(mesh_iface); + enable_net_admin_capability(0); + + if ( ret < 0 ) + return batadv_interface_check_debugfs(mesh_iface); + return 0; +} + static int translate_mac_debugfs(const char *mesh_iface, const struct ether_addr *mac, struct ether_addr *mac_out) diff --git a/netlink.c b/netlink.c index 1b5695c..ca311e7 100644 --- a/netlink.c +++ b/netlink.c @@ -365,3 +365,30 @@ int get_tq_netlink(const char *mesh_iface, const struct ether_addr *mac, return 0; } + +int batadv_interface_check_netlink(const char *mesh_iface) +{ + struct get_tq_netlink_opts opts = { + .tq = 0, + .found = false, + .query_opts = { + .err = 0, + }, + }; + int ret = 0; + + memset(&opts.mac, 0, ETH_ALEN); + + ret = netlink_query_common(mesh_iface, BATADV_CMD_GET_ORIGINATORS, + get_tq_netlink_cb, &opts.query_opts); + if (ret < 0) + return ret; + + memset(&opts.mac, 0, ETH_ALEN); + ret = netlink_query_common(mesh_iface, BATADV_CMD_GET_ORIGINATORS, + get_tq_netlink_cb, &opts.query_opts); + + if (ret < 0) + return ret; + return 0; +} diff --git a/netlink.h b/netlink.h index b08e872..9bc75a1 100644 --- a/netlink.h +++ b/netlink.h @@ -49,6 +49,7 @@ int translate_mac_netlink(const char *mesh_iface, const struct ether_addr *mac, struct ether_addr *mac_out); int get_tq_netlink(const char *mesh_iface, const struct ether_addr *mac, uint8_t *tq); +int batadv_interface_check_netlink(const char *mesh_iface); extern struct nla_policy batadv_netlink_policy[];