// Copyright 2012 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.

// +build !darwin,!dragonfly,!freebsd,!netbsd,!openbsd,!solaris,!windows

package ipv4

import "net"

func setsockoptIPMreq(s uintptr, name int, ifi *net.Interface, grp net.IP) error {
	return errOpNoSupport
}

func getsockoptInterface(s uintptr, name int) (*net.Interface, error) {
	return nil, errOpNoSupport
}

func setsockoptInterface(s uintptr, name int, ifi *net.Interface) error {
	return errOpNoSupport
}
