--- a/include/rain_inet_common.h
+++ b/include/rain_inet_common.h
@@ -368,14 +368,14 @@
 /* 
  * global variables 
  */
-u_int16_t packetsize;
-unsigned char      *buffer;   /* For holding packets. Declared globally to ensure it is freed when the program exits */
-time_t          send_start;   /* for storing start and finish time of total packets sent */
-time_t         send_finish;
-unsigned long packets_sent;
-u_short            verbose;
-struct in_addr       group;  /* for ICMP gateway and IGMP group addresses */
-int              sendflags;  /* stores flags for sendto(); Default is 0 */
+extern u_int16_t packetsize;
+extern unsigned char      *buffer;   /* For holding packets. Declared globally to ensure it is freed when the program exits */
+extern time_t          send_start;   /* for storing start and finish time of total packets sent */
+extern time_t         send_finish;
+extern unsigned long packets_sent;
+extern u_short            verbose;
+extern struct in_addr       group;  /* for ICMP gateway and IGMP group addresses */
+extern int              sendflags;  /* stores flags for sendto(); Default is 0 */
 /*---------------------------*/
 
 
--- a/source/rain_inet_common.c
+++ b/source/rain_inet_common.c
@@ -17,6 +17,18 @@
  *-------------------------------------------------*/
 #include "rain_common.h"
 
+/* 
+ * global variables 
+ */
+u_int16_t packetsize;
+unsigned char      *buffer;   /* For holding packets. Declared globally to ensure it is freed when the program exits */
+time_t          send_start;   /* for storing start and finish time of total packets sent */
+time_t         send_finish;
+unsigned long packets_sent;
+u_short            verbose;
+struct in_addr       group;  /* for ICMP gateway and IGMP group addresses */
+int              sendflags;  /* stores flags for sendto(); Default is 0 */
+/*---------------------------*/
 
 /*
  * Internet checksum routine (RFC 1071) 
--- a/include/rain_icmp.h
+++ b/include/rain_icmp.h
@@ -20,7 +20,7 @@
 
 
 
-unsigned char icmpinfo[56][56][56];
+extern unsigned char icmpinfo[56][56][56];
 
 
 /* 
--- a/source/rain_icmp.c
+++ b/source/rain_icmp.c
@@ -17,6 +17,7 @@
  *-------------------------------------------------*/
 #include "rain_common.h"
 
+unsigned char icmpinfo[56][56][56];
 
 /* 
  * Prints all the ICMP type/code combinations 
--- a/include/rain_igmp.h
+++ b/include/rain_igmp.h
@@ -18,7 +18,7 @@
 #ifndef _RAIN_IGMP_H
 #define _RAIN_IGMP_H
 
-unsigned char igmpinfo[56][56][5];
+extern unsigned char igmpinfo[56][56][5];
 
 
 extern void print_igmp_info(void);
--- a/source/rain_igmp.c
+++ b/source/rain_igmp.c
@@ -17,7 +17,7 @@
  *-------------------------------------------------*/
 #include "rain_common.h"
 
-	
+unsigned char igmpinfo[56][56][5];
 
 /*
  * Prints IGMP type/code descriptions
--- a/include/rain_tcp.h
+++ b/include/rain_tcp.h
@@ -20,7 +20,7 @@
 #ifndef _RAIN_TCP_H
 #define _RAIN_TCP_H
 
-unsigned char tcpinfo[25];
+extern unsigned char tcpinfo[25];
 
 extern void tcp_info_init(struct pkt_info_tcp *);
 extern int tcp_shower_connect(struct sockaddr_in *, struct pkt_info *);
--- a/source/rain_tcp.c
+++ b/source/rain_tcp.c
@@ -17,7 +17,7 @@
  *-------------------------------------------------*/
 #include "rain_common.h"
 
-
+unsigned char tcpinfo[25];
 
 /* 
  * tcp_info_init():
