summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/mempool.c6
-rw-r--r--sysdep/bsd/krt-sock.c4
2 files changed, 5 insertions, 5 deletions
diff --git a/lib/mempool.c b/lib/mempool.c
index 7c306e99..9d4404f7 100644
--- a/lib/mempool.c
+++ b/lib/mempool.c
@@ -240,9 +240,9 @@ lp_restore(linpool *m, lp_state *p)
struct lp_chunk *c;
/* Move ptr to the saved pos and free all newer large chunks */
- m->current = c = p->current;
- m->ptr = p->ptr;
- m->end = c ? c->data + LP_DATA_SIZE : NULL;
+ m->current = c = p->current ?: m->first;
+ m->ptr = p->ptr ?: (c ? c->data : NULL);
+ m->end = c ? (c->data + LP_DATA_SIZE) : NULL;
m->total_large = p->total_large;
while ((c = m->first_large) && (c != p->large))
diff --git a/sysdep/bsd/krt-sock.c b/sysdep/bsd/krt-sock.c
index 1f793293..d13e20a3 100644
--- a/sysdep/bsd/krt-sock.c
+++ b/sysdep/bsd/krt-sock.c
@@ -314,7 +314,7 @@ krt_send_route(struct krt_proto *p, int cmd, rte *e)
if (ipa_is_link_local(gw))
_I0(gw) = 0xfe800000 | (i->index & 0x0000ffff);
- sockaddr_fill(&gate, af, gw, NULL, 0);
+ sockaddr_fill(&gate, (ipa_is_ip4(gw) ? AF_INET : AF_INET6), gw, NULL, 0);
msg.rtm.rtm_flags |= RTF_GATEWAY;
msg.rtm.rtm_addrs |= RTA_GATEWAY;
break;
@@ -469,7 +469,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)