diff --git a/bgpd/bgp_advertise.c b/bgpd/bgp_advertise.c
index b9f4a85..87eb7ac 100644
--- a/bgpd/bgp_advertise.c
+++ b/bgpd/bgp_advertise.c
@@ -40,7 +40,7 @@
    one packet.  To do that we maintain attribute hash in struct
    peer.  */
 static struct bgp_advertise_attr *
-baa_new ()
+baa_new (void)
 {
   return (struct bgp_advertise_attr *)
     XCALLOC (MTYPE_BGP_ADVERTISE_ATTR, sizeof (struct bgp_advertise_attr));
@@ -84,7 +84,7 @@
    structure.  This structure is referred from BGP adjacency
    information.  */
 static struct bgp_advertise *
-bgp_advertise_new ()
+bgp_advertise_new (void)
 {
   return (struct bgp_advertise *) 
     XCALLOC (MTYPE_BGP_ADVERTISE, sizeof (struct bgp_advertise));
diff --git a/bgpd/bgp_attr.c b/bgpd/bgp_attr.c
index 5839d3f..edacd5d 100644
--- a/bgpd/bgp_attr.c
+++ b/bgpd/bgp_attr.c
@@ -274,7 +274,7 @@
 }
 
 static void
-transit_init ()
+transit_init (void)
 {
   transit_hash = hash_create (transit_hash_key_make, transit_hash_cmp);
 }
diff --git a/bgpd/bgp_clist.c b/bgpd/bgp_clist.c
index a8d8742..8d8c90c 100644
--- a/bgpd/bgp_clist.c
+++ b/bgpd/bgp_clist.c
@@ -49,7 +49,7 @@
 
 /* Allocate a new community list entry.  */
 static struct community_entry *
-community_entry_new ()
+community_entry_new (void)
 {
   return XCALLOC (MTYPE_COMMUNITY_LIST_ENTRY, sizeof (struct community_entry));
 }
@@ -86,7 +86,7 @@
 
 /* Allocate a new community-list.  */
 static struct community_list *
-community_list_new ()
+community_list_new (void)
 {
   return XCALLOC (MTYPE_COMMUNITY_LIST, sizeof (struct community_list));
 }
diff --git a/bgpd/bgp_community.c b/bgpd/bgp_community.c
index 64c6810..839927c 100644
--- a/bgpd/bgp_community.c
+++ b/bgpd/bgp_community.c
@@ -617,7 +617,7 @@
 
 /* Return communities hash entry count.  */
 unsigned long
-community_count ()
+community_count (void)
 {
   return comhash->count;
 }
diff --git a/bgpd/bgp_ecommunity.c b/bgpd/bgp_ecommunity.c
index 6b221e2..4d9fc70 100644
--- a/bgpd/bgp_ecommunity.c
+++ b/bgpd/bgp_ecommunity.c
@@ -34,7 +34,7 @@
 
 /* Allocate a new ecommunities.  */
 struct ecommunity *
-ecommunity_new ()
+ecommunity_new (void)
 {
   return (struct ecommunity *) XCALLOC (MTYPE_ECOMMUNITY,
 					sizeof (struct ecommunity));
@@ -108,7 +108,7 @@
   if (! ecom)
     return NULL;
   
-  new = ecommunity_new ();;
+  new = ecommunity_new ();
   
   for (i = 0; i < ecom->size; i++)
     {
diff --git a/bgpd/bgp_filter.c b/bgpd/bgp_filter.c
index eb4ff8e..89e48bf 100644
--- a/bgpd/bgp_filter.c
+++ b/bgpd/bgp_filter.c
@@ -47,10 +47,10 @@
   struct as_list_list str;
 
   /* Hook function which is executed when new access_list is added. */
-  void (*add_hook) ();
+  void (*add_hook) (void);
 
   /* Hook function which is executed when access_list is deleted. */
-  void (*delete_hook) ();
+  void (*delete_hook) (void);
 };
 
 /* Element of AS path filter. */
@@ -97,7 +97,7 @@
 
 /* Allocate new AS filter. */
 static struct as_filter *
-as_filter_new ()
+as_filter_new (void)
 {
   return XCALLOC (MTYPE_AS_FILTER, sizeof (struct as_filter));
 }
@@ -173,7 +173,7 @@
 }
 
 static struct as_list *
-as_list_new ()
+as_list_new (void)
 {
   return XCALLOC (MTYPE_AS_LIST, sizeof (struct as_list));
 }
@@ -395,14 +395,14 @@
 
 /* Add hook function. */
 void
-as_list_add_hook (void (*func) ())
+as_list_add_hook (void (*func) (void))
 {
   as_list_master.add_hook = func;
 }
 
 /* Delete hook function. */
 void
-as_list_delete_hook (void (*func) ())
+as_list_delete_hook (void (*func) (void))
 {
   as_list_master.delete_hook = func;
 }
diff --git a/bgpd/bgp_fsm.c b/bgpd/bgp_fsm.c
index 15bd8a6..9248573 100644
--- a/bgpd/bgp_fsm.c
+++ b/bgpd/bgp_fsm.c
@@ -902,7 +902,7 @@
 
 /* Finite State Machine structure */
 struct {
-  int (*func) ();
+  int (*func) (struct peer *);
   int next_state;
 } FSM [BGP_STATUS_MAX - 1][BGP_EVENTS_MAX - 1] = 
 {
diff --git a/bgpd/bgp_nexthop.c b/bgpd/bgp_nexthop.c
index b2ee7f3..67a49f7 100644
--- a/bgpd/bgp_nexthop.c
+++ b/bgpd/bgp_nexthop.c
@@ -96,7 +96,7 @@
 }
 
 static struct bgp_nexthop_cache *
-bnc_new ()
+bnc_new (void)
 {
   return XCALLOC (MTYPE_BGP_NEXTHOP_CACHE, sizeof (struct bgp_nexthop_cache));
 }
@@ -695,7 +695,7 @@
 }
 
 static struct bgp_nexthop_cache *
