mirror of
https://github.com/kernelkit/infix.git
synced 2026-07-29 20:23:01 +02:00
statd: refactor to autotools, same as confd
Fix issue #299 Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This commit is contained in:
@@ -1,36 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import subprocess
|
||||
import sys
|
||||
import json
|
||||
|
||||
def get_ethtool_output(interface):
|
||||
try:
|
||||
output = subprocess.check_output(['ethtool', interface], stderr=subprocess.DEVNULL, text=True)
|
||||
return output.splitlines()
|
||||
except subprocess.CalledProcessError:
|
||||
print("Error: Failed to run ethtool on interface", interface)
|
||||
sys.exit(1)
|
||||
|
||||
def parse_ethtool_output(lines, keys):
|
||||
result = {}
|
||||
for line in lines:
|
||||
line = line.strip()
|
||||
key = line.split(':', 1)[0].strip()
|
||||
if key in keys:
|
||||
key, value = line.split(':', 1)
|
||||
result[key.strip()] = value.strip()
|
||||
return result
|
||||
|
||||
if __name__ == "__main__":
|
||||
if len(sys.argv) != 2:
|
||||
print(f"Usage: {sys.argv[0]} INTERFACE")
|
||||
sys.exit(1)
|
||||
|
||||
interface = sys.argv[1]
|
||||
keys = ["Duplex", "Auto-negotiation"]
|
||||
|
||||
lines = get_ethtool_output(interface)
|
||||
parsed_data = parse_ethtool_output(lines, keys)
|
||||
|
||||
print(json.dumps(parsed_data, indent=4))
|
||||
+3
-10
@@ -11,20 +11,13 @@ STATD_LICENSE = BSD-3-Clause
|
||||
STATD_LICENSE_FILES = LICENSE
|
||||
STATD_REDISTRIBUTE = NO
|
||||
STATD_DEPENDENCIES = sysrepo libev libsrx jansson
|
||||
STATD_AUTORECONF = YES
|
||||
|
||||
define STATD_CONF_ENV
|
||||
CFLAGS="$(INFIX_CFLAGS)"
|
||||
endef
|
||||
|
||||
define STATD_BUILD_CMDS
|
||||
$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \
|
||||
LDFLAGS="$(TARGET_LDFLAGS)"
|
||||
endef
|
||||
|
||||
define STATD_INSTALL_TARGET_CMDS
|
||||
$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \
|
||||
DESTDIR="$(TARGET_DIR)" install
|
||||
endef
|
||||
STATD_CONF_OPTS = --prefix= --disable-silent-rules
|
||||
|
||||
define STATD_INSTALL_EXTRA
|
||||
cp $(STATD_PKGDIR)/statd.conf $(FINIT_D)/available/
|
||||
@@ -32,4 +25,4 @@ define STATD_INSTALL_EXTRA
|
||||
endef
|
||||
STATD_TARGET_FINALIZE_HOOKS += STATD_INSTALL_EXTRA
|
||||
|
||||
$(eval $(generic-package))
|
||||
$(eval $(autotools-package))
|
||||
|
||||
@@ -274,9 +274,9 @@
|
||||
sysrepocfg -d operational -X -f json -x /ietf-system:system-state/infix-system:software | \
|
||||
jq -r '.[][].slot |= sort_by(.name)' > "$tmp"
|
||||
if [ -n "$KLISH_PARAM_name" ]; then
|
||||
cat "$tmp" | /libexec/infix/cli-pretty "infix-system" -n "$KLISH_PARAM_name"
|
||||
cat "$tmp" | /usr/libexec/statd/cli-pretty "infix-system" -n "$KLISH_PARAM_name"
|
||||
else
|
||||
cat "$tmp" | /libexec/infix/cli-pretty "infix-system"
|
||||
cat "$tmp" | /usr/libexec/statd/cli-pretty "infix-system"
|
||||
fi
|
||||
rm "$tmp"
|
||||
</ACTION>
|
||||
@@ -323,14 +323,14 @@
|
||||
fi
|
||||
fi
|
||||
sysrepocfg -f json -X -d operational -x "/ietf-routing:routing/ribs" | \
|
||||
/libexec/infix/cli-pretty "ietf-routing" -n "$KLISH_PARAM_name"
|
||||
/usr/libexec/statd/cli-pretty "ietf-routing" -n "$KLISH_PARAM_name"
|
||||
</ACTION>
|
||||
</COMMAND>
|
||||
|
||||
<COMMAND name="hardware" help="Show hardware information">
|
||||
<ACTION sym="script">
|
||||
sysrepocfg -f json -X -d operational -x "/ietf-hardware:hardware" | \
|
||||
/libexec/infix/cli-pretty "ietf-hardware"
|
||||
/usr/libexec/statd/cli-pretty "ietf-hardware"
|
||||
</ACTION>
|
||||
</COMMAND>
|
||||
|
||||
@@ -346,10 +346,10 @@
|
||||
if [ -n "$KLISH_PARAM_name" ]; then
|
||||
sysrepocfg -f json -X -d operational -x \
|
||||
"/ietf-interfaces:interfaces/interface[name='$KLISH_PARAM_name']" | \
|
||||
/libexec/infix/cli-pretty "ietf-interfaces" -n "$KLISH_PARAM_name"
|
||||
/usr/libexec/statd/cli-pretty "ietf-interfaces" -n "$KLISH_PARAM_name"
|
||||
else
|
||||
sysrepocfg -f json -X -d operational -m ietf-interfaces | \
|
||||
/libexec/infix/cli-pretty "ietf-interfaces"
|
||||
/usr/libexec/statd/cli-pretty "ietf-interfaces"
|
||||
fi
|
||||
</ACTION>
|
||||
</COMMAND>
|
||||
|
||||
@@ -1,3 +1,28 @@
|
||||
*~
|
||||
*.o
|
||||
statd
|
||||
|
||||
/aclocal.m4
|
||||
/autom4te.cache/
|
||||
/aux
|
||||
/clixon.xml
|
||||
/compile
|
||||
/config.h
|
||||
/config.h.in
|
||||
/config.guess
|
||||
/config.log
|
||||
/config.status
|
||||
/config.sub
|
||||
/configure
|
||||
/depcomp
|
||||
/install-sh
|
||||
/libtool
|
||||
/ltmain.sh
|
||||
/m4
|
||||
/missing
|
||||
|
||||
GPATH
|
||||
GRTAGS
|
||||
GTAGS
|
||||
Makefile
|
||||
Makefile.in
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
CFLAGS += -Wall -Wextra -Werror
|
||||
CPPFLAGS += -D_GNU_SOURCE
|
||||
LDLIBS += -lsysrepo -lev -lyang -ljansson -lsrx -lite
|
||||
|
||||
TARGET = statd
|
||||
HEADERS = shared.h
|
||||
SRC = statd.c shared.c
|
||||
OBJ = $(SRC:.c=.o)
|
||||
|
||||
all: $(TARGET)
|
||||
|
||||
.c.o:
|
||||
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
|
||||
|
||||
$(OBJ): $(SRC) $(HEADERS)
|
||||
|
||||
$(TARGET): $(OBJ)
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS)
|
||||
|
||||
clean:
|
||||
-rm -f $(TARGET) $(OBJ)
|
||||
|
||||
distclean: clean
|
||||
-rm *~
|
||||
|
||||
install: $(TARGET)
|
||||
install -D $(TARGET) $(DESTDIR)/sbin/
|
||||
@@ -0,0 +1,13 @@
|
||||
DISTCLEANFILES = *~ *.d
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
pkglibexec_SCRIPTS = cli-pretty yanger ospf-status
|
||||
|
||||
sbin_PROGRAMS = statd
|
||||
statd_SOURCES = statd.c shared.c shared.h
|
||||
statd_CPPFLAGS = -D_DEFAULT_SOURCE -D_GNU_SOURCE
|
||||
statd_CFLAGS = -W -Wall -Wextra
|
||||
statd_CFLAGS += $(jansson_CFLAGS) $(libite_CFLAGS) $(libyang_CFLAGS)
|
||||
statd_CFLAGS += $(sysrepo_CFLAGS) $(libsrx_CFLAGS)
|
||||
statd_LDADD = $(jansson_LIBS) $(libite_LIBS) $(libyang_LIBS)
|
||||
statd_LDADD += $(sysrepo_LIBS) $(libsrx_LIBS)
|
||||
Executable
+3
@@ -0,0 +1,3 @@
|
||||
#!/bin/sh
|
||||
|
||||
autoreconf -W portability -vifm
|
||||
@@ -0,0 +1,76 @@
|
||||
AC_PREREQ(2.61)
|
||||
AC_INIT([statd], [1.0.0], [https://github.com/kernelkit/infix/issues])
|
||||
AM_INIT_AUTOMAKE(1.11 foreign subdir-objects)
|
||||
AM_SILENT_RULES(yes)
|
||||
|
||||
AC_CONFIG_FILES([
|
||||
Makefile
|
||||
])
|
||||
|
||||
AC_PROG_CC
|
||||
AC_PROG_INSTALL
|
||||
|
||||
# Check for pkg-config first, warn if it's not installed
|
||||
PKG_PROG_PKG_CONFIG
|
||||
|
||||
PKG_CHECK_MODULES([jansson], [jansson >= 2.0.0])
|
||||
PKG_CHECK_MODULES([libite], [libite >= 2.5.0])
|
||||
PKG_CHECK_MODULES([libyang], [libyang >= 2.1.80])
|
||||
PKG_CHECK_MODULES([sysrepo], [sysrepo >= 2.2.36])
|
||||
PKG_CHECK_MODULES([libsrx], [libsrx >= 1.0.0])
|
||||
|
||||
AC_CHECK_HEADER([ev.h],
|
||||
[AC_CHECK_LIB([ev], [ev_loop_new],
|
||||
[],
|
||||
[AC_MSG_ERROR("libev not found")] )],
|
||||
[AC_MSG_ERROR("ev.h not found")]
|
||||
)
|
||||
|
||||
test "x$prefix" = xNONE && prefix=$ac_default_prefix
|
||||
test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
|
||||
|
||||
DATAROOTDIR=`eval echo $datarootdir`
|
||||
DATAROOTDIR=`eval echo $DATAROOTDIR`
|
||||
AC_SUBST(DATAROOTDIR)
|
||||
|
||||
LIBDIR=`eval echo $libdir`
|
||||
LIBDIR=`eval echo $LIBDIR`
|
||||
AC_SUBST(LIBDIR)
|
||||
|
||||
LOCALSTATEDIR=`eval echo $localstatedir`
|
||||
LOCALSTATEDIR=`eval echo $LOCALSTATEDIR`
|
||||
AC_SUBST(LOCALSTATEDIR)
|
||||
|
||||
RUNSTATEDIR=`eval echo $runstatedir`
|
||||
RUNSTATEDIR=`eval echo $RUNSTATEDIR`
|
||||
AC_SUBST(RUNSTATEDIR)
|
||||
|
||||
SYSCONFDIR=`eval echo $sysconfdir`
|
||||
SYSCONFDIR=`eval echo $SYSCONFDIR`
|
||||
AC_SUBST(SYSCONFDIR)
|
||||
|
||||
AC_OUTPUT
|
||||
|
||||
cat <<EOF
|
||||
|
||||
------------------ Summary ------------------
|
||||
$PACKAGE_NAME version $PACKAGE_VERSION
|
||||
Prefix................: $prefix
|
||||
Exec prefix...........: $eprefix
|
||||
Sysconfdir............: `eval echo $sysconfdir`
|
||||
Localstatedir.........: `eval echo $localstatedir`
|
||||
Default fstab.........: `eval echo $fstab`
|
||||
System environment....: ${sysconfig_path:-${sysconfig}}
|
||||
C Compiler............: $CC $CFLAGS $CPPFLAGS $LDFLAGS $LIBS
|
||||
Linker................: $LD $LLDP_LDFLAGS $LLDP_BIN_LDFLAGS $LDFLAGS $LIBS
|
||||
|
||||
------------- Compiler version --------------
|
||||
$($CC --version || true)
|
||||
-------------- Linker version ---------------
|
||||
$($LD --version || true)
|
||||
---------------------------------------------
|
||||
|
||||
Check the above options and compile with:
|
||||
${MAKE-make}
|
||||
|
||||
EOF
|
||||
+1
-1
@@ -134,7 +134,7 @@ static int ly_add_yanger_data(const struct ly_ctx *ctx, struct lyd_node **parent
|
||||
const char *model, const char *arg)
|
||||
{
|
||||
char *yanger_args[5] = {
|
||||
"/libexec/infix/yanger",
|
||||
"/usr/libexec/statd/yanger",
|
||||
(char *)model,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -330,7 +330,7 @@ def add_ospf_routes(ospf):
|
||||
def add_ospf(ospf):
|
||||
"""Populate OSPF status"""
|
||||
|
||||
cmd = ['/libexec/infix/ospf-status']
|
||||
cmd = ['/usr/libexec/statd/ospf-status']
|
||||
data = run_json_cmd(cmd, "")
|
||||
|
||||
ospf["ietf-ospf:router-id"] = data["routerId"]
|
||||
@@ -4,7 +4,7 @@ SCRIPT_PATH="$(dirname "$(readlink -f "$0")")"
|
||||
ROOT_PATH="$SCRIPT_PATH/../../../"
|
||||
CLI_OUTPUT_PATH="$SCRIPT_PATH/cli-output/"
|
||||
|
||||
CLI_PRETTY_TOOL="$ROOT_PATH/board/netconf/rootfs/libexec/infix/cli-pretty"
|
||||
CLI_PRETTY_TOOL="$ROOT_PATH/src/statd/cli-pretty"
|
||||
SR_EMULATOR_TOOL="$SCRIPT_PATH/sysrepo-emulator.sh"
|
||||
|
||||
CLI_OUTPUT_FILE="$(mktemp)"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
SCRIPT_PATH="$(dirname "$(readlink -f "$0")")"
|
||||
ROOT_PATH="$SCRIPT_PATH/../../../"
|
||||
|
||||
YANGER_TOOL="$ROOT_PATH/board/netconf/rootfs/libexec/infix/yanger"
|
||||
YANGER_TOOL="$ROOT_PATH/src/statd/yanger"
|
||||
|
||||
INTERFACES="br0 br1 e0 e1 e2 e3 e4"
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ if [ ! -e "$SCRIPT_PATH/$json" ]; then
|
||||
fi
|
||||
|
||||
cat "$SCRIPT_PATH/$json" | \
|
||||
"$SCRIPT_PATH"/../../../board/netconf/rootfs/libexec/infix/cli-pretty \
|
||||
"$SCRIPT_PATH"/../../../src/statd/cli-pretty \
|
||||
"$module" $*
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "ok 1 - $json printed without crashing"
|
||||
|
||||
Reference in New Issue
Block a user