diff --git a/bgpd/bgp_open.c b/bgpd/bgp_open.c
index ff2ae08..38d9dc5 100644
--- a/bgpd/bgp_open.c
+++ b/bgpd/bgp_open.c
@@ -126,23 +126,23 @@
 {
   switch (afi)
     {
-      case AFI_IP:
-#ifdef HAVE_IPV6
-      case AFI_IP6:
-#endif
-        switch (*safi)
-          {
-            /* BGP MPLS-labeled VPN SAFI isn't contigious with others, remap */
-            case SAFI_MPLS_LABELED_VPN:
-              *safi = SAFI_MPLS_VPN;
-            case SAFI_UNICAST:
-            case SAFI_MULTICAST:
-            case SAFI_MPLS_VPN:
-              return 1;
-          }
+    case AFI_IP:
+    case AFI_IP6:
+      switch (*safi)
+	{
+	  /* BGP MPLS-labeled VPN SAFI isn't contigious with others, remap */
+	case SAFI_MPLS_LABELED_VPN:
+	  *safi = SAFI_MPLS_VPN;
+	case SAFI_UNICAST:
+	case SAFI_MULTICAST:
+	case SAFI_MPLS_VPN:
+	  return 1;
+	}
+      break;
     }
+
   zlog_debug ("unknown afi/safi (%u/%u)", afi, *safi);
-  
+
   return 0;
 }
 
@@ -230,7 +230,7 @@
     }
   
   /* validate number field */
-  if (sizeof (struct capability_orf_entry) + (entry.num * 2) > hdr->length)
+  if (CAPABILITY_CODE_ORF_LEN + (entry.num * 2) > hdr->length)
     {
       zlog_info ("%s ORF Capability entry length error,"
                  " Cap length %u, num %u",
@@ -432,14 +432,14 @@
 /* Minimum sizes for length field of each cap (so not inc. the header) */
 static const size_t cap_minsizes[] = 
 {
-  [CAPABILITY_CODE_MP]		= sizeof (struct capability_mp_data),
+  [CAPABILITY_CODE_MP]		= CAPABILITY_CODE_MP_LEN,
   [CAPABILITY_CODE_REFRESH]	= CAPABILITY_CODE_REFRESH_LEN,
-  [CAPABILITY_CODE_ORF]		= sizeof (struct capability_orf_entry),
-  [CAPABILITY_CODE_RESTART]	= sizeof (struct capability_gr),
+  [CAPABILITY_CODE_ORF]		= CAPABILITY_CODE_ORF_LEN,
+  [CAPABILITY_CODE_RESTART]	= 6,
   [CAPABILITY_CODE_AS4]		= CAPABILITY_CODE_AS4_LEN,
   [CAPABILITY_CODE_DYNAMIC]	= CAPABILITY_CODE_DYNAMIC_LEN,
   [CAPABILITY_CODE_REFRESH_OLD]	= CAPABILITY_CODE_REFRESH_LEN,
-  [CAPABILITY_CODE_ORF_OLD]	= sizeof (struct capability_orf_entry),
+  [CAPABILITY_CODE_ORF_OLD]	= CAPABILITY_CODE_ORF_LEN,
 };
 
 /* value the capability must be a multiple of.
diff --git a/bgpd/bgp_open.h b/bgpd/bgp_open.h
index 2b1382d..6233375 100644
--- a/bgpd/bgp_open.h
+++ b/bgpd/bgp_open.h
@@ -82,6 +82,7 @@
 #define CAPABILITY_CODE_DYNAMIC_LEN     0
 #define CAPABILITY_CODE_RESTART_LEN     2 /* Receiving only case */
 #define CAPABILITY_CODE_AS4_LEN         4
+#define CAPABILITY_CODE_ORF_LEN         5
 
 /* Cooperative Route Filtering Capability.  */
 
diff --git a/bgpd/bgp_routemap.c b/bgpd/bgp_routemap.c
index 20bf2eb..7555ca7 100644
--- a/bgpd/bgp_routemap.c
+++ b/bgpd/bgp_routemap.c
@@ -2383,14 +2383,12 @@
     {
       for (i = 0; i < ZEBRA_ROUTE_MAX; i++)
 	{
-	  if (bgp->rmap[ZEBRA_FAMILY_IPV4][i].name)
-	    bgp->rmap[ZEBRA_FAMILY_IPV4][i].map = 
-	      route_map_lookup_by_name (bgp->rmap[ZEBRA_FAMILY_IPV4][i].name);
-#ifdef HAVE_IPV6
-	  if (bgp->rmap[ZEBRA_FAMILY_IPV6][i].name)
-	    bgp->rmap[ZEBRA_FAMILY_IPV6][i].map =
-	      route_map_lookup_by_name (bgp->rmap[ZEBRA_FAMILY_IPV6][i].name);
-#endif /* HAVE_IPV6 */
+	  if (bgp->rmap[AFI_IP][i].name)
+	    bgp->rmap[AFI_IP][i].map =
+	      route_map_lookup_by_name (bgp->rmap[AFI_IP][i].name);
+	  if (bgp->rmap[AFI_IP6][i].name)
+	    bgp->rmap[AFI_IP6][i].map =
+	      route_map_lookup_by_name (bgp->rmap[AFI_IP][i].name);
 	}
     }
 }
diff --git a/lib/plist.c b/lib/plist.c
index f9e626d..699c9b1 100644
--- a/lib/plist.c
+++ b/lib/plist.c
@@ -698,8 +698,9 @@
     }
 
   /* "any" is special token for matching any IPv4 addresses.  */
