#include "audit-message-parser.h"
AuditMessageParser::AuditMessageParser(Audit &audit, runtime::Mainloop &ml) :
- nl(audit.nl), mainloop(ml)
+ nlLock(audit.nlLock), nl(audit.nl), mainloop(ml)
{
int fd = nl.getFd();
void AuditMessageParser::parse()
{
+ std::lock_guard<std::mutex> lock(nlLock);
while (1) {
try {
auto msg = nl.recv(MSG_DONTWAIT);
s.mask = AUDIT_STATUS_ENABLED;
s.enabled = enabled;
+ std::lock_guard<std::mutex> lock(nlLock);
nl.send(AUDIT_SET, arrayToVector((char*)&s, sizeof(s)));
}
int Audit::isEnabled()
{
int ret = 0;
+
+ std::lock_guard<std::mutex> lock(nlLock);
nl.send(AUDIT_GET, std::vector<char>());
while (1) {
{
std::vector<AuditRule> ret;
+ std::lock_guard<std::mutex> lock(nlLock);
nl.send(AUDIT_LIST_RULES, std::vector<char>());
while (1) {
void Audit::addRule(const AuditRule& rule)
{
+ std::lock_guard<std::mutex> lock(nlLock);
nl.send(AUDIT_ADD_RULE, rule.data());
}
void Audit::removeRule(const AuditRule& rule)
{
+ std::lock_guard<std::mutex> lock(nlLock);
nl.send(AUDIT_DEL_RULE, rule.data());
}
#ifndef __AUDIT_TRAIL_AUDIT_H__
#define __AUDIT_TRAIL_AUDIT_H__
+#include <mutex>
#include <vector>
#include <klay/netlink/netlink.h>
}
private:
+ std::mutex nlLock;
netlink::Netlink nl;
friend class AuditMessageParser;