首先定义了L_GetNetlinkStatus(int netlink_handle)函数,作用是根据netlink的fd来判断netlink的状态，状态分别有AUDIT_IMMUTABLE(根据Disable auditd immutable mode without rebooting的说法，当处于netlink处于AUDIT_IMMUTABLE模式时需要重启规则才能够生效)、AUDIT_ENABLED、AUDIT_DISABLED。其中最为关键的函数是auto enabled = audit_is_enabled(netlink_handle)(audit_is_enabled是位于libaudit中，作用就是根据netlink的句柄知道netlink的状态)，根据audit_is_enabled的实现知道This function will return 0 if auditing is NOT enabled and 1 if enabled, and -1 on error.。那么AUDIT_IMMUTABLE,AUDIT_ENABLED,AUDIT_DISABLED和Error分别对应此函数值的返回值的2，1，0，-1。这就是L_GetNetlinkStatus()获得netlink状态的流程。

在第一步讲了通过L_GetNetlinkStatus()根据netlink_handle获取netlink的状态，那么第二部就是如何获取netlink_handle了。audit_netlink_handle_ = audit_open();通过audit_open()获取状态。根据audit_open的说明，audit_open creates a NETLINK_AUDIT socket for communication with the kernel part of the Linux Audit Subsystem,含义大致就是创建了一个NETLINK_AUDIT用于和内核的audit服务进行通信，返回值就是audit_netlink_handle_