...
При смене абонентом устройства идет новый запрос DHCP-Discover, но может быть ситуация, когда старая сессия еще не закрыта по таймауту (пример - только что было продление адреса и абонент сменил устройство). В этом случае будет считаться что у абонента уже есть одна сессия и что IP-адрес этой сессии еще занят. Для того, чтобы на DHCP-Discover происходило закрытие активных сессий на сервисе, нужно указать dhcp.connection.closeOnNew=1.
Если необходимо, чтобы адрес выдавался независимо от баланса/статуса/состояния, т.е. всегда, как при положительном баланса и открытом статусе договора, нужно указать параметр dhcp.disable.mode=1 или 2. При значении 1 InetAccess будет выдавать адрес всегда так, как если авторизация прошла удачно. Однако при необходимости переключить сессию из состояния отключена в подключена или наоборот будет выдан NAK, сессия завершится и создастся новая, при этом вызывая в обработчике активации сервисов onAccountingStop и onAccountingStart. При значении 2 при необходимости переключить состояние сессия не завершается (но connectionModify вызывается во всех трех случаях).
Блок кода | ||
---|---|---|
| ||
dhcp.disable.mode=2, если выдали и забыли, и при изменении баланса/статуса ничего не делаем;
dhcp.disable.mode=1, если при изменении баланса/статуса нужно чтобы вызвались onAccountingStop/onAccountingStart;
dhcp.disable.mode=0 - по умолчанию.
# Режим выдачи адреса при неудачной авторизации. 0 (по умолчанию) - выдает адрес согласно параметрам dhcp.disable.*,
# 1 - выдает адрес как при удачной авторизации (при изменении состояния выдается NAK, срабатывает onAccountingStop, выдает ACK, срабатывает onAccountingStart),
# 2 - выдает адрес как при удачной авторизации (при изменении состояния продолжает выдавать адрес)
dhcp.disable.mode=0 |
Якорь | ||||
---|---|---|---|---|
|
...