From patchwork Tue Jun 10 14:54:47 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hendrik Schwartke X-Patchwork-Id: 357956 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 2BD111400AF for ; Wed, 11 Jun 2014 00:55:14 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751110AbaFJOzN (ORCPT ); Tue, 10 Jun 2014 10:55:13 -0400 Received: from mout.kundenserver.de ([212.227.17.10]:63195 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750717AbaFJOzM (ORCPT ); Tue, 10 Jun 2014 10:55:12 -0400 Received: from localhost.localdomain (dslb-092-072-067-176.pools.arcor-ip.net [92.72.67.176]) by mrelayeu.kundenserver.de (node=mreue105) with ESMTP (Nemesis) id 0M0zDb-1WdFZZ0X5L-00v5q8; Tue, 10 Jun 2014 16:55:10 +0200 From: Hendrik Schwartke To: netfilter-devel@vger.kernel.org Cc: Hendrik Schwartke Subject: [PATCH 2/2] Enhanced error message which is displayed if an error occured while creating a chain. Date: Tue, 10 Jun 2014 16:54:47 +0200 Message-Id: <1402412087-9825-2-git-send-email-hendrik@os-t.de> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1402412087-9825-1-git-send-email-hendrik@os-t.de> References: <1402412087-9825-1-git-send-email-hendrik@os-t.de> X-Provags-ID: V02:K0:RZ9KwUZdoxWY4BOf4HNv/+7oFLcRzY33S4X3Kte9Ip8 JXJ1ykGZyXtZWE2h9/a1gbbL2Uz3vLTJdsUxp5bGrpbk/AeNGU C7SlzerJyRjAW2dKZbyS7xlQp+Om5CLXRhVPcYMmyuicuAs353 nTnwFgXy+y78VBaOJMu0Qb99DL7XmPjGw2yySYffQO7aZssVBn 3F3X2DyrpVj+JT24XDluZ1EGgLyRiRq2OElsPBjkVFoZpmBI3d lH/X6O7CAzb1lkLqfScb5Au394K5gDdlzfah8uneTxb6PwwPrT M8cDrV+iyehneWEVVebL+lrqsSprI4vAOf4ZPXdZ+v+C8tAM62 4e2b1dW2pprQR15Y5tX9CyiugqOlM26Z5tuHZzJaNYKj+LIubZ vBN/d+0Xmlpbw== Sender: netfilter-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netfilter-devel@vger.kernel.org Creating a base chain which depends on unsupported kernel features (e.g. creating a chain with a nat hook without loading the nat kernel module) results in a confusing error message. This patch added a meaningful hint. --- src/netlink.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/netlink.c b/src/netlink.c index 1b174bd..d4a71b8 100644 --- a/src/netlink.c +++ b/src/netlink.c @@ -480,10 +480,11 @@ int netlink_add_chain(struct netlink_ctx *ctx, const struct handle *h, struct nft_chain *nlc; int err; + int is_basechain = chain != NULL && chain->flags & CHAIN_F_BASECHAIN; unsigned int flags = excl ? NLM_F_EXCL : 0; nlc = alloc_nft_chain(h); - if (chain != NULL && chain->flags & CHAIN_F_BASECHAIN) { + if (is_basechain) { nft_chain_attr_set_u32(nlc, NFT_CHAIN_ATTR_HOOKNUM, chain->hooknum); nft_chain_attr_set_s32(nlc, NFT_CHAIN_ATTR_PRIO, @@ -500,8 +501,13 @@ int netlink_add_chain(struct netlink_ctx *ctx, const struct handle *h, nft_chain_free(nlc); if (err < 0) { - netlink_io_error(ctx, loc, "Could not add chain: %s", - strerror(errno)); + const char *expl=""; + if(is_basechain && errno==ENOENT) + expl=" - perhaps some kernel modules are not" + " loaded or the kernel doesn't include" + " necessary features."; + netlink_io_error(ctx, loc, "Could not add chain: %s%s", + strerror(errno), expl); } return err; }