in audit.go [567:600]
func (c *AuditClient) set(status AuditStatus, mode WaitMode) error {
msg := syscall.NetlinkMessage{
Header: syscall.NlMsghdr{
Type: AuditSet,
Flags: syscall.NLM_F_REQUEST | syscall.NLM_F_ACK,
},
Data: status.toWireFormat(),
}
seq, err := c.Netlink.Send(msg)
if err != nil {
return fmt.Errorf("failed sending request: %w", err)
}
if mode == NoWait {
c.storePendingAck(seq)
return nil
}
ack, err := c.getReply(seq)
if err != nil {
return err
}
if ack.Header.Type != syscall.NLMSG_ERROR {
return fmt.Errorf("unexpected ACK to SET, type=%d", ack.Header.Type)
}
if err := ParseNetlinkError(ack.Data); err != nil {
return err
}
return nil
}