summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorxebd <xeb@mail.ru>2022-01-13 11:02:25 +0300
committerGitHub <noreply@github.com>2022-01-13 11:02:25 +0300
commitbf75b007664b6688c9670e0c2bb2ea5266d84598 (patch)
treeb31c00e1a7c5211c4162ef88eabf5832b53bd9a4
parentcca47ac174d1f2a99ee4969423e2bbc4b2fb6af8 (diff)
parentf756c265e991db26806787b12f8e2d8f96e8d47d (diff)
downloadaccel-ppp-bf75b007664b6688c9670e0c2bb2ea5266d84598.tar.gz
accel-ppp-bf75b007664b6688c9670e0c2bb2ea5266d84598.zip
Merge pull request #36 from DmitriyEshenko/master-03122022-01
Check if ipv6 dp pool is available before reply
-rw-r--r--accel-pppd/extra/ipv6pool.c3
-rw-r--r--accel-pppd/ipv6/dhcpv6.c4
2 files changed, 7 insertions, 0 deletions
diff --git a/accel-pppd/extra/ipv6pool.c b/accel-pppd/extra/ipv6pool.c
index 3494a912..c5cabef5 100644
--- a/accel-pppd/extra/ipv6pool.c
+++ b/accel-pppd/extra/ipv6pool.c
@@ -307,6 +307,9 @@ static struct ipv6db_prefix_t *get_dp(struct ap_session *ses)
else
pool = def_dppool;
+ if (!pool)
+ return NULL;
+
start = pool;
do {
spin_lock(&pool->lock);
diff --git a/accel-pppd/ipv6/dhcpv6.c b/accel-pppd/ipv6/dhcpv6.c
index cc7f1f35..91b396c3 100644
--- a/accel-pppd/ipv6/dhcpv6.c
+++ b/accel-pppd/ipv6/dhcpv6.c
@@ -352,6 +352,10 @@ static void dhcpv6_send_reply(struct dhcpv6_packet *req, struct dhcpv6_pd *pd, i
ses->ipv6_dp = ipdb_get_ipv6_prefix(ses);
if (ses->ipv6_dp)
triton_event_fire(EV_FORCE_INTERIM_UPDATE, ses);
+ else {
+ dhcpv6_packet_free(reply);
+ return;
+ }
}
if ((req->hdr->type == D6_RENEW) && pd->dp_iaid != ia_na->iaid) {