diff --git a/sockev/Android.mk b/sockev/Android.mk
new file mode 100644
index 0000000..8338432
--- /dev/null
+++ b/sockev/Android.mk
@@ -0,0 +1,2 @@
+include $(call all-subdir-makefiles)
+
diff --git a/sockev/src/Android.mk b/sockev/src/Android.mk
new file mode 100644
index 0000000..fd98fc4
--- /dev/null
+++ b/sockev/src/Android.mk
@@ -0,0 +1,14 @@
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := sockev_cli.c
+LOCAL_CFLAGS := -Wall -Werror
+
+LOCAL_C_INCLUDES := $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include
+LOCAL_ADDITIONAL_DEPENDENCIES := $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr
+
+LOCAL_MODULE := sockev
+LOCAL_MODULE_TAGS := optional
+
+include $(BUILD_EXECUTABLE)
diff --git a/sockev/src/sockev_cli.c b/sockev/src/sockev_cli.c
new file mode 100644
index 0000000..c007767
--- /dev/null
+++ b/sockev/src/sockev_cli.c
@@ -0,0 +1,94 @@
+/******************************************************************************
+			S O C K E V _ C L I . C
+Copyright (c) 2013, The Linux Foundation. All rights reserved.
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+	* Redistributions of source code must retain the above copyright
+	  notice, this list of conditions and the following disclaimer.
+	* Redistributions in binary form must reproduce the above
+	  copyright notice, this list of conditions and the following
+	  disclaimer in the documentation and/or other materials provided
+	  with the distribution.
+	* Neither the name of The Linux Foundation nor the names of its
+	  contributors may be used to endorse or promote products derived
+	  from this software without specific prior written permission.
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+******************************************************************************/
+
+/******************************************************************************
+  @file    sockev_cli.c
+  @brief   command line test utility to receive sockev netlink messages.
+******************************************************************************/
+
+#include <sys/socket.h>
+#include <linux/netlink.h>
+#include <linux/sockev.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <arpa/inet.h>
+#include <unistd.h>
+
+#define SOCKEVCLI_ERROR -1
+
+int main(void)
+{
+	int skfd, addrlen, rc;
+	struct sockaddr_nl my_addr, src_addr;
+	struct nlmsghdr *nlh = NULL;
+	struct sknlsockevmsg *msg;
+
+	nlh = (struct nlmsghdr *)
+		malloc(NLMSG_SPACE(sizeof(struct sknlsockevmsg) + 16));
+	if (!nlh) {
+		fprintf(stderr, "malloc() failed\n");
+		return SOCKEVCLI_ERROR;
+	}
+
+	skfd = socket(AF_NETLINK, SOCK_RAW, NETLINK_SOCKEV);
+	if (skfd < 0) {
+		fprintf(stderr, "nl_open_sock: socket failed\n");
+		return SOCKEVCLI_ERROR;
+	}
+
+	memset(&my_addr, 0, sizeof(struct sockaddr_nl));
+
+	my_addr.nl_family = AF_NETLINK;
+	my_addr.nl_pid = getpid();
+	my_addr.nl_groups = SKNLGRP_SOCKEV;
+
+	rc = bind(skfd, (struct sockaddr *)&my_addr,
+		  sizeof(struct sockaddr_nl));
+	if (rc < 0) {
+		fprintf(stderr, "nl_open_sock: bind failed\n");
+		close(skfd);
+		return SOCKEVCLI_ERROR;
+	}
+
+	while (1) {
+		recvfrom(skfd, nlh, sizeof(struct sknlsockevmsg) + 16, 0,
+			 (const struct sockaddr *)&src_addr, &addrlen);
+		msg = NLMSG_DATA(nlh);
+		printf("----------------------------\n");
+		printf("pid:\t%d\n", msg->pid);
+		printf("event:\t%s\n", msg->event);
+		printf("skfamily:\t0x%04X\n", msg->skfamily);
+		printf("skstate:\t%03d\n", msg->skstate);
+		printf("skprotocol:\t%03d\n", msg->skprotocol);
+		printf("sktype:\t0x%04X\n", msg->sktype);
+		printf("skflags:\t0x%016llX\n", msg->skflags);
+	}
+
+	return 0;
+}
+
