From 300cca57a87d2289d3d4f42c1e756454b0e56e6c Mon Sep 17 00:00:00 2001 From: Suvendhu Hansa <suvendhu.hansa@iopsys.eu> Date: Fri, 17 Jan 2025 05:57:15 +0000 Subject: [PATCH] Datamodel Vendor extensions for FD and ActiveConnections --- src/Makefile | 3 +++ src/deviceinfo.c | 39 ++++++++++++++++++++++++++++++++++++++- src/network.c | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 73 insertions(+), 1 deletion(-) diff --git a/src/Makefile b/src/Makefile index 5875fba..3410d21 100644 --- a/src/Makefile +++ b/src/Makefile @@ -39,6 +39,9 @@ endif ifeq ($(SYSMNGR_VENDOR_EXTENSIONS),y) PROG_CFLAGS += -DSYSMNGR_VENDOR_EXTENSIONS +ifndef CUSTOM_PREFIX +PROG_CFLAGS += -DCUSTOM_PREFIX=\"X_IOPSYS_EU_\" +endif endif ifneq ($(filter y,$(SYSMNGR_FIRMWARE_IMAGE) $(SYSMNGR_FWBANK_UBUS_SUPPORT)),) diff --git a/src/deviceinfo.c b/src/deviceinfo.c index 1b56254..212e8d2 100644 --- a/src/deviceinfo.c +++ b/src/deviceinfo.c @@ -226,11 +226,44 @@ static int get_deviceinfo_base_mac_addr(char *refparam, struct dmctx *ctx, void db_get_value_string("device", "deviceinfo", "BaseMACAddress", value); return 0; } + +static int get_DeviceInfoFileDescriptors_Used(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) +{ + char val[32] = {'\0'}; + dm_read_sysfs_file("/proc/sys/fs/file-nr", val, sizeof(val)); + if ('\0' == val[0]) { + *value = dmstrdup("-1"); + } else { + *value = dmstrdup(val); + } + return 0; +} + +static int get_DeviceInfoFileDescriptors_MaxAllowed(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) +{ + char val[32] = {'\0'}; + dm_read_sysfs_file("/proc/sys/fs/file-max", val, sizeof(val)); + if ('\0' == val[0]) { + *value = dmstrdup("-1"); + } else { + *value = dmstrdup(val); + } + return 0; +} #endif /********************************************************************************************************************************** * OBJ & LEAF DEFINITION ***********************************************************************************************************************************/ +#ifdef SYSMNGR_VENDOR_EXTENSIONS +DMLEAF tDeviceInfoFileDescriptorsParams[] = { +/* PARAM, permission, type, getvalue, setvalue, bbfdm_type*/ +{"Used", &DMREAD, DMT_INT, get_DeviceInfoFileDescriptors_Used, NULL, BBFDM_BOTH}, +{"MaxAllowed", &DMREAD, DMT_INT, get_DeviceInfoFileDescriptors_MaxAllowed, NULL, BBFDM_BOTH}, +{0} +}; +#endif + /* *** Device.DeviceInfo. *** */ DMOBJ tDeviceInfoObj[] = { /* OBJ, permission, addobj, delobj, checkdep, browseinstobj, nextdynamicobj, dynamicleaf, nextobj, leaf, linker, bbfdm_type*/ @@ -266,6 +299,10 @@ DMOBJ tDeviceInfoObj[] = { {"TemperatureStatus", &DMREAD, NULL, NULL, "file:/etc/sysmngr/temperature.sh", NULL, NULL, NULL, tDeviceInfoTemperatureStatusObj, tDeviceInfoTemperatureStatusParams, NULL, BBFDM_BOTH}, #endif +#ifdef SYSMNGR_VENDOR_EXTENSIONS +{CUSTOM_PREFIX"FileDescriptors", &DMREAD, NULL, NULL, NULL, NULL, NULL, NULL, NULL, tDeviceInfoFileDescriptorsParams, NULL, BBFDM_BOTH}, +#endif + {0} }; @@ -307,7 +344,7 @@ DMLEAF tDeviceInfoParams[] = { #endif #ifdef SYSMNGR_VENDOR_EXTENSIONS -{BBF_VENDOR_PREFIX"BaseMACAddress", &DMREAD, DMT_STRING, get_deviceinfo_base_mac_addr, NULL, BBFDM_BOTH}, +{CUSTOM_PREFIX"BaseMACAddress", &DMREAD, DMT_STRING, get_deviceinfo_base_mac_addr, NULL, BBFDM_BOTH}, #endif {0} diff --git a/src/network.c b/src/network.c index efa644b..05a79fc 100644 --- a/src/network.c +++ b/src/network.c @@ -106,6 +106,32 @@ static int get_DeviceInfoNetworkProperties_TCPImplementation(char *refparam, str return 0; } +#ifdef SYSMNGR_VENDOR_EXTENSIONS +static int get_Connections_MaxConnections(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) +{ + char val[32] = {'\0'}; + dm_read_sysfs_file("/proc/sys/net/netfilter/nf_conntrack_max", val, sizeof(val)); + if ('\0' == val[0]) { + *value = dmstrdup("-1"); + } else { + *value = dmstrdup(val); + } + return 0; +} + +static int get_Connections_ActiveConnections(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) +{ + char val[32] = {'\0'}; + dm_read_sysfs_file("/proc/sys/net/netfilter/nf_conntrack_count", val, sizeof(val)); + if ('\0' == val[0]) { + *value = dmstrdup("-1"); + } else { + *value = dmstrdup(val); + } + return 0; +} +#endif + /********************************************************************************************************************************** * OBJ & LEAF DEFINITION ***********************************************************************************************************************************/ @@ -114,5 +140,11 @@ DMLEAF tDeviceInfoNetworkPropertiesParams[] = { /* PARAM, permission, type, getvalue, setvalue, bbfdm_type */ {"MaxTCPWindowSize", &DMREAD, DMT_UNINT, get_DeviceInfoNetworkProperties_MaxTCPWindowSize, NULL, BBFDM_BOTH}, {"TCPImplementation", &DMREAD, DMT_STRING, get_DeviceInfoNetworkProperties_TCPImplementation, NULL, BBFDM_BOTH}, + +#ifdef SYSMNGR_VENDOR_EXTENSIONS +{CUSTOM_PREFIX"MaxConnections", &DMREAD, DMT_INT, get_Connections_MaxConnections, NULL, BBFDM_BOTH}, +{CUSTOM_PREFIX"ActiveConnections", &DMREAD, DMT_INT, get_Connections_ActiveConnections, NULL, BBFDM_BOTH}, +#endif + {0} }; -- GitLab