aboutsummaryrefslogtreecommitdiff
path: root/j1demo/firmware/ntp.fs
blob: 881296a0528a05ebd08b381a453cd1ace5d16cb8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
( NTP                                        JCB 09:54 11/17/10)

: ntp-server 
   \ h# 02830a00.
   \ ip# 91.189.94.4 \ time.ubuntu
   ip# 17.151.16.20  \ time.apple.com
;

: ntp-request
    d# 123 d# 9999
    ntp-server
    net-my-ip
    2over arp-lookup
    ( dst-port src-port dst-ip src-ip *ethaddr )
    udp-header
    h# 2304 mac-pkt-, h# 04ec mac-pkt-, 
    d# 6 mac-pkt-,0

    d# 4 mac-pkt-,0 \ originate
    d# 4 mac-pkt-,0 \ reference
    d# 4 mac-pkt-,0 \ receive
    \ d# 4 mac-pkt-,0 \ transmit
    time@ mac-pkt-d, d# 2 mac-pkt-,0
    udp-wrapup mac-send
;

: ntp-handler
    IP_PROTO_UDP ip-isproto
    ETH.IP.UDP.SOURCEPORT packet@ d# 123 = and
    ETH.IP.UDP.DESTPORT packet@ d# 9999 = and
    if
        ETH.IP.UDP.NTP.TRANSMIT packetd@ setdate
        time@ ETH.IP.UDP.NTP.ORIGINATE packetd@ d- setdelay
    then
;