Add function to run periodic checks
This commit is contained in:
		
							parent
							
								
									74bc32fc2c
								
							
						
					
					
						commit
						add4e8dbcf
					
				@ -4,6 +4,7 @@ import (
 | 
				
			|||||||
	"net"
 | 
						"net"
 | 
				
			||||||
	"os"
 | 
						"os"
 | 
				
			||||||
	"strconv"
 | 
						"strconv"
 | 
				
			||||||
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	envChecks "git.ruekov.eu/ruakij/routingtabletowg/lib/environmentchecks"
 | 
						envChecks "git.ruekov.eu/ruakij/routingtabletowg/lib/environmentchecks"
 | 
				
			||||||
	ip2Map "git.ruekov.eu/ruakij/routingtabletowg/lib/iproute2mapping"
 | 
						ip2Map "git.ruekov.eu/ruakij/routingtabletowg/lib/iproute2mapping"
 | 
				
			||||||
@ -104,9 +105,29 @@ func main() {
 | 
				
			|||||||
	logger.Info.Printf("Initially setting all current routes")
 | 
						logger.Info.Printf("Initially setting all current routes")
 | 
				
			||||||
	syncCurrentRoutesToHandler(routeSubChan, routeList)
 | 
						syncCurrentRoutesToHandler(routeSubChan, routeList)
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						if(periodicSync > 0){
 | 
				
			||||||
 | 
							go runPeriodicSync(periodicSync, link, routeSubChan)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	select {}
 | 
						select {}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func runPeriodicSync(seconds int, link netlink.Link, routeSubChan chan netlink.RouteUpdate){
 | 
				
			||||||
 | 
						interval := time.Duration(seconds) * time.Second
 | 
				
			||||||
 | 
						for {
 | 
				
			||||||
 | 
							time.Sleep(interval)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Get routing-table entries from device
 | 
				
			||||||
 | 
							routeList, err := netlink.RouteList(link, netlink.FAMILY_ALL)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								logger.Error.Fatalf("Couldn't get route-entries: %s", err)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							logger.Info.Printf("Periodically syncing all routes")
 | 
				
			||||||
 | 
							syncCurrentRoutesToHandler(routeSubChan, routeList)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func syncCurrentRoutesToHandler(routeSubChan chan netlink.RouteUpdate, routeList []netlink.Route){
 | 
					func syncCurrentRoutesToHandler(routeSubChan chan netlink.RouteUpdate, routeList []netlink.Route){
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	for _, route := range routeList {
 | 
						for _, route := range routeList {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user