@@ -49,6 +49,7 @@ import (
4949 "github.com/fatih/color"
5050 "github.com/google/gopacket/layers"
5151 "github.com/google/gopacket/pcap"
52+ "github.com/jmaralo/sntp"
5253 "github.com/pelletier/go-toml/v2"
5354 trace "github.com/rs/zerolog/log"
5455)
@@ -187,17 +188,19 @@ func main() {
187188 }
188189
189190 // Start handling TCP client connections
190- backendTcpClientAddr , err := net .ResolveTCPAddr ("tcp" , fmt .Sprintf ("%s:%d" , info .Addresses .Backend .String (), info .Ports .TcpClient ))
191- if err != nil {
192- panic ("Failed to resolve local backend TCP client address" )
193- }
191+ i := 0
194192 serverTargets := make (map [string ]abstraction.TransportTarget )
195193 for _ , board := range podData .Boards {
196194 if ! common .Contains (config .Vehicle .Boards , board .Name ) {
197195 serverTargets [fmt .Sprintf ("%s:%d" , info .Addresses .Boards [board .Name ], info .Ports .TcpClient )] = abstraction .TransportTarget (board .Name )
198196 continue
199197 }
198+ backendTcpClientAddr , err := net .ResolveTCPAddr ("tcp" , fmt .Sprintf ("%s:%d" , info .Addresses .Backend .String (), info .Ports .TcpClient + uint16 (i )))
199+ if err != nil {
200+ panic ("Failed to resolve local backend TCP client address" )
201+ }
200202 go transp .HandleClient (tcp .NewClient (backendTcpClientAddr ), abstraction .TransportTarget (board .Name ), "tcp" , fmt .Sprintf ("%s:%d" , info .Addresses .Boards [board .Name ], info .Ports .TcpServer ))
203+ i ++
201204 }
202205
203206 // Start handling TCP server connections
@@ -248,6 +251,26 @@ func main() {
248251 go httpServer .ListenAndServe ()
249252 }
250253
254+ // <--- SNTP --->
255+ sntpAddr , err := net .ResolveUDPAddr ("udp" , fmt .Sprintf ("%s:%d" , info .Addresses .Backend , info .Ports .SNTP ))
256+ if err != nil {
257+ fmt .Fprintf (os .Stderr , "error resolving sntp address: %v\n " , err )
258+ os .Exit (1 )
259+ }
260+ sntpServer , err := sntp .NewUnicast ("udp" , sntpAddr )
261+ if err != nil {
262+ fmt .Fprintf (os .Stderr , "error creating sntp server: %v\n " , err )
263+ os .Exit (1 )
264+ }
265+
266+ go func () {
267+ err := sntpServer .ListenAndServe ()
268+ if err != nil {
269+ fmt .Fprintf (os .Stderr , "error listening sntp server: %v\n " , err )
270+ return
271+ }
272+ }()
273+
251274 interrupt := make (chan os.Signal , 1 )
252275 signal .Notify (interrupt , os .Interrupt )
253276
0 commit comments