-zlookup_read ()
+zlookup_read (void)
 {
   struct stream *s;
   uint16_t length;
@@ -804,7 +804,7 @@
 
 #ifdef HAVE_IPV6
 static struct bgp_nexthop_cache *
-zlookup_read_ipv6 ()
+zlookup_read_ipv6 (void)
 {
   struct stream *s;
   uint16_t length;
@@ -1277,7 +1277,7 @@
 }
 
 void
-bgp_scan_init ()
+bgp_scan_init (void)
 {
   zlookup = zclient_new ();
   zlookup->sock = -1;
diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c
index 5177dc0..65f54e7 100644
--- a/bgpd/bgp_route.c
+++ b/bgpd/bgp_route.c
@@ -127,7 +127,7 @@
 
 /* Allocate new bgp info structure. */
 static struct bgp_info *
-bgp_info_new ()
+bgp_info_new (void)
 {
   return XCALLOC (MTYPE_BGP_ROUTE, sizeof (struct bgp_info));
 }
@@ -2911,7 +2911,7 @@
 
 /* Delete all kernel routes. */
 void
-bgp_cleanup_routes ()
+bgp_cleanup_routes (void)
 {
   struct bgp *bgp;
   struct listnode *node, *nnode;
@@ -2942,7 +2942,7 @@
 }
 
 void
-bgp_reset ()
+bgp_reset (void)
 {
   vty_reset ();
   bgp_zclient_reset ();
@@ -3114,7 +3114,7 @@
 }
 
 static struct bgp_static *
-bgp_static_new ()
+bgp_static_new (void)
 {
   return XCALLOC (MTYPE_BGP_STATIC, sizeof (struct bgp_static));
 }
@@ -4499,7 +4499,7 @@
 };
 
 static struct bgp_aggregate *
-bgp_aggregate_new ()
+bgp_aggregate_new (void)
 {
   return XCALLOC (MTYPE_BGP_AGGREGATE, sizeof (struct bgp_aggregate));
 }
@@ -10846,7 +10846,7 @@
 };
 
 static struct bgp_distance *
