diff --git a/resources/OCF/IPv6addr.c b/resources/OCF/IPv6addr.c
index 0fe6d17..9329f2c 100644
--- a/resources/OCF/IPv6addr.c
+++ b/resources/OCF/IPv6addr.c
@@ -86,6 +86,7 @@
 #include <lha_internal.h>
 
 #include <stdlib.h>
+#include <unistd.h>
 #include <sys/types.h>
 #include <netinet/icmp6.h>
 #include <libgen.h>
@@ -275,6 +276,8 @@ start_addr6(struct in6_addr* addr6, int prefix_len)
 {
 	int	i;
 	char*	if_name;
+	pid_t	child;
+
 	if(OCF_SUCCESS == status_addr6(addr6,prefix_len)) {
 		return OCF_SUCCESS;
 	}
@@ -304,10 +307,14 @@ start_addr6(struct in6_addr* addr6, int prefix_len)
 		return OCF_ERR_GENERIC;
 	}
 
-	/* Send unsolicited advertisement packet to neighbor */
-	for (i = 0; i < UA_REPEAT_COUNT; i++) {
-		send_ua(addr6, if_name);
-		sleep(1);
+	child = fork();
+	if (child == 0) {
+		/* Send unsolicited advertisement packet to neighbor */
+		for (i = 0; i < UA_REPEAT_COUNT; i++) {
+			send_ua(addr6, if_name);
+			sleep(1);
+		}
+		_exit(0);
 	}
 	return OCF_SUCCESS;
 }
