MCPcopy
hub / github.com/google/seesaw / JoinMulticastIPv6

Function JoinMulticastIPv6

ha/net.go:205–225  ·  view source on GitHub ↗

JoinMulticastIPv6 joins the multicast group address given by gaddr. laddr specifies which network interface to use when joining the group.

(c *net.IPConn, gaddr, laddr net.IP)

Source from the content-addressed store, hash-verified

203// JoinMulticastIPv6 joins the multicast group address given by gaddr. laddr specifies which
204// network interface to use when joining the group.
205func JoinMulticastIPv6(c *net.IPConn, gaddr, laddr net.IP) error {
206 f, err := c.File()
207 if err != nil {
208 return err
209 }
210 defer f.Close()
211
212 mreq := &syscall.IPv6Mreq{}
213 copy(mreq.Multiaddr[:], gaddr.To16())
214 iface, err := findInterface(laddr)
215 if err != nil {
216 return err
217 }
218 mreq.Interface = uint32(iface.Index)
219
220 err = syscall.SetsockoptIPv6Mreq(int(f.Fd()), syscall.IPPROTO_IPV6, syscall.IPV6_JOIN_GROUP, mreq)
221 if err != nil {
222 return err
223 }
224 return nil
225}
226
227func findInterface(laddr net.IP) (*net.Interface, error) {
228 ifaces, err := net.Interfaces()

Callers 1

NewIPHAConnFunction · 0.85

Calls 2

findInterfaceFunction · 0.85
CloseMethod · 0.65

Tested by

no test coverage detected