From 3f1edad4e6ba0a7876750aea55507fae14d8badf Mon Sep 17 00:00:00 2001 From: Milan Lenco Date: Wed, 11 Oct 2017 16:40:58 +0200 Subject: ODPM 266: Go-libmemif + 2 examples. Change-Id: Icdb9b9eb2314eff6c96afe7996fcf2728291de4a Signed-off-by: Milan Lenco --- .../google/gopacket/afpacket/sockopt_linux.go | 58 ++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 vendor/github.com/google/gopacket/afpacket/sockopt_linux.go (limited to 'vendor/github.com/google/gopacket/afpacket/sockopt_linux.go') diff --git a/vendor/github.com/google/gopacket/afpacket/sockopt_linux.go b/vendor/github.com/google/gopacket/afpacket/sockopt_linux.go new file mode 100644 index 0000000..c53e1cc --- /dev/null +++ b/vendor/github.com/google/gopacket/afpacket/sockopt_linux.go @@ -0,0 +1,58 @@ +// Copyright 2012 Google, Inc. All rights reserved. +// +// Use of this source code is governed by a BSD-style license +// that can be found in the LICENSE file in the root of the source +// tree. + +// +build linux + +package afpacket + +import ( + "unsafe" + + "golang.org/x/sys/unix" +) + +// setsockopt provides access to the setsockopt syscall. +func setsockopt(fd, level, name int, val unsafe.Pointer, vallen uintptr) error { + _, _, errno := unix.Syscall6( + unix.SYS_SETSOCKOPT, + uintptr(fd), + uintptr(level), + uintptr(name), + uintptr(val), + vallen, + 0, + ) + if errno != 0 { + return error(errno) + } + + return nil +} + +// getsockopt provides access to the getsockopt syscall. +func getsockopt(fd, level, name int, val unsafe.Pointer, vallen uintptr) error { + _, _, errno := unix.Syscall6( + unix.SYS_GETSOCKOPT, + uintptr(fd), + uintptr(level), + uintptr(name), + uintptr(val), + vallen, + 0, + ) + if errno != 0 { + return error(errno) + } + + return nil +} + +// htons converts a short (uint16) from host-to-network byte order. +// Thanks to mikioh for this neat trick: +// https://github.com/mikioh/-stdyng/blob/master/afpacket.go +func htons(i uint16) uint16 { + return (i<<8)&0xff00 | i>>8 +} -- cgit 1.2.3-korg