// 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) }