// Copyright (c) Tailscale Inc & AUTHORS
// SPDX-License-Identifier: BSD-3-Clause

//go:build tailscale_go && (darwin || ios)

package sockstats

import (
	"syscall"

	"golang.org/x/sys/unix"
)

func init() {
	tcpConnStats = darwinTcpConnStats
}

func darwinTcpConnStats(c syscall.RawConn) (tx, rx uint64) {
	c.Control(func(fd uintptr) {
		if rawInfo, err := unix.GetsockoptTCPConnectionInfo(
			int(fd),
			unix.IPPROTO_TCP,
			unix.TCP_CONNECTION_INFO,
		); err == nil {
			tx = uint64(rawInfo.Txbytes)
			rx = uint64(rawInfo.Rxbytes)
		}
	})
	return
}