All of lore.kernel.org
 help / color / mirror / Atom feed
* sdbusplus reading InterfacesAdded issue: not all variants are created equal
@ 2021-12-23 15:45 Paul Fertser
  2021-12-23 16:24 ` Patrick Williams
  2021-12-23 18:14 ` Ed Tanous
  0 siblings, 2 replies; 6+ messages in thread
From: Paul Fertser @ 2021-12-23 15:45 UTC (permalink / raw)
  To: openbmc

Hello,

While digging into current state of SNMP notifications (traps) support
in OpenBMC I found some code I have no idea how to properly improve.

phosphor-dbus-monitor has a handler that's meant to be called whenever
a new log entry is created by monitoring InterfacesAdded signals on
D-Bus logger paths. The processing is at

https://github.com/openbmc/phosphor-dbus-monitor/blob/master/src/snmp_trap.cpp#L28

It seems OK until you look into PathInterfacesAdded definition which
includes a hard-coded std::variant<>:
https://github.com/openbmc/phosphor-dbus-monitor/blob/master/src/data_types.hpp#L66

This already raises suspicions and rightfully so: the interface we're
specifically interested in, xyz.openbmc_project.Logging.Entry,
includes AdditionalData property which should be of type
std::vector<std::string> , but that's not in the list of the allowed
hardcoded variants.

If I'm trying to use the std::variant<> type suitable for
Logging.Entry then msg.read() fails with InvalidEnum error, probably
trying to parse data about other interfaces, and this is a bad idea
anyway.

So what is the correct method of using statically-typed sdbusplus APIs
to parse such a "dynamic" reply?

-- 
Be free, use free (http://www.gnu.org/philosophy/free-sw.html) software!
mailto:fercerpav@gmail.com

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2021-12-24 19:21 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-12-23 15:45 sdbusplus reading InterfacesAdded issue: not all variants are created equal Paul Fertser
2021-12-23 16:24 ` Patrick Williams
2021-12-24 12:53   ` Paul Fertser
2021-12-24 19:21   ` Paul Fertser
2021-12-23 18:14 ` Ed Tanous
2021-12-24 12:48   ` Paul Fertser

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.