[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lwip-users] NTP server option (patch for dhcp.c/dhcp.h)
From: |
Mitani Hiroshi |
Subject: |
[lwip-users] NTP server option (patch for dhcp.c/dhcp.h) |
Date: |
Wed, 07 Sep 2005 15:51:25 +0900 |
User-agent: |
Mozilla Thunderbird 1.0.6 (Windows/20050716) |
Hi,
Here is a small patch to obtain NTP server address from DHCP server.
(see RFC-2132 8.2)
Have a fun.
--
Mitani
*** dhcp.c.orig Wed Sep 7 15:35:22 2005
--- dhcp.c Wed Sep 7 15:04:42 2005
***************
*** 234,244 ****
dhcp_option(dhcp, DHCP_OPTION_SERVER_ID, 4);
dhcp_option_long(dhcp, ntohl(dhcp->server_ip_addr.addr));
! dhcp_option(dhcp, DHCP_OPTION_PARAMETER_REQUEST_LIST, 4/*num options*/);
dhcp_option_byte(dhcp, DHCP_OPTION_SUBNET_MASK);
dhcp_option_byte(dhcp, DHCP_OPTION_ROUTER);
dhcp_option_byte(dhcp, DHCP_OPTION_BROADCAST);
dhcp_option_byte(dhcp, DHCP_OPTION_DNS_SERVER);
dhcp_option_trailer(dhcp);
/* shrink the pbuf to the actual content length */
--- 236,247 ----
dhcp_option(dhcp, DHCP_OPTION_SERVER_ID, 4);
dhcp_option_long(dhcp, ntohl(dhcp->server_ip_addr.addr));
! dhcp_option(dhcp, DHCP_OPTION_PARAMETER_REQUEST_LIST, 5/*num options*/);
dhcp_option_byte(dhcp, DHCP_OPTION_SUBNET_MASK);
dhcp_option_byte(dhcp, DHCP_OPTION_ROUTER);
dhcp_option_byte(dhcp, DHCP_OPTION_BROADCAST);
dhcp_option_byte(dhcp, DHCP_OPTION_DNS_SERVER);
+ dhcp_option_byte(dhcp, DHCP_OPTION_NTP_SERVER);
dhcp_option_trailer(dhcp);
/* shrink the pbuf to the actual content length */
***************
*** 498,503 ****
--- 501,513 ----
dhcp->offered_dns_addr[n].addr =
htonl(dhcp_get_option_long(&option_ptr[2+(n<<2)]));
}
}
+
+ /* NTP server */
+ option_ptr = dhcp_get_option_ptr(dhcp, DHCP_OPTION_NTP_SERVER);
+ if (option_ptr != NULL) {
+ /* get one NTP server */
+ dhcp->offered_ntp_addr.addr = htonl(dhcp_get_option_long(&option_ptr[2]));
+ }
}
/**
***************
*** 720,730 ****
dhcp_option(dhcp, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN);
dhcp_option_short(dhcp, 576);
! dhcp_option(dhcp, DHCP_OPTION_PARAMETER_REQUEST_LIST, 4/*num options*/);
dhcp_option_byte(dhcp, DHCP_OPTION_SUBNET_MASK);
dhcp_option_byte(dhcp, DHCP_OPTION_ROUTER);
dhcp_option_byte(dhcp, DHCP_OPTION_BROADCAST);
dhcp_option_byte(dhcp, DHCP_OPTION_DNS_SERVER);
dhcp_option_trailer(dhcp);
--- 729,740 ----
dhcp_option(dhcp, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN);
dhcp_option_short(dhcp, 576);
! dhcp_option(dhcp, DHCP_OPTION_PARAMETER_REQUEST_LIST, 5/*num options*/);
dhcp_option_byte(dhcp, DHCP_OPTION_SUBNET_MASK);
dhcp_option_byte(dhcp, DHCP_OPTION_ROUTER);
dhcp_option_byte(dhcp, DHCP_OPTION_BROADCAST);
dhcp_option_byte(dhcp, DHCP_OPTION_DNS_SERVER);
+ dhcp_option_byte(dhcp, DHCP_OPTION_NTP_SERVER);
dhcp_option_trailer(dhcp);
*** dhcp.h.orig Wed Sep 7 15:34:53 2005
--- dhcp.h Wed Sep 7 14:22:47 2005
***************
*** 46,51 ****
--- 46,52 ----
#define DHCP_MAX_DNS 2
u32_t dns_count; /* actual number of DNS servers obtained */
struct ip_addr offered_dns_addr[DHCP_MAX_DNS]; /* DNS server addresses */
+ struct ip_addr offered_ntp_addr; /* NTP server addresses */
u32_t offered_t0_lease; /* lease period (in seconds) */
u32_t offered_t1_renew; /* recommended renew time (usually 50% of lease
period) */
***************
*** 191,196 ****
--- 192,198 ----
#define DHCP_OPTION_MTU 26
#define DHCP_OPTION_BROADCAST 28
#define DHCP_OPTION_TCP_TTL 37
+ #define DHCP_OPTION_NTP_SERVER 42 /* RFC 2132 8.3 */
#define DHCP_OPTION_END 255
/** DHCP options */
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [lwip-users] NTP server option (patch for dhcp.c/dhcp.h),
Mitani Hiroshi <=