Делаем предобработку с целью назначить номер интерфейса.
Код:
package ru.rcoms.bgbilling.inet;
import java.util.*;
import ru.bitel.common.Utils;
import ru.bitel.bgbilling.kernel.network.dhcp.DhcpPacket;
import ru.bitel.bgbilling.kernel.network.dhcp.DhcpOption;
import ru.bitel.bgbilling.kernel.network.dhcp.DhcpProtocolHandler;
import ru.bitel.bgbilling.modules.inet.access.sa.ProtocolHandlerAdapter;
import ru.bitel.bgbilling.modules.inet.dhcp.InetDhcpProcessor;
public class LtpGpon
extends ProtocolHandlerAdapter
implements DhcpProtocolHandler
{
@Override
public void preprocessDhcpRequest( DhcpPacket request, DhcpPacket response )
throws Exception
{
DhcpOption circuitId = request.getSubOption( (byte)1 );
String cid = new String (circuitId.value) ;
StringTokenizer cidk = new StringTokenizer(cid,"-");
byte ontid = new Byte (cidk.nextToken());
int gemid = new Integer (cidk.nextToken());
int vlan = new Integer (cidk.nextToken());
request.setOption( InetDhcpProcessor.INTERFACE_ID, ontid);
// request.setOption( InetDhcpProcessor.VLAN_ID, vlan);
}
}
Запущено все на версии
Код:
Сервер: вер. 6.0 сборка 1862 от 19.08.2015 16:20:56
inet вер. 6.0 сборка 1509 от 13.08.2015 18:30:50
В результате получаем
Код:
Common options: {interfaceId=1}
dhcp 09-17/11:23:02 DEBUG [dhcpLstnr-p-8-t-8] InetDhcpProcessor - DHCP_DISCOVER
dhcp 09-17/11:23:02 DEBUG [dhcpLstnr-p-8-t-8] InetDhcpProcessor - request.giaddr= 172.17.1.2, clientAddress=/172.17.1.2:67
dhcp 09-17/11:23:02 INFO [dhcpLstnr-p-8-t-8] InetDhcpDevice - Search serv on deviceId: 136; 1; interfaceId: 45
dhcp 09-17/11:23:02 INFO [dhcpLstnr-p-8-t-8] InetDhcpProcessor - InetServ not found.
Тоесть каким то макаром запускается обработчик перезаписывающий INTERFACE_ID из 82[1][5] в конфиге ничего нет. Устройств с dhcp.option82.interfaceId.position=5 нет в принципе. Куда смотреть? Что делать? Причем раньше работала абсолютно аналогичная схема, сменили OLT сделали новый предобрабочик и вот.