forum.bitel.ru
http://forum.bitel.ru/

dhcp.option82.agentRemoteId
http://forum.bitel.ru/viewtopic.php?f=44&t=7988
Страница 1 из 1

Автор:  iONE [ 23 апр 2013, 17:23 ]
Заголовок сообщения:  dhcp.option82.agentRemoteId

Под одним DHCP релеем стоят коммутаторы которые по разному формируют dhcp.option82.agentRemoteId (разной длинны) вставляя её в dhcp запрос абонента.
Можно ли сделать функцию dhcp.option82.agentRemoteId.suffix=6 которая будет копировать 6 байт с конца поля dhcp.option82.agentRemoteId?

Пример запросов с двух разных коммутаторов в одном vlanе:

Код:
04-23/14:50:14  INFO [dhcpLstnr-p-10-t-4] InetAbstractDhcpProcessor - REQUEST:
Message type: BOOT_REQUEST
Dhcp message type: DHCP Discover{1}
htype: 1, hlen: 6, hops: 1
xid: 993484174, secs: 6912, flags: -32768
Client IP: 0.0.0.0
Your IP: 0.0.0.0
Server IP: 0.0.0.0
Relay IP: x.x.77.62
Client MAC: {DC0EA1FD2CF6}
  {116}={01}
  {61}={01DC0EA1FD2CF6}
  Requested IP Address{50}=x.x.x.x
  Host name{12}={microsof-236abd}
  {60}={4D53465420352E30}
  Parameter request list{55}={1, 15, 3, 6, 44, 46, 47, 31, 33, -7, 43}
  {43}={DC00}
  Agent information{82}=
    sub{1}={000601BC01000001}
    sub{2}={00030F169BE0}


04-23/14:49:54  INFO [dhcpLstnr-p-10-t-6] InetAbstractDhcpProcessor - REQUEST:
Message type: BOOT_REQUEST
Dhcp message type: DHCP Discover{1}
htype: 1, hlen: 6, hops: 1
xid: 1942092315, secs: 0, flags: -32768
Client IP: 0.0.0.0
Your IP: 0.0.0.0
Server IP: 0.0.0.0
Relay IP: x.x.77.62
Client MAC: {4C72B9CC88A6}
  {61}={014C72B9CC88A6}
  Requested IP Address{50}=x.x.x.x
  Host name{12}={evro}
  {60}={4D53465420352E30}
  Parameter request list{55}={1, 15, 3, 6, 44, 46, 47, 31, 33, 121, -7, -4, 43}
  Agent information{82}=
    sub{1}={000400640006}
    sub{2}={0006000D659699C0}

Автор:  Amir [ 29 апр 2013, 19:20 ]
Заголовок сообщения:  Re: dhcp.option82.agentRemoteId

Пока выглядит слишком специфично.

Предлагаю установить тип поиска dhcp.deviceSearchMode=0 (совсем недавно добавили такой режим).
По нему сначала по giaddr находится первое устройство, у него вызывается предобработка запроса.
После предобработки ищется агентское дочернее устройство по agentRemoteId (и дополнительно вызывается предобработка у него).

Т.е. нужно будет также добавить предобработку процессора протокола для устройства-giaddr, где устанавливаем remoteId:
Код:
public void preprocessDhcpRequest( DhcpPacket request, DhcpPacket response )
   throws Exception
{
   final DhcpOption subOption = request.getSubOption( 2 );
   if( subOption != null )
   {
      byte[] agentRemoteId = new byte[6];
      System.arraycopy( subOption.value, subOption.value.length-6, agentRemoteId, 0, 6 );
      request.setOption( InetAbstractDhcpProcessor.AGENT_REMOTE_ID, agentRemoteId );
   }
}

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/