Я написал программу для прослушивания модификации iptables через сокеты netlink, для этого я использовал семейство NETLINK_AUDIT
, когда я выполняю программу и изменяю правило iptables, программа не получает никаких сообщений от ядра и будет втолько режим блокировки.Не могли бы вы помочь мне найти, что не так в этой программе или что еще мне нужно сделать, чтобы получать уведомления iptables.
#include "libaudit.h"
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int main()
{
int rc;
struct audit_message rep;
int fd;
struct sockaddr_nl sa;
memset(&sa, 0, sizeof(sa));
sa.nl_family = AF_NETLINK;
sa.nl_groups = 0;
fd = audit_open();
bind(fd, (struct sockaddr *) &sa, sizeof(sa));
rc = audit_get_reply(fd, &rep, GET_REPLY_BLOCKING, 0);
if(rc < 0)
{
printf("Error");
}
else
{
printf("msg received %d \n",rep.nlh.nlmsg_type );
break;
}
audit_close(fd);
return 0;
}