mirror of
https://github.com/tailscale/tailscale.git
synced 2024-12-01 22:15:51 +00:00
296f53524c
We change our invocations of GetExtendedTcpTable to request additional information about the "module" responsible for the port. In addition to pid, this output also includes sufficient metadata to enable Windows to resolve process names and disambiguate svchost processes. We store the OS-specific output in an OSMetadata field in netstat.Entry, which portlist may then use as necessary to actually resolve the process/module name. Signed-off-by: Aaron Klotz <aaron@tailscale.com>
37 lines
860 B
Go
37 lines
860 B
Go
// Copyright (c) 2020 Tailscale Inc & AUTHORS All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
// Package netstat returns the local machine's network connection table.
|
|
package netstat
|
|
|
|
import (
|
|
"errors"
|
|
"net/netip"
|
|
"runtime"
|
|
)
|
|
|
|
var ErrNotImplemented = errors.New("not implemented for GOOS=" + runtime.GOOS)
|
|
|
|
type Entry struct {
|
|
Local, Remote netip.AddrPort
|
|
Pid int
|
|
State string // TODO: type?
|
|
OSMetadata OSMetadata
|
|
}
|
|
|
|
// Table contains local machine's TCP connection entries.
|
|
//
|
|
// Currently only TCP (IPv4 and IPv6) are included.
|
|
type Table struct {
|
|
Entries []Entry
|
|
}
|
|
|
|
// Get returns the connection table.
|
|
//
|
|
// It returns ErrNotImplemented if the table is not available for the
|
|
// current operating system.
|
|
func Get() (*Table, error) {
|
|
return get()
|
|
}
|