diff --git a/auditd/auditd.c b/auditd/auditd.c
index 7291d34..852445d 100644
--- a/auditd/auditd.c
+++ b/auditd/auditd.c
@@ -178,6 +178,9 @@ int main(int argc, char *argv[])
         goto err;
     }
 
+    SLOGE("Bill Turning on logsplit");
+    c = audit_set_logsplit(audit_fd, AUDIT_LOGSPLIT_ON, WAIT_NO);
+    SLOGE("Bill Turning on logsplit error: %d", c);
     if (audit_set_pid(audit_fd, getpid(), WAIT_YES) < 0) {
         rc = errno;
         SLOGE("Failed on audit_set_pid with error: %s", strerror(errno));
diff --git a/auditd/libaudit.c b/auditd/libaudit.c
index 06e5557..461c592 100644
--- a/auditd/libaudit.c
+++ b/auditd/libaudit.c
@@ -329,3 +329,50 @@ void audit_close(int fd)
     }
     return;
 }
+
+extern int audit_set_logsplit(int fd, int flags,rep_wait_t wmode)
+{
+    int rc;
+    struct audit_reply rep;
+    struct audit_status status;
+
+    memset(&status, 0, sizeof(status));
+
+    if(flags != AUDIT_LOGSPLIT_OFF ||
+    		flags != AUDIT_LOGSPLIT_ON) {
+    	SLOGE("Invalid logsplit flag of: %x\n", flags);
+    }
+
+    /*
+     * In order to set the auditd PID we send an audit message over the netlink socket
+     * with the pid field of the status struct set to our current pid, and the
+     * the mask set to AUDIT_STATUS_PID
+     */
+    status.logsplit = flags;
+    status.mask = AUDIT_STATUS_LOGSPLIT;
+
+    /* Let the kernel know this pid will be registering for audit events */
+    rc = audit_send(fd, AUDIT_SET, &status, sizeof(status));
+    if (rc < 0) {
+        SLOGE("Could net set splitlog for audit events, error: %s", strerror(-rc));
+        return rc;
+    }
+
+    /*
+     * In a request where we need to wait for a response, wait for the message
+     * and discard it. This message confirms and sync's us with the kernel.
+     * This daemon is now registered as the audit logger. Only wait if the
+     * wmode is != WAIT_NO
+     */
+    if (wmode != WAIT_NO) {
+        /* TODO
+         * If the daemon dies and restarts the message didn't come back,
+         * so I went to non-blocking and it seemed to fix the bug.
+         * Need to investigate further.
+         */
+        audit_get_reply(fd, &rep, GET_REPLY_NONBLOCKING, 0);
+    }
+
+    return 0;
+}
+
diff --git a/auditd/libaudit.h b/auditd/libaudit.h
index fbaa7b9..d4624a9 100644
--- a/auditd/libaudit.h
+++ b/auditd/libaudit.h
@@ -108,4 +108,6 @@ extern int  audit_get_reply(int fd, struct audit_reply *rep, reply_t block,
  */
 extern int  audit_set_pid(int fd, uint32_t pid, rep_wait_t wmode);
 
+extern int audit_set_logsplit(int fd, int flags, rep_wait_t wmode);
+
 #endif
