~sinzui/ubuntu/wily/juju-core/wily-1.24.7

« back to all changes in this revision

Viewing changes to src/code.google.com/p/go.net/ipv4/helper_posix.go

  • Committer: Package Import Robot
  • Author(s): Curtis C. Hovey
  • Date: 2015-06-05 17:40:37 UTC
  • mfrom: (1.1.34)
  • Revision ID: package-import@ubuntu.com-20150605174037-lcv12myq9gu4194e
Tags: 1.22.5-0ubuntu1
* New upstream bugfix release (Lp: #1462001).
* d/copyright: Updated to reflect changes in the codebase.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
// Copyright 2012 The Go Authors.  All rights reserved.
2
 
// Use of this source code is governed by a BSD-style
3
 
// license that can be found in the LICENSE file.
4
 
 
5
 
// +build darwin freebsd linux netbsd openbsd windows
6
 
 
7
 
package ipv4
8
 
 
9
 
import (
10
 
        "bytes"
11
 
        "net"
12
 
        "syscall"
13
 
)
14
 
 
15
 
func setSyscallIPMreq(mreq *syscall.IPMreq, ifi *net.Interface) error {
16
 
        if ifi == nil {
17
 
                return nil
18
 
        }
19
 
        ifat, err := ifi.Addrs()
20
 
        if err != nil {
21
 
                return err
22
 
        }
23
 
        for _, ifa := range ifat {
24
 
                switch v := ifa.(type) {
25
 
                case *net.IPAddr:
26
 
                        if a := v.IP.To4(); a != nil {
27
 
                                copy(mreq.Interface[:], a)
28
 
                                goto done
29
 
                        }
30
 
                case *net.IPNet:
31
 
                        if a := v.IP.To4(); a != nil {
32
 
                                copy(mreq.Interface[:], a)
33
 
                                goto done
34
 
                        }
35
 
                }
36
 
        }
37
 
done:
38
 
        if bytes.Equal(mreq.Multiaddr[:], net.IPv4zero.To4()) {
39
 
                return errNoSuchMulticastInterface
40
 
        }
41
 
        return nil
42
 
}