From patchwork Mon Oct 12 08:10:24 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandru Ardelean X-Patchwork-Id: 528945 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from arrakis.dune.hu (arrakis.dune.hu [78.24.191.176]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 8264D1402AE for ; Mon, 12 Oct 2015 19:10:48 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=UouhcTuO; dkim-atps=neutral Received: from arrakis.dune.hu (localhost [127.0.0.1]) by arrakis.dune.hu (Postfix) with ESMTP id 1E41E28BB54; Mon, 12 Oct 2015 10:09:07 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on arrakis.dune.hu X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID autolearn=unavailable version=3.3.2 Received: from arrakis.dune.hu (localhost [127.0.0.1]) by arrakis.dune.hu (Postfix) with ESMTP id 38C1628B9A9 for ; Mon, 12 Oct 2015 10:09:01 +0200 (CEST) X-policyd-weight: using cached result; rate: -8.5 Received: from mail-wi0-f174.google.com (mail-wi0-f174.google.com [209.85.212.174]) by arrakis.dune.hu (Postfix) with ESMTPS for ; Mon, 12 Oct 2015 10:09:00 +0200 (CEST) Received: by wijq8 with SMTP id q8so45442072wij.0 for ; Mon, 12 Oct 2015 01:10:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=3X7ct+ML9k3SqrZLGf6F8U3uZKk012H7/Ky8aQNYHSw=; b=UouhcTuOgcbLOJuzXneA2oHFkBRuLsZOig9R7kGx3bjxvAuqgp+UUpDzvwsvuZ+dEq hj7f8fcLPWx5siU+/BK1Tc6lKKrMckA8aP26wkspC/QaTYSzGSurbOAOWPkx5AAxQNOb l1PhIvyCNKx/X+4WipHKOmV3TFjwUIQqJQL1qsFk5yGDN5EycKYUbr5JY4Qu6SItkYbc NU+mqsz6r+lwmd1Fdgk+EOmKJxzv3EwfKcOBgHERl+UtB5cDPLPjmdRlNq8wf5zDV50y pRkTUwBTVq2bPWlQ0iRWfbwUZl5GDOI/ZdHxaJLDjZIHpSfSCjgGH7TFxcFQLJsCM+WC 8A3w== X-Received: by 10.194.76.67 with SMTP id i3mr32314035wjw.5.1444637431431; Mon, 12 Oct 2015 01:10:31 -0700 (PDT) Received: from orion.ocedo.cluj.local ([5.2.198.78]) by smtp.gmail.com with ESMTPSA id bk4sm18301677wjc.1.2015.10.12.01.10.30 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 12 Oct 2015 01:10:30 -0700 (PDT) From: Alexandru Ardelean To: openwrt-devel@lists.openwrt.org Date: Mon, 12 Oct 2015 11:10:24 +0300 Message-Id: <1444637424-4733-1-git-send-email-ardeleanalex@gmail.com> X-Mailer: git-send-email 2.1.4 Cc: Alexandru Ardelean Subject: [OpenWrt-Devel] [PATCH] lldpd: implement a reload hook X-BeenThere: openwrt-devel@lists.openwrt.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: OpenWrt Development List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: openwrt-devel-bounces@lists.openwrt.org Sender: "openwrt-devel" From: Alexandru Ardelean Seems the default one is not working as expected. The way that reload should work is that the 'start' service call should return 1 (if lldpd is running) and then a normal restart would be called. However, for lldpd a reload would mean just clearing all custom TLVs (if they're configured) and reloading the configuration. So, this patch adds a reload hook, which would: - 'start' lldpd if it's not running (because we return 1 if not running) - reload configuration if it is running (also previously clearing custom TLVs if present) Signed-off-by: Alexandru Ardelean --- package/network/services/lldpd/files/lldpd.init | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/package/network/services/lldpd/files/lldpd.init b/package/network/services/lldpd/files/lldpd.init index 3d7d8b9..04e5b8c 100644 --- a/package/network/services/lldpd/files/lldpd.init +++ b/package/network/services/lldpd/files/lldpd.init @@ -4,6 +4,8 @@ START=90 USE_PROCD=1 +LLDPCLI=/usr/sbin/lldpcli +LLDPSOCKET=/var/run/lldpd.socket find_release_info() { @@ -71,6 +73,21 @@ start_service() { procd_close_instance } +service_running() { + pgrep -x /usr/sbin/lldpd &> /dev/null +} + +reload_service() { + running || return 1 + # Custom TLVs are special and should be + # reloaded from config during lldpd reload + $LLDPCLI -u $LLDPSOCKET unconfigure lldp custom-tlv &> /dev/null + $LLDPCLI -u $LLDPSOCKET -c /etc/lldpd.conf -c /etc/lldpd.d &> /dev/null + # Broadcast update over the wire + $LLDPCLI -u $LLDPSOCKET update &> /dev/null + return 0 +} + stop_service() { - rm -f /var/run/lldpd.socket /var/run/lldpd.pid + rm -rf /var/run/lldp $LLDPSOCKET }