Release ipv6 faild with -r
To Reproduce Steps to reproduce the behavior:
- request ipv6 address dhclient -6 -pf /tmp/enp2s2.pid -lf /tmp/enp2s2.lease enp2s2
- release the ipv6 lease dhclient -6 -d -r -pf /tmp/enp2s2.pid -lf /tmp/enp2s2.lease enp2s2 As show in the above picture, the process of releasing the lease never eixt, while the process of requesting lease was killed as expected, and the lease was also released.
Expected behavior
- The process of requesting lease was killed.
- The lease was also released.
- The process of releasing lease eixt.
gdb infomation the process is stoped at select(), because the timeout for select is NULL. Relevant codes are as follows,
static isc_result_t
evloop(isc__appctx_t *ctx) {
...
readytasks = isc__taskmgr_ready(ctx->taskmgr);
if (readytasks) {
tv.tv_sec = 0;
tv.tv_usec = 0;
tvp = &tv;
call_timer_dispatch = true;
} else {
result = isc__timermgr_nextevent(ctx->timermgr, &when);
if (result != ISC_R_SUCCESS)
tvp = NULL; //tvp is NULL because ctx->timermgr->nscheduled == 0
else {
TIME_NOW(&now);
us = isc_time_microdiff(&when, &now);
if (us == 0)
call_timer_dispatch = true;
tv.tv_sec = us / 1000000;
tv.tv_usec = us % 1000000;
tvp = &tv;
}
}
...
}
Environment:
- ISC DHCP version: DHCP Client 4.4.2
- OS: openEuler
Describe the solution you'd like Are the above phenomena normal? why