реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> lwip DCHP client, lwip 1.3.0 на at91rm9200
sergeeff
сообщение May 29 2008, 13:54
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Коллеги!

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

Вопрос в том, что-то надо еще в устройстве определить или же дело в настройках сервера сети?
Go to the top of the page
 
+Quote Post
_dem
сообщение May 29 2008, 14:16
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 2-02-07
Из: CN, Ukraine
Пользователь №: 24 970



На рабочей станции DNS сервер вписан нужный ?
Go to the top of the page
 
+Quote Post
prottoss
сообщение May 29 2008, 14:17
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



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++;


--------------------
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jun 12 2008, 10:02
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Ну с этим делом и помощью коллег с ixbt форума разобрался, добавив option 81 в DHCP клиента, "стимулируюйщая" регистрацию клиента в связке DHCP-DNS в Мicrosoft сетях.

А вот теперь несколько другой вопрос. А как можно сообщить сетевому окружению, что мое tcp/ip устройство является, к примеру, принтером. Какие для этого задействованы механизмы, может кто в курсе?
Go to the top of the page
 
+Quote Post
athlon64
сообщение May 12 2012, 10:50
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 156
Регистрация: 10-03-10
Из: Уфа
Пользователь №: 55 882



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


Не могли бы вы привести сделанные вами изменения?
Тему на ixbt не нашёл


--------------------
Руслан
Go to the top of the page
 
+Quote Post
dxp
сообщение May 12 2012, 15:08
Сообщение #6


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



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

http://electronix.ru/forum/index.php?showtopic=97074&hl=


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
athlon64
сообщение May 14 2012, 07:45
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 156
Регистрация: 10-03-10
Из: Уфа
Пользователь №: 55 882



Цитата(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, его можно пропинговать по имени


--------------------
Руслан
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 01:55
Рейтинг@Mail.ru


Страница сгенерированна за 0.01397 секунд с 7
ELECTRONIX ©2004-2016