mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-21 06:31:31 +00:00
This patch is simply clean-up to make the IPv4 type that is used match what Linux uses. It also attempts to move all variables that are IP addresses use good naming instead of CamelCase. No functional change. Signed-off-by: Joe Hershberger <joe.hershberger@ni.com> Acked-by: Simon Glass <sjg@chromium.org>
91 lines
1.7 KiB
C
91 lines
1.7 KiB
C
/*
|
|
* SNTP support driver
|
|
*
|
|
* Masami Komiya <mkomiya@sonare.it> 2005
|
|
*
|
|
*/
|
|
|
|
#include <common.h>
|
|
#include <command.h>
|
|
#include <net.h>
|
|
#include <rtc.h>
|
|
|
|
#include "sntp.h"
|
|
|
|
#define SNTP_TIMEOUT 10000UL
|
|
|
|
static int SntpOurPort;
|
|
|
|
static void
|
|
SntpSend(void)
|
|
{
|
|
struct sntp_pkt_t pkt;
|
|
int pktlen = SNTP_PACKET_LEN;
|
|
int sport;
|
|
|
|
debug("%s\n", __func__);
|
|
|
|
memset(&pkt, 0, sizeof(pkt));
|
|
|
|
pkt.li = NTP_LI_NOLEAP;
|
|
pkt.vn = NTP_VERSION;
|
|
pkt.mode = NTP_MODE_CLIENT;
|
|
|
|
memcpy((char *)NetTxPacket + NetEthHdrSize() + IP_UDP_HDR_SIZE,
|
|
(char *)&pkt, pktlen);
|
|
|
|
SntpOurPort = 10000 + (get_timer(0) % 4096);
|
|
sport = NTP_SERVICE_PORT;
|
|
|
|
NetSendUDPPacket(NetServerEther, net_ntp_server, sport, SntpOurPort,
|
|
pktlen);
|
|
}
|
|
|
|
static void
|
|
SntpTimeout(void)
|
|
{
|
|
puts("Timeout\n");
|
|
net_set_state(NETLOOP_FAIL);
|
|
return;
|
|
}
|
|
|
|
static void sntp_handler(uchar *pkt, unsigned dest, struct in_addr sip,
|
|
unsigned src, unsigned len)
|
|
{
|
|
struct sntp_pkt_t *rpktp = (struct sntp_pkt_t *)pkt;
|
|
struct rtc_time tm;
|
|
ulong seconds;
|
|
|
|
debug("%s\n", __func__);
|
|
|
|
if (dest != SntpOurPort)
|
|
return;
|
|
|
|
/*
|
|
* As the RTC's used in U-Boot sepport second resolution only
|
|
* we simply ignore the sub-second field.
|
|
*/
|
|
memcpy(&seconds, &rpktp->transmit_timestamp, sizeof(ulong));
|
|
|
|
to_tm(ntohl(seconds) - 2208988800UL + NetTimeOffset, &tm);
|
|
#if defined(CONFIG_CMD_DATE)
|
|
rtc_set(&tm);
|
|
#endif
|
|
printf("Date: %4d-%02d-%02d Time: %2d:%02d:%02d\n",
|
|
tm.tm_year, tm.tm_mon, tm.tm_mday,
|
|
tm.tm_hour, tm.tm_min, tm.tm_sec);
|
|
|
|
net_set_state(NETLOOP_SUCCESS);
|
|
}
|
|
|
|
void
|
|
SntpStart(void)
|
|
{
|
|
debug("%s\n", __func__);
|
|
|
|
NetSetTimeout(SNTP_TIMEOUT, SntpTimeout);
|
|
net_set_udp_handler(sntp_handler);
|
|
memset(NetServerEther, 0, sizeof(NetServerEther));
|
|
|
|
SntpSend();
|
|
}
|