$OpenBSD: patch-tools_rs6_c,v 1.1 2013/09/26 21:52:36 bluhm Exp $
--- tools/rs6.c.orig	Wed Jul  3 03:00:34 2013
+++ tools/rs6.c	Sun Sep  8 21:38:57 2013
@@ -498,8 +498,6 @@ int main(int argc, char **argv){
 
 	pcap_freecode(&pcap_filter);
 
-	srandom(time(NULL));
-
     /* 
        If the IPv6 Source Address has not been specified, and the "-F" (flood) option has
        not been specified, select a random link-local unicast address.
@@ -516,7 +514,7 @@ int main(int argc, char **argv){
 			srcaddr.s6_addr16[i]=0x0000;	
 	    
 		for(i=4; i<8; i++)
-			srcaddr.s6_addr16[i]=random();
+			srcaddr.s6_addr16[i]=arc4random();
 
     }
 
@@ -543,7 +541,7 @@ int main(int argc, char **argv){
 
 	if(!hsrcaddr_f)		/* Source link-layer address is randomized by default */
 		for(i=0; i<6; i++)
-			hsrcaddr.a[i]= random();
+			arc4random_buf(&hsrcaddr, sizeof(struct ether_addr));
 
 	if(!hdstaddr_f)		/* Destination link-layer address defaults to all-nodes */
 		if(ether_pton(ETHER_ALL_ROUTERS_LINK_ADDR, &hdstaddr, sizeof(hdstaddr)) == 0){
@@ -754,7 +752,7 @@ void send_packet(void){
 				ipv6->ip6_src.s6_addr16[i]= 0;
 
 			for(i=startrand; i<8; i++)
-				ipv6->ip6_src.s6_addr16[i]=random();
+				ipv6->ip6_src.s6_addr16[i]=arc4random();
 
 
 			if(srcpreflen%16){
@@ -771,8 +769,7 @@ void send_packet(void){
 				ipv6->ip6_src.s6_addr16[i]= ipv6->ip6_src.s6_addr16[i] | srcaddr.s6_addr16[i];
 
 			if(!hsrcaddr_f){
-				for(i=0; i<6; i++)
-				ethernet->src.a[i]= random();
+				arc4random_buf(&ethernet->src, sizeof(struct ether_addr));
 
 				/*
 				   If the source-link layer address must be included, but no value was 
@@ -838,7 +835,7 @@ void send_packet(void){
 
 				memcpy(fptr, (char *) &fraghdr, FRAG_HDR_SIZE);
 				fh= (struct ip6_frag *) fptr;
-				fh->ip6f_ident=random();
+				fh->ip6f_ident=arc4random();
 				startoffragment = fptr + FRAG_HDR_SIZE;
 
 				/*
