From e33f191d07051240cbd6d1df5d4ce47a81bc0529 Mon Sep 17 00:00:00 2001 From: Joachim Wiberg Date: Thu, 2 Mar 2023 14:13:40 +0100 Subject: [PATCH] package/profeth: add support for starting and monitoring PROFINET An Infix build with PROFINET gears Net-SNMP heavily towards acting as a servant to profeth (p-net stack). This will be hard-coded for now until we've integrated it all better in Clixon. Signed-off-by: Joachim Wiberg --- package/profeth/default | 1 + package/profeth/profeth.mk | 13 ++++++++++ package/profeth/set_profinet_leds | 24 +++++++++++++++++++ package/profeth/snmpd.conf | 21 ++++++++++++++++ package/profeth/sysctl.conf | 2 ++ package/profeth/tmpfiles.conf | 3 +++ .../skeleton-init-finit.mk | 7 ++++++ .../etc/finit.d/available/profeth.conf | 1 + 8 files changed, 72 insertions(+) create mode 100644 package/profeth/default create mode 100755 package/profeth/set_profinet_leds create mode 100644 package/profeth/snmpd.conf create mode 100644 package/profeth/sysctl.conf create mode 100644 package/profeth/tmpfiles.conf create mode 100644 package/skeleton-init-finit/skeleton/etc/finit.d/available/profeth.conf diff --git a/package/profeth/default b/package/profeth/default new file mode 100644 index 00000000..526be994 --- /dev/null +++ b/package/profeth/default @@ -0,0 +1 @@ +PROFETH_ARGS="-i vlan1,e0,e1,e2,e3,e4,e5,e6,e7,e8,e9" diff --git a/package/profeth/profeth.mk b/package/profeth/profeth.mk index 3e0a3836..2cadcc74 100644 --- a/package/profeth/profeth.mk +++ b/package/profeth/profeth.mk @@ -16,4 +16,17 @@ define PROFETH_POST_RSYNC_INSTALL_OPTS endef PROFETH_POST_RSYNC_HOOKS += PROFETH_POST_RSYNC_INSTALL_OPTS +define PROFETH_INSTALL_EXTRA + cp $(PROFETH_PKGDIR)/sysctl.conf $(TARGET_DIR)/etc/sysctl.d/profeth.conf + cp $(PROFETH_PKGDIR)/set_profinet_leds $(TARGET_DIR)/usr/sbin/ + mkdir -p $(TARGET_DIR)/etc/profeth + mkdir -p $(TARGET_DIR)/etc/snmp + mkdir -p $(TARGET_DIR)/etc/tmpfiles.d + mkdir -p $(TARGET_DIR)/etc/default + cp $(PROFETH_PKGDIR)/snmpd.conf $(TARGET_DIR)/etc/snmp/ + cp $(PROFETH_PKGDIR)/tmpfiles.conf $(TARGET_DIR)/etc/tmpfiles.d/snmpd.conf + cp $(PROFETH_PKGDIR)/default $(TARGET_DIR)/etc/default/profeth +endef +PROFETH_TARGET_FINALIZE_HOOKS += PROFETH_INSTALL_EXTRA + $(eval $(autotools-package)) diff --git a/package/profeth/set_profinet_leds b/package/profeth/set_profinet_leds new file mode 100755 index 00000000..ee82e1b7 --- /dev/null +++ b/package/profeth/set_profinet_leds @@ -0,0 +1,24 @@ +#!/bin/sh +# Used by profeth to flash LED(s), only a dummy for now + +if [ $# -ne 2 ]; then + echo "Usage: ${0} led_number led_state" + echo " where:" + echo " led_number: LED number. Number 1 for sample app data LED" + echo " Number 2 for mandatory Profinet signal LED" + echo " led_state: 1 for on, 0 for off" + echo " Exit code: 0 on success, 1 on error" + exit 1 +fi + +LED_NUMBER=$1 +LED_STATE=$2 + +if ! [ "${LED_STATE}" = "0" -o "${LED_STATE}" = "1" ]; then + echo "Wrong LED state: ${LED_STATE}" + exit 1 +fi + +echo ${LED_STATE} > "/tmp/pnet_led_${LED_NUMBER}.txt" + +exit 0 diff --git a/package/profeth/snmpd.conf b/package/profeth/snmpd.conf new file mode 100644 index 00000000..450b409a --- /dev/null +++ b/package/profeth/snmpd.conf @@ -0,0 +1,21 @@ +#rocommunity public +#rwcommunity private +#sysName infix +#sysLocation kernelkit +#syscontact kernelkit@googlegroups.com +#sysServices 10 + +#master agentx +#agentXTimeout 5 +#engineIDType 3 +#engineIDNic vlan1 + +master agentx +agentXSocket /var/run/agentx/master + +agentaddress udp:161 +view systemonly included .1.3.6.1.2.1.1 +view systemonly included .1.3.6.1.2.1.2.2 +view systemonly included .1.0.8802.1.1.2 +rocommunity public default -V systemonly +rwcommunity private default -V systemonly diff --git a/package/profeth/sysctl.conf b/package/profeth/sysctl.conf new file mode 100644 index 00000000..24dfd3fb --- /dev/null +++ b/package/profeth/sysctl.conf @@ -0,0 +1,2 @@ +# Explicitly required by p-net, , but also IANA +net.ipv4.ip_local_port_range = 49152 60999 diff --git a/package/profeth/tmpfiles.conf b/package/profeth/tmpfiles.conf new file mode 100644 index 00000000..751b8e0e --- /dev/null +++ b/package/profeth/tmpfiles.conf @@ -0,0 +1,3 @@ +# For Net-SNMP +d /var/run/agentx - - - + diff --git a/package/skeleton-init-finit/skeleton-init-finit.mk b/package/skeleton-init-finit/skeleton-init-finit.mk index b723b77f..c04b5d9a 100644 --- a/package/skeleton-init-finit/skeleton-init-finit.mk +++ b/package/skeleton-init-finit/skeleton-init-finit.mk @@ -148,6 +148,13 @@ endef SKELETON_INIT_FINIT_TARGET_FINALIZE_HOOKS += SKELETON_INIT_FINIT_SET_OPENSSH endif +ifeq ($(BR2_PACKAGE_PROFETH),y) +define SKELETON_INIT_FINIT_SET_PROFETH + cp $(SKELETON_INIT_FINIT_AVAILABLE)/profeth.conf $(FINIT_D)/available/ +endef +SKELETON_INIT_FINIT_TARGET_FINALIZE_HOOKS += SKELETON_INIT_FINIT_SET_PROFETH +endif + ifeq ($(BR2_PACKAGE_QUAGGA),y) define SKELETON_INIT_FINIT_SET_QUAGGA cp $(SKELETON_INIT_FINIT_AVAILABLE)/quagga/zebra.conf $(FINIT_D)/available/ diff --git a/package/skeleton-init-finit/skeleton/etc/finit.d/available/profeth.conf b/package/skeleton-init-finit/skeleton/etc/finit.d/available/profeth.conf new file mode 100644 index 00000000..aeb5ca91 --- /dev/null +++ b/package/skeleton-init-finit/skeleton/etc/finit.d/available/profeth.conf @@ -0,0 +1 @@ +service [2345789] env:-/etc/default/profeth profeth -s infix -p /etc/profeth $PROFETH_ARGS -- PROFΞTH daemon