From patchwork Tue Nov 1 19:07:24 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: 16801 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 0C358831DB; Tue, 1 Nov 2016 20:07:30 +0100 (CET) Authentication-Results: open-mesh.org; dmarc=none header.from=t-online.de Received: from mailout06.t-online.de (mailout06.t-online.de [194.25.134.19]) by open-mesh.org (Postfix) with ESMTPS id 6C254831DA for ; Tue, 1 Nov 2016 20:07:28 +0100 (CET) Authentication-Results: open-mesh.org; dmarc=none header.from=t-online.de Received: from fwd26.aul.t-online.de (fwd26.aul.t-online.de [172.20.26.131]) by mailout06.t-online.de (Postfix) with SMTP id 3621941C0660 for ; Tue, 1 Nov 2016 20:07:28 +0100 (CET) Received: from pc3.jjsarton.de (Vrdq+uZUYhqaSotvpIkQcP6Gqt2Ye7LENuND6bfFTy1QODdg5yVo8b0CgiI+nhjQRf@[109.75.223.223]) by fwd26.t-online.de with (TLSv1.2:ECDHE-RSA-AES256-SHA encrypted) esmtp id 1c1eP7-1qcMue0; Tue, 1 Nov 2016 20:07:25 +0100 To: b.a.t.m.a.n@lists.open-mesh.org From: Jean-Jacques Sarton Openpgp: id=F1A7034CEF4FAA67C999A7B033D25B891DC2C10B Message-ID: Date: Tue, 1 Nov 2016 20:07:24 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 X-ID: Vrdq+uZUYhqaSotvpIkQcP6Gqt2Ye7LENuND6bfFTy1QODdg5yVo8b0CgiI+nhjQRf X-TOI-MSGID: fa871dab-2f0b-4332-8fff-06e6690940e0 Subject: [B.A.T.M.A.N.] [PATCH] Alfred not working within network name space 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" This patch shall allow to use the debugfs as previouly, including the check for valify of the interface used. For netns the check seem to be implemented within the function netlink_query_common(). For netlink we check if the originators ans transtable_global informations are accessible through netlink. To: b.a.t.m.a.n@lists.open-mesh.org Signed-off-by: Jean-Jacques Sarton --- batadv_query.c | 14 +++++++++++++- netlink.c | 27 +++++++++++++++++++++++++++ netlink.h | 1 + 3 files changed, 41 insertions(+), 1 deletion(-) diff --git a/batadv_query.c b/batadv_query.c index a671b79..dc8a042 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..9288770 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_TRANSTABLE_GLOBAL, + 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[];