mirror of
https://github.com/rwinkhart/sys.git
synced 2026-09-02 15:17:31 -04:00
unix: add functions to get/set tpacket socket options
Add GetsockoptTpacketStats and GetsockoptTpacketStatsV3 to get tpacket statistics (for TPACKET_V2 and TPACKET_V3). Add SetsockoptTpacketReq and SetsockoptTpacketReq3 to set up tpacket v2/v3 ring buffers. Change-Id: Ic2870be22be7d74141f682e515a682df28e1c814 Reviewed-on: https://go-review.googlesource.com/c/sys/+/165558 Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
committed by
Tobias Klauser
parent
a98ae47d97
commit
3e9a981b8d
@@ -1115,6 +1115,9 @@ const (
|
|||||||
SizeofTpacketHdr = C.sizeof_struct_tpacket_hdr
|
SizeofTpacketHdr = C.sizeof_struct_tpacket_hdr
|
||||||
SizeofTpacket2Hdr = C.sizeof_struct_tpacket2_hdr
|
SizeofTpacket2Hdr = C.sizeof_struct_tpacket2_hdr
|
||||||
SizeofTpacket3Hdr = C.sizeof_struct_tpacket3_hdr
|
SizeofTpacket3Hdr = C.sizeof_struct_tpacket3_hdr
|
||||||
|
|
||||||
|
SizeofTpacketStats = C.sizeof_struct_tpacket_stats
|
||||||
|
SizeofTpacketStatsV3 = C.sizeof_struct_tpacket_stats_v3
|
||||||
)
|
)
|
||||||
|
|
||||||
// netfilter
|
// netfilter
|
||||||
|
|||||||
@@ -1004,6 +1004,20 @@ func GetsockoptString(fd, level, opt int) (string, error) {
|
|||||||
return string(buf[:vallen-1]), nil
|
return string(buf[:vallen-1]), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetsockoptTpacketStats(fd, level, opt int) (*TpacketStats, error) {
|
||||||
|
var value TpacketStats
|
||||||
|
vallen := _Socklen(SizeofTpacketStats)
|
||||||
|
err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
|
||||||
|
return &value, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetsockoptTpacketStatsV3(fd, level, opt int) (*TpacketStatsV3, error) {
|
||||||
|
var value TpacketStatsV3
|
||||||
|
vallen := _Socklen(SizeofTpacketStatsV3)
|
||||||
|
err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
|
||||||
|
return &value, err
|
||||||
|
}
|
||||||
|
|
||||||
func SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) {
|
func SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) {
|
||||||
return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq))
|
return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq))
|
||||||
}
|
}
|
||||||
@@ -1022,6 +1036,14 @@ func SetsockoptCanRawFilter(fd, level, opt int, filter []CanFilter) error {
|
|||||||
return setsockopt(fd, level, opt, p, uintptr(len(filter)*SizeofCanFilter))
|
return setsockopt(fd, level, opt, p, uintptr(len(filter)*SizeofCanFilter))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func SetsockoptTpacketReq(fd, level, opt int, tp *TpacketReq) error {
|
||||||
|
return setsockopt(fd, level, opt, unsafe.Pointer(tp), unsafe.Sizeof(*tp))
|
||||||
|
}
|
||||||
|
|
||||||
|
func SetsockoptTpacketReq3(fd, level, opt int, tp *TpacketReq3) error {
|
||||||
|
return setsockopt(fd, level, opt, unsafe.Pointer(tp), unsafe.Sizeof(*tp))
|
||||||
|
}
|
||||||
|
|
||||||
// Keyctl Commands (http://man7.org/linux/man-pages/man2/keyctl.2.html)
|
// Keyctl Commands (http://man7.org/linux/man-pages/man2/keyctl.2.html)
|
||||||
|
|
||||||
// KeyctlInt calls keyctl commands in which each argument is an int.
|
// KeyctlInt calls keyctl commands in which each argument is an int.
|
||||||
|
|||||||
@@ -1428,6 +1428,9 @@ const (
|
|||||||
SizeofTpacketHdr = 0x18
|
SizeofTpacketHdr = 0x18
|
||||||
SizeofTpacket2Hdr = 0x20
|
SizeofTpacket2Hdr = 0x20
|
||||||
SizeofTpacket3Hdr = 0x30
|
SizeofTpacket3Hdr = 0x30
|
||||||
|
|
||||||
|
SizeofTpacketStats = 0x8
|
||||||
|
SizeofTpacketStatsV3 = 0xc
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|||||||
@@ -1440,6 +1440,9 @@ const (
|
|||||||
SizeofTpacketHdr = 0x20
|
SizeofTpacketHdr = 0x20
|
||||||
SizeofTpacket2Hdr = 0x20
|
SizeofTpacket2Hdr = 0x20
|
||||||
SizeofTpacket3Hdr = 0x30
|
SizeofTpacket3Hdr = 0x30
|
||||||
|
|
||||||
|
SizeofTpacketStats = 0x8
|
||||||
|
SizeofTpacketStatsV3 = 0xc
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|||||||
@@ -1418,6 +1418,9 @@ const (
|
|||||||
SizeofTpacketHdr = 0x18
|
SizeofTpacketHdr = 0x18
|
||||||
SizeofTpacket2Hdr = 0x20
|
SizeofTpacket2Hdr = 0x20
|
||||||
SizeofTpacket3Hdr = 0x30
|
SizeofTpacket3Hdr = 0x30
|
||||||
|
|
||||||
|
SizeofTpacketStats = 0x8
|
||||||
|
SizeofTpacketStatsV3 = 0xc
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|||||||
@@ -1419,6 +1419,9 @@ const (
|
|||||||
SizeofTpacketHdr = 0x20
|
SizeofTpacketHdr = 0x20
|
||||||
SizeofTpacket2Hdr = 0x20
|
SizeofTpacket2Hdr = 0x20
|
||||||
SizeofTpacket3Hdr = 0x30
|
SizeofTpacket3Hdr = 0x30
|
||||||
|
|
||||||
|
SizeofTpacketStats = 0x8
|
||||||
|
SizeofTpacketStatsV3 = 0xc
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|||||||
@@ -1424,6 +1424,9 @@ const (
|
|||||||
SizeofTpacketHdr = 0x18
|
SizeofTpacketHdr = 0x18
|
||||||
SizeofTpacket2Hdr = 0x20
|
SizeofTpacket2Hdr = 0x20
|
||||||
SizeofTpacket3Hdr = 0x30
|
SizeofTpacket3Hdr = 0x30
|
||||||
|
|
||||||
|
SizeofTpacketStats = 0x8
|
||||||
|
SizeofTpacketStatsV3 = 0xc
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|||||||
@@ -1421,6 +1421,9 @@ const (
|
|||||||
SizeofTpacketHdr = 0x20
|
SizeofTpacketHdr = 0x20
|
||||||
SizeofTpacket2Hdr = 0x20
|
SizeofTpacket2Hdr = 0x20
|
||||||
SizeofTpacket3Hdr = 0x30
|
SizeofTpacket3Hdr = 0x30
|
||||||
|
|
||||||
|
SizeofTpacketStats = 0x8
|
||||||
|
SizeofTpacketStatsV3 = 0xc
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|||||||
@@ -1421,6 +1421,9 @@ const (
|
|||||||
SizeofTpacketHdr = 0x20
|
SizeofTpacketHdr = 0x20
|
||||||
SizeofTpacket2Hdr = 0x20
|
SizeofTpacket2Hdr = 0x20
|
||||||
SizeofTpacket3Hdr = 0x30
|
SizeofTpacket3Hdr = 0x30
|
||||||
|
|
||||||
|
SizeofTpacketStats = 0x8
|
||||||
|
SizeofTpacketStatsV3 = 0xc
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|||||||
@@ -1424,6 +1424,9 @@ const (
|
|||||||
SizeofTpacketHdr = 0x18
|
SizeofTpacketHdr = 0x18
|
||||||
SizeofTpacket2Hdr = 0x20
|
SizeofTpacket2Hdr = 0x20
|
||||||
SizeofTpacket3Hdr = 0x30
|
SizeofTpacket3Hdr = 0x30
|
||||||
|
|
||||||
|
SizeofTpacketStats = 0x8
|
||||||
|
SizeofTpacketStatsV3 = 0xc
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|||||||
@@ -1429,6 +1429,9 @@ const (
|
|||||||
SizeofTpacketHdr = 0x20
|
SizeofTpacketHdr = 0x20
|
||||||
SizeofTpacket2Hdr = 0x20
|
SizeofTpacket2Hdr = 0x20
|
||||||
SizeofTpacket3Hdr = 0x30
|
SizeofTpacket3Hdr = 0x30
|
||||||
|
|
||||||
|
SizeofTpacketStats = 0x8
|
||||||
|
SizeofTpacketStatsV3 = 0xc
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|||||||
@@ -1429,6 +1429,9 @@ const (
|
|||||||
SizeofTpacketHdr = 0x20
|
SizeofTpacketHdr = 0x20
|
||||||
SizeofTpacket2Hdr = 0x20
|
SizeofTpacket2Hdr = 0x20
|
||||||
SizeofTpacket3Hdr = 0x30
|
SizeofTpacket3Hdr = 0x30
|
||||||
|
|
||||||
|
SizeofTpacketStats = 0x8
|
||||||
|
SizeofTpacketStatsV3 = 0xc
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|||||||
@@ -1446,6 +1446,9 @@ const (
|
|||||||
SizeofTpacketHdr = 0x20
|
SizeofTpacketHdr = 0x20
|
||||||
SizeofTpacket2Hdr = 0x20
|
SizeofTpacket2Hdr = 0x20
|
||||||
SizeofTpacket3Hdr = 0x30
|
SizeofTpacket3Hdr = 0x30
|
||||||
|
|
||||||
|
SizeofTpacketStats = 0x8
|
||||||
|
SizeofTpacketStatsV3 = 0xc
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|||||||
@@ -1443,6 +1443,9 @@ const (
|
|||||||
SizeofTpacketHdr = 0x20
|
SizeofTpacketHdr = 0x20
|
||||||
SizeofTpacket2Hdr = 0x20
|
SizeofTpacket2Hdr = 0x20
|
||||||
SizeofTpacket3Hdr = 0x30
|
SizeofTpacket3Hdr = 0x30
|
||||||
|
|
||||||
|
SizeofTpacketStats = 0x8
|
||||||
|
SizeofTpacketStatsV3 = 0xc
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|||||||
@@ -1424,6 +1424,9 @@ const (
|
|||||||
SizeofTpacketHdr = 0x20
|
SizeofTpacketHdr = 0x20
|
||||||
SizeofTpacket2Hdr = 0x20
|
SizeofTpacket2Hdr = 0x20
|
||||||
SizeofTpacket3Hdr = 0x30
|
SizeofTpacket3Hdr = 0x30
|
||||||
|
|
||||||
|
SizeofTpacketStats = 0x8
|
||||||
|
SizeofTpacketStatsV3 = 0xc
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|||||||
Reference in New Issue
Block a user