示例#1
0
// Route specific
func handleRoute(update netlink.RouteUpdate, callback func(supervisor.NetlinkUpdate)) {
	// Route type is not a bit mask for a couple of values, but a single
	// unsigned int, that's why we use switch here not the "&" operator.
	switch update.Type {
	case syscall.RTM_NEWROUTE:
		fmt.Printf("[Create a route]\t%+v\n", update)
	case syscall.RTM_DELROUTE:
		fmt.Printf("[Remove a route]\t%+v\n", update)
	case syscall.RTM_GETROUTE:
		fmt.Printf("[Receive info of a route]\t%+v\n", update)
	}

	netlinkUpdate := supervisor.NetlinkUpdate{}
	netlinkUpdate.Route = update
	netlinkUpdate.UpdateType = supervisor.UpdateTypeRoute
	callback(netlinkUpdate)
}