From e9f8857a66c5df61a4e795a7d71b035fd89b92ef Mon Sep 17 00:00:00 2001 From: Vernon Mauery Date: Thu, 30 Jan 2020 16:11:34 -0800 Subject: Make ipmi whitelist optional Not all users of ipmid want to use the whitelist. Or they want to have their own that behaves differently. This change makes it so one can disable the built-in whitelist so that OEMs can substitute their own custom filtering or use none at all. To disable the whitelist, pass --disable-ipmi-whitelist to configure. This can be done in Yocto via a bbappend for phosphor-ipmi-host: EXTRA_OECONF_append = " --disable-ipmi-whitelist" Tested: Built with and without the whitelist enabled to ensure that the whitelist is present when expected to be. Change-Id: I63f317b6c29ca73cc3296bb2fe38f836004ec35d Signed-off-by: Vernon Mauery --- Makefile.am | 10 +++++++++- configure.ac | 11 +++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index 02583fe..82fdd5d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -14,6 +14,12 @@ endif providersdir = ${libdir}/ipmid-providers providers_LTLIBRARIES = +if FEATURE_IPMI_WHITELIST +IPMI_WHITELIST_SOURCE = ipmiwhitelist.cpp +else +IPMI_WHITELIST_SOURCE = +endif + bin_PROGRAMS = \ ipmid @@ -28,7 +34,7 @@ libipmi20_BUILT_LIST = \ fru-read-gen.cpp BUILT_SOURCES = \ - ipmiwhitelist.cpp \ + $(IPMI_WHITELIST_SOURCE) \ $(libipmi20_BUILT_LIST) CLEANFILES = $(BUILT_SOURCES) @@ -158,6 +164,7 @@ libsysintfcmds_la_LDFLAGS = \ -version-info 0:0:0 -shared libsysintfcmds_la_CXXFLAGS = $(COMMON_CXX) +if FEATURE_IPMI_WHITELIST libwhitelistdir = ${libdir}/ipmid-providers libwhitelist_LTLIBRARIES = libwhitelist.la libwhitelist_la_SOURCES = \ @@ -170,6 +177,7 @@ libwhitelist_la_LDFLAGS = \ -version-info 0:0:0 -shared libwhitelist_la_CXXFLAGS = $(COMMON_CXX) nodist_libwhitelist_la_SOURCES = ipmiwhitelist.cpp +endif nobase_include_HEADERS = \ user_channel/channel_layer.hpp \ diff --git a/configure.ac b/configure.ac index 296165f..29f58e2 100644 --- a/configure.ac +++ b/configure.ac @@ -255,6 +255,17 @@ AC_ARG_ENABLE([transport_oem], ) AM_CONDITIONAL([FEATURE_TRANSPORT_OEM], [test x$transport_oem = xtrue]) +# IPMI whitelist mechanism is not needed by everyone; offer a way to disable it +AC_ARG_ENABLE([ipmi-whitelist], + [ --enable-ipmi-whitelist Enable/disable IPMI whitelist filtering], + [case "${enableval}" in + yes) ipmi_whitelist=true ;; + no) ipmi_whitelist=false ;; + *) AC_MSG_ERROR([bad value ${enableval} for --enable-ipmi-whitelist]) ;; + esac],[ipmi_whitelist=true] + ) +AM_CONDITIONAL([FEATURE_IPMI_WHITELIST], [test x$ipmi_whitelist = xtrue]) + # Create configured output AC_CONFIG_FILES([ Makefile -- cgit v1.2.1