diff --git a/sysdep/bsd/krt-sock.c b/sysdep/bsd/krt-sock.c
index 1f793293..92f8c837 100644
--- a/sysdep/bsd/krt-sock.c
+++ b/sysdep/bsd/krt-sock.c
@@ -314,6 +314,10 @@ krt_send_route(struct krt_proto *p, int cmd, rte *e)
       if (ipa_is_link_local(gw))
 	_I0(gw) = 0xfe800000 | (i->index & 0x0000ffff);
 
+      if (ipa_is_ip6(gw)) {
+        af = AF_INET6;
+      }
+
       sockaddr_fill(&gate, af, gw, NULL, 0);
       msg.rtm.rtm_flags |= RTF_GATEWAY;
       msg.rtm.rtm_addrs |= RTA_GATEWAY;
@@ -469,7 +473,7 @@ krt_read_route(struct ks_msg *msg, struct krt_proto *p, int scan)
 
   idst  = ipa_from_sa(&dst);
   imask = ipa_from_sa(&mask);
-  igate = (gate.sa.sa_family == dst.sa.sa_family) ? ipa_from_sa(&gate) : IPA_NONE;
+  igate = ipa_from_sa(&gate);
 
 #ifdef KRT_SHARED_SOCKET
   if (!scan)
