blob: 39155461d64851569cbe697d63a8f7a6c13b9fc9 [file] [log] [blame]
// Copyright 2017 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef VM_TOOLS_SYSLOG_PARSER_H_
#define VM_TOOLS_SYSLOG_PARSER_H_
#include <stdint.h>
#include <base/time/time.h>
#include <vm_protos/proto_bindings/vm_host.pb.h>
namespace vm_tools {
namespace syslog {
// Parse the priority value out of a syslog record. If successful, stores the
// LogSeverity in |severity| and returns the number of bytes consumed from
// |buf|. Returns 0 on failure and leaves severity unchanged.
size_t ParseSyslogPriority(const char* buf, vm_tools::LogSeverity* severity);
// Parse the timestamp out of a syslog record. If successful, stores the
// timestamp in |timestamp| and returns the number of bytes consumed from the
// buffer. Returns 0 on failure and stores the current time in |timestamp|,
size_t ParseSyslogTimestamp(const char* buf, vm_tools::Timestamp* timestamp);
// Parse a syslog record according to RFC3164 and store it in |record|. Returns
// true if successful. |buf| must be a null-terminated string. Returns false
// and clears |record| if |buf| contains an invalid syslog record.
bool ParseSyslogRecord(const char* buf,
size_t len,
vm_tools::LogRecord* record);
} // namespace syslog
} // namespace vm_tools
#endif // VM_TOOLS_SYSLOG_PARSER_H_