syscall: update multicast socket options for darwin, freebsd, linux, openbsd

R=golang-dev, dave
CC=golang-dev
https://golang.org/cl/5137042
diff --git a/src/pkg/syscall/syscall_freebsd.go b/src/pkg/syscall/syscall_freebsd.go
index 18988c0..aa12560 100644
--- a/src/pkg/syscall/syscall_freebsd.go
+++ b/src/pkg/syscall/syscall_freebsd.go
@@ -71,6 +71,17 @@
 	return -1, ENOSYS
 }
 
+func GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, int) {
+	var value IPMreqn
+	vallen := _Socklen(SizeofIPMreqn)
+	errno := getsockopt(fd, level, opt, uintptr(unsafe.Pointer(&value)), &vallen)
+	return &value, errno
+}
+
+func SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (errno int) {
+	return setsockopt(fd, level, opt, uintptr(unsafe.Pointer(mreq)), unsafe.Sizeof(*mreq))
+}
+
 /*
  * Exposed directly
  */