-bgp_distance_new ()
+bgp_distance_new (void)
 {
   return XCALLOC (MTYPE_BGP_DISTANCE, sizeof (struct bgp_distance));
 }
@@ -10944,7 +10944,7 @@
 }
 
 static void
-bgp_distance_reset ()
+bgp_distance_reset (void)
 {
   struct bgp_node *rn;
   struct bgp_distance *bdistance;
@@ -11551,7 +11551,7 @@
 
 /* Allocate routing table structure and install commands. */
 void
-bgp_route_init ()
+bgp_route_init (void)
 {
   /* Init BGP distance table. */
   bgp_distance_table = bgp_table_init (AFI_IP, SAFI_UNICAST);
diff --git a/bgpd/bgp_snmp.c b/bgpd/bgp_snmp.c
index 0f44e68..1e37f26 100644
--- a/bgpd/bgp_snmp.c
+++ b/bgpd/bgp_snmp.c
@@ -882,7 +882,7 @@
 }
 
 void
-bgp_snmp_init ()
+bgp_snmp_init (void)
 {
   smux_init (bm->master);
   REGISTER_MIB("mibII/bgp", bgp_variables, variable, bgp_oid);
diff --git a/bgpd/bgp_table.c b/bgpd/bgp_table.c
index eb7c9f2..6633256 100644
--- a/bgpd/bgp_table.c
+++ b/bgpd/bgp_table.c
@@ -53,7 +53,7 @@
 }
 
 static struct bgp_node *
-bgp_node_create ()
+bgp_node_create (void)
 {
   return XCALLOC (MTYPE_BGP_NODE, sizeof (struct bgp_node));
 }
diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c
index 1712c71..3adede8 100644
--- a/bgpd/bgpd.c
+++ b/bgpd/bgpd.c
@@ -1321,7 +1321,7 @@
 
 /* Peer group cofiguration. */
 static struct peer_group *
-peer_group_new ()
+peer_group_new (void)
 {
   return (struct peer_group *) XCALLOC (MTYPE_PEER_GROUP,
 					sizeof (struct peer_group));
@@ -3929,7 +3929,7 @@
 }
 
 static void
-peer_aslist_update ()
+peer_aslist_update (void)
 {
   afi_t afi;
   safi_t safi;
@@ -5136,7 +5136,7 @@
 }
 
 void
-bgp_terminate ()
+bgp_terminate (void)
 {
   struct bgp *bgp;
   struct peer *peer;
diff --git a/lib/if.c b/lib/if.c
index 4ba973a..ecf9ff9 100644
--- a/lib/if.c
+++ b/lib/if.c
@@ -444,7 +444,7 @@
 
 /* Interface printing for all interface. */
 void
-if_dump_all ()
+if_dump_all (void)
 {
   struct listnode *node;
   void *p;
diff --git a/ospfd/ospf_snmp.c b/ospfd/ospf_snmp.c
index 5a0aea1..cc4974c 100644
--- a/ospfd/ospf_snmp.c
+++ b/ospfd/ospf_snmp.c
@@ -1403,7 +1403,7 @@
 };
 
 static struct ospf_snmp_if *
-ospf_snmp_if_new ()
+ospf_snmp_if_new (void)
 {
   return XCALLOC (0, sizeof (struct ospf_snmp_if));
 }
diff --git a/zebra/rtadv.c b/zebra/rtadv.c
index e1fd0dc..dd2be81 100644
--- a/zebra/rtadv.c
+++ b/zebra/rtadv.c
@@ -524,7 +524,7 @@
 }
 
 static struct rtadv_prefix *
-rtadv_prefix_new ()
+rtadv_prefix_new (void)
 {
   return XCALLOC (MTYPE_RTADV_PREFIX, sizeof (struct rtadv_prefix));
 }
