obmc-console: Suppress syslog in bare metal mode In bare metal mode (when gbmc-bare-metal-active@.target is active), we want to prevent sensitive data from leaking into syslog. The previous implementation only filtered data on specific PII sockets but left the syslog handler active, logging all data. This change adds a state accessor `pii_get_state()` to expose the PII state from `pii-handler`. The `syslog-handler` is updated to check this state and skip logging to syslog when in `PII_DATA_USER` state (bare metal mode active). Tested: Moved to and from BM mode and we can see the journal logs stopped when we enter BM mode and they are started when we move to non-BM mode. https://paste.googleplex.com/5292513159151616 Google-Bug-Id: 506720057 Change-Id: Ib2faa6ae0511219a60f6bac2f43676fedb13bf1e Signed-off-by: Vikram Gara <vikramgara@google.com>
To build this project, run the following shell commands:
meson setup build meson compile -C build
To test:
meson test -C build
Running the server requires a serial port (e.g. /dev/ttyS0):
touch obmc-console.conf ./obmc-console-server --config obmc-console.conf ttyS0
To connect to the server, simply run the client:
./obmc-console-client
To disconnect the client, use the standard ~. combination.
This shows how the host UART connection is abstracted within the BMC as a Unix domain socket.
+---------------------------------------------------------------------------------------------+
| |
| obmc-console-client unix domain socket obmc-console-server |
| |
| +----------------------+ +------------------------+ |
| | client.2200.conf | +---------------------+ | server.ttyVUART0.conf | |
+---+--+ +----------------------+ | | +------------------------+ +--------+-------+
Network | 2200 +--> +->+ @obmc-console.host0 +<-+ <--+ /dev/ttyVUART0 | UARTs
+---+--+ | console-id = "host0" | | | | console-id = "host0" | +--------+-------+
| | | +---------------------+ | | |
| +----------------------+ +------------------------+ |
| |
| |
| |
+---------------------------------------------------------------------------------------------+
This supports multiple independent consoles. The console-id is a unique portion for the unix domain socket created by the obmc-console-server instance. The server needs to know this because it needs to know what to name the pipe; the client needs to know it as it needs to form the abstract socket name to which to connect.