// Copyright 2017 The Go 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 net import ( "syscall" "testing" ) func TestRawConn(t *testing.T) { c, err := newLocalPacketListener("udp") if err != nil { t.Fatal(err) } defer c.Close() cc, err := c.(*UDPConn).SyscallConn() if err != nil { t.Fatal(err) } var operr error fn := func(s uintptr) { operr = syscall.SetsockoptInt(syscall.Handle(s), syscall.SOL_SOCKET, syscall.SO_REUSEADDR, 1) } err = cc.Control(fn) if err != nil || operr != nil { t.Fatal(err, operr) } c.Close() err = cc.Control(fn) if err == nil { t.Fatal("should fail") } }