mirror of
				https://github.com/tailscale/tailscale.git
				synced 2025-10-31 08:11:32 +01:00 
			
		
		
		
	In prep for most of the package funcs in net/interfaces to become methods in a long-lived netmon.Monitor that can cache things. (Many of the funcs are very heavy to call regularly, whereas the long-lived netmon.Monitor can subscribe to things from the OS and remember answers to questions it's asked regularly later) Updates tailscale/corp#10910 Updates tailscale/corp#18960 Updates #7967 Updates #3299 Change-Id: Ie4e8dedb70136af2d611b990b865a822cd1797e5 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
		
			
				
	
	
		
			29 lines
		
	
	
		
			627 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
		
			627 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright (c) Tailscale Inc & AUTHORS
 | |
| // SPDX-License-Identifier: BSD-3-Clause
 | |
| 
 | |
| // This might work on other BSDs, but only tested on FreeBSD.
 | |
| 
 | |
| //go:build freebsd
 | |
| 
 | |
| package netmon
 | |
| 
 | |
| import (
 | |
| 	"syscall"
 | |
| 
 | |
| 	"golang.org/x/net/route"
 | |
| 	"golang.org/x/sys/unix"
 | |
| )
 | |
| 
 | |
| // fetchRoutingTable calls route.FetchRIB, fetching NET_RT_DUMP.
 | |
| func fetchRoutingTable() (rib []byte, err error) {
 | |
| 	return route.FetchRIB(syscall.AF_UNSPEC, unix.NET_RT_DUMP, 0)
 | |
| }
 | |
| 
 | |
| func parseRoutingTable(rib []byte) ([]route.Message, error) {
 | |
| 	return route.ParseRIB(syscall.NET_RT_IFLIST, rib)
 | |
| }
 | |
| 
 | |
| func getDelegatedInterface(ifIndex int) (int, error) {
 | |
| 	return 0, nil
 | |
| }
 |