LEFT | RIGHT |
1 // Copyright 2009 The Go Authors. All rights reserved. | 1 // Copyright 2009 The Go Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style | 2 // Use of this source code is governed by a BSD-style |
3 // license that can be found in the LICENSE file. | 3 // license that can be found in the LICENSE file. |
4 | 4 |
5 //build darwin freebsd linux openbsd windows | 5 // +build darwin freebsd linux openbsd windows |
6 | 6 |
7 // UDP sockets | 7 // UDP sockets |
8 | 8 |
9 package net | 9 package net |
10 | 10 |
11 import ( | 11 import ( |
12 "bytes" | 12 "bytes" |
13 "os" | 13 "os" |
14 "syscall" | 14 "syscall" |
15 ) | 15 ) |
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
339 mreq := &syscall.IPv6Mreq{} | 339 mreq := &syscall.IPv6Mreq{} |
340 copy(mreq.Multiaddr[:], ip) | 340 copy(mreq.Multiaddr[:], ip) |
341 if ifi != nil { | 341 if ifi != nil { |
342 mreq.Interface = uint32(ifi.Index) | 342 mreq.Interface = uint32(ifi.Index) |
343 } | 343 } |
344 if err := os.NewSyscallError("setsockopt", syscall.SetsockoptIPv6Mreq(c.
fd.sysfd, syscall.IPPROTO_IPV6, syscall.IPV6_LEAVE_GROUP, mreq)); err != nil { | 344 if err := os.NewSyscallError("setsockopt", syscall.SetsockoptIPv6Mreq(c.
fd.sysfd, syscall.IPPROTO_IPV6, syscall.IPV6_LEAVE_GROUP, mreq)); err != nil { |
345 return &OpError{"leaveipv6group", "udp", &IPAddr{ip}, err} | 345 return &OpError{"leaveipv6group", "udp", &IPAddr{ip}, err} |
346 } | 346 } |
347 return nil | 347 return nil |
348 } | 348 } |
LEFT | RIGHT |