-  if (afi == AFI_IP)
+  switch (afi)
     {
+    case AFI_IP:
       if (strncmp ("any", prefix, strlen (prefix)) == 0)
 	{
 	  ret = str2prefix_ipv4 ("0.0.0.0/0", (struct prefix_ipv4 *) &p);
@@ -715,10 +716,8 @@
 	  vty_out (vty, "%% Malformed IPv4 prefix%s", VTY_NEWLINE);
 	  return CMD_WARNING;
 	}
-    }
-#ifdef HAVE_IPV6
-  else if (afi == AFI_IP6)
-    {
+      break;
+    case AFI_IP6:
       if (strncmp ("any", prefix, strlen (prefix)) == 0)
 	{
 	  ret = str2prefix_ipv6 ("::/0", (struct prefix_ipv6 *) &p);
@@ -734,8 +733,8 @@
 	  vty_out (vty, "%% Malformed IPv6 prefix%s", VTY_NEWLINE);
 	  return CMD_WARNING;
 	}
+      break;
     }
-#endif /* HAVE_IPV6 */
 
   /* ge and le check. */
   if (genum && (genum <= p.prefixlen))
diff --git a/lib/zebra.h b/lib/zebra.h
index a607437..a9c76c6 100644
--- a/lib/zebra.h
+++ b/lib/zebra.h
@@ -445,11 +445,6 @@
 
 extern const char *zserv_command_string (unsigned int command);
 
-/* Zebra's family types. */
-#define ZEBRA_FAMILY_IPV4                1
-#define ZEBRA_FAMILY_IPV6                2
-#define ZEBRA_FAMILY_MAX                 3
-
 /* Error codes of zebra. */
 #define ZEBRA_ERR_NOERROR                0
 #define ZEBRA_ERR_RTEXIST               -1
@@ -483,9 +478,11 @@
 #endif
 
 /* Address family numbers from RFC1700. */
-#define AFI_IP                    1
-#define AFI_IP6                   2
-#define AFI_MAX                   3
+typedef enum {
+  AFI_IP  = 1,
+  AFI_IP6 = 2,
+#define AFI_MAX 3
+} afi_t;
 
 /* Subsequent Address Family Identifier. */
 #define SAFI_UNICAST              1
@@ -516,8 +513,6 @@
 #define SET_FLAG(V,F)        (V) |= (F)
 #define UNSET_FLAG(V,F)      (V) &= ~(F)
 
-/* AFI and SAFI type. */
-typedef u_int16_t afi_t;
 typedef u_int8_t safi_t;
 
 /* Zebra types. Used in Zserv message header. */
