Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: lwip DCHP client
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
sergeeff
Коллеги!

Может кто сталкивался. Использую lwip 1.3.0 на at91rm9200 RAW API. Активирую DHCP клиента. Для тестирования организовал микросеть: сервер на MS Server 2008, рабочая станция на XP Home и мое устройство. В устройстве задал netif->hostname = "TestDevice". На сервере, DNS сервер прописывает IP адрес для моего устройства и правильно распознает его hostname. Но если смотрю на сетевые устройства с рабочей станции - вижу только сервер с его именем и саму рабочую станцию. Ping устройства по адресу - проходит, а по имени нет. Сетевые сканеры тоже показывают три IP адреса и только два имени хостов.
Т.е. к устройству невозможно обратиться по имени, только по адресу, что те есть хорошо.

Вопрос в том, что-то надо еще в устройстве определить или же дело в настройках сервера сети?
_dem
На рабочей станции DNS сервер вписан нужный ?
prottoss
lwip просто изучал, но ни где не использовал. Посмотрите, в сообщениях от устройства хосту, сообщается ли имя устройства (а оно есть? smile.gif ). Должно быть примерно вот так:
Код
/* Create DHCP options pointer */
UCHAR *options = hdr->vendor_info;

/* First magic cookie */
*(UINT32 *)options = DHCP_MAGIC_COOKIE;
options += sizeof(UINT32);

/* Message type */
*options++ = DHCP_OPT_MESSAGE_TYPE;
*options++ = 1;
*options++ = msg_type;

/* Host name */
*options++ = BOOTP_OPT_HOSTNAME;
UINT8 name_len = strlen(g_HostData.sysName);
CHAR *ptr = g_HostData.sysName;
*options++ = name_len;
while(name_len--)
  *options++ = *ptr++;
sergeeff
Ну с этим делом и помощью коллег с ixbt форума разобрался, добавив option 81 в DHCP клиента, "стимулируюйщая" регистрацию клиента в связке DHCP-DNS в Мicrosoft сетях.

А вот теперь несколько другой вопрос. А как можно сообщить сетевому окружению, что мое tcp/ip устройство является, к примеру, принтером. Какие для этого задействованы механизмы, может кто в курсе?
athlon64
Цитата(sergeeff @ Jun 12 2008, 16:02) *
Ну с этим делом и помощью коллег с ixbt форума разобрался, добавив option 81 в DHCP клиента, "стимулируюйщая" регистрацию клиента в связке DHCP-DNS в Мicrosoft сетях.


Не могли бы вы привести сделанные вами изменения?
Тему на ixbt не нашёл
dxp
QUOTE (athlon64 @ May 12 2012, 17:50) *
Не могли бы вы привести сделанные вами изменения?
Тему на ixbt не нашёл

http://electronix.ru/forum/index.php?showtopic=97074&hl=
athlon64
Цитата(dxp @ May 12 2012, 21:08) *

Печально, присоединяюсь к соболезнованиям

По теме:
Нужно в dhcp.c после выдачи имени хоста в OPTION 12:
Код
    p = (const char*)netif->hostname;
    if (p != NULL) {
      dhcp_option(dhcp, DHCP_OPTION_HOSTNAME, strlen(p));
      while (*p) {
        dhcp_option_byte(dhcp, *p++);
      }
    }


добавить OPTION 81, который будет заставлять DHCP сервер при запросе у него параметров устройству, регистрировать устройство в DNS. Подробности можно посмотреть в RFC 4702.
Код
    p = (const char*)netif->hostname;
    if (p != NULL)
    {
      dhcp_option(dhcp, DHCP_OPTION_CLIENT_FQDN, strlen(p)+3);
      dhcp_option_byte(dhcp, 1);  // 1 или 5
      dhcp_option_byte(dhcp, 0);
      dhcp_option_byte(dhcp, 0);
      
      while (*p)
      {
        dhcp_option_byte(dhcp, *p++);
      }
    }

Теперь, как только устройство получило по DHCP свой IP, его можно пропинговать по имени
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.