mirror of
https://github.com/rwinkhart/sys.git
synced 2026-09-03 15:47:35 -04:00
unix: add Ioctl{Get,Set}IfreqMTU on darwin
For golang/go#41868 Change-Id: I9fb8f5eee933488e4c63aaa757059b8cea4d9629 Reviewed-on: https://go-review.googlesource.com/c/sys/+/264637 Trust: Tobias Klauser <tobias.klauser@gmail.com> Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com> Reviewed-by: Matt Layher <mdlayher@gmail.com> TryBot-Result: Go Bot <gobot@golang.org>
This commit is contained in:
committed by
Tobias Klauser
parent
e075d93706
commit
119d4633e4
@@ -264,6 +264,29 @@ func IoctlCtlInfo(fd int, ctlInfo *CtlInfo) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IfreqMTU is struct ifreq used to get or set a network device's MTU.
|
||||||
|
type IfreqMTU struct {
|
||||||
|
Name [IFNAMSIZ]byte
|
||||||
|
MTU int32
|
||||||
|
}
|
||||||
|
|
||||||
|
// IoctlGetIfreqMTU performs the SIOCGIFMTU ioctl operation on fd to get the MTU
|
||||||
|
// of the network device specified by ifname.
|
||||||
|
func IoctlGetIfreqMTU(fd int, ifname string) (*IfreqMTU, error) {
|
||||||
|
var ifreq IfreqMTU
|
||||||
|
copy(ifreq.Name[:], ifname)
|
||||||
|
err := ioctl(fd, SIOCGIFMTU, uintptr(unsafe.Pointer(&ifreq)))
|
||||||
|
return &ifreq, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// IoctlSetIfreqMTU performs the SIOCSIFMTU ioctl operation on fd to set the MTU
|
||||||
|
// of the network device specified by ifreq.Name.
|
||||||
|
func IoctlSetIfreqMTU(fd int, ifreq *IfreqMTU) error {
|
||||||
|
err := ioctl(fd, SIOCSIFMTU, uintptr(unsafe.Pointer(ifreq)))
|
||||||
|
runtime.KeepAlive(ifreq)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS_SYSCTL
|
//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS_SYSCTL
|
||||||
|
|
||||||
func Uname(uname *Utsname) error {
|
func Uname(uname *Utsname) error {
|
||||||
|
|||||||
Reference in New Issue
Block a user