|
|
@@ -6,7 +6,6 @@ package ipv6
|
|
|
|
|
|
import (
|
|
|
"net"
|
|
|
- "syscall"
|
|
|
|
|
|
"golang.org/x/net/bpf"
|
|
|
)
|
|
|
@@ -15,7 +14,7 @@ import (
|
|
|
// multicast packets.
|
|
|
func (c *dgramOpt) MulticastHopLimit() (int, error) {
|
|
|
if !c.ok() {
|
|
|
- return 0, syscall.EINVAL
|
|
|
+ return 0, errInvalidConn
|
|
|
}
|
|
|
so, ok := sockOpts[ssoMulticastHopLimit]
|
|
|
if !ok {
|
|
|
@@ -28,7 +27,7 @@ func (c *dgramOpt) MulticastHopLimit() (int, error) {
|
|
|
// outgoing multicast packets.
|
|
|
func (c *dgramOpt) SetMulticastHopLimit(hoplim int) error {
|
|
|
if !c.ok() {
|
|
|
- return syscall.EINVAL
|
|
|
+ return errInvalidConn
|
|
|
}
|
|
|
so, ok := sockOpts[ssoMulticastHopLimit]
|
|
|
if !ok {
|
|
|
@@ -41,7 +40,7 @@ func (c *dgramOpt) SetMulticastHopLimit(hoplim int) error {
|
|
|
// packet transmissions.
|
|
|
func (c *dgramOpt) MulticastInterface() (*net.Interface, error) {
|
|
|
if !c.ok() {
|
|
|
- return nil, syscall.EINVAL
|
|
|
+ return nil, errInvalidConn
|
|
|
}
|
|
|
so, ok := sockOpts[ssoMulticastInterface]
|
|
|
if !ok {
|
|
|
@@ -54,7 +53,7 @@ func (c *dgramOpt) MulticastInterface() (*net.Interface, error) {
|
|
|
// multicast packet transmissions.
|
|
|
func (c *dgramOpt) SetMulticastInterface(ifi *net.Interface) error {
|
|
|
if !c.ok() {
|
|
|
- return syscall.EINVAL
|
|
|
+ return errInvalidConn
|
|
|
}
|
|
|
so, ok := sockOpts[ssoMulticastInterface]
|
|
|
if !ok {
|
|
|
@@ -67,7 +66,7 @@ func (c *dgramOpt) SetMulticastInterface(ifi *net.Interface) error {
|
|
|
// should be copied and send back to the originator.
|
|
|
func (c *dgramOpt) MulticastLoopback() (bool, error) {
|
|
|
if !c.ok() {
|
|
|
- return false, syscall.EINVAL
|
|
|
+ return false, errInvalidConn
|
|
|
}
|
|
|
so, ok := sockOpts[ssoMulticastLoopback]
|
|
|
if !ok {
|
|
|
@@ -84,7 +83,7 @@ func (c *dgramOpt) MulticastLoopback() (bool, error) {
|
|
|
// should be copied and send back to the originator.
|
|
|
func (c *dgramOpt) SetMulticastLoopback(on bool) error {
|
|
|
if !c.ok() {
|
|
|
- return syscall.EINVAL
|
|
|
+ return errInvalidConn
|
|
|
}
|
|
|
so, ok := sockOpts[ssoMulticastLoopback]
|
|
|
if !ok {
|
|
|
@@ -104,7 +103,7 @@ func (c *dgramOpt) SetMulticastLoopback(on bool) error {
|
|
|
// configuration.
|
|
|
func (c *dgramOpt) JoinGroup(ifi *net.Interface, group net.Addr) error {
|
|
|
if !c.ok() {
|
|
|
- return syscall.EINVAL
|
|
|
+ return errInvalidConn
|
|
|
}
|
|
|
so, ok := sockOpts[ssoJoinGroup]
|
|
|
if !ok {
|
|
|
@@ -122,7 +121,7 @@ func (c *dgramOpt) JoinGroup(ifi *net.Interface, group net.Addr) error {
|
|
|
// source-specific group.
|
|
|
func (c *dgramOpt) LeaveGroup(ifi *net.Interface, group net.Addr) error {
|
|
|
if !c.ok() {
|
|
|
- return syscall.EINVAL
|
|
|
+ return errInvalidConn
|
|
|
}
|
|
|
so, ok := sockOpts[ssoLeaveGroup]
|
|
|
if !ok {
|
|
|
@@ -143,7 +142,7 @@ func (c *dgramOpt) LeaveGroup(ifi *net.Interface, group net.Addr) error {
|
|
|
// routing configuration.
|
|
|
func (c *dgramOpt) JoinSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error {
|
|
|
if !c.ok() {
|
|
|
- return syscall.EINVAL
|
|
|
+ return errInvalidConn
|
|
|
}
|
|
|
so, ok := sockOpts[ssoJoinSourceGroup]
|
|
|
if !ok {
|
|
|
@@ -164,7 +163,7 @@ func (c *dgramOpt) JoinSourceSpecificGroup(ifi *net.Interface, group, source net
|
|
|
// interface ifi.
|
|
|
func (c *dgramOpt) LeaveSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error {
|
|
|
if !c.ok() {
|
|
|
- return syscall.EINVAL
|
|
|
+ return errInvalidConn
|
|
|
}
|
|
|
so, ok := sockOpts[ssoLeaveSourceGroup]
|
|
|
if !ok {
|
|
|
@@ -186,7 +185,7 @@ func (c *dgramOpt) LeaveSourceSpecificGroup(ifi *net.Interface, group, source ne
|
|
|
// ifi.
|
|
|
func (c *dgramOpt) ExcludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error {
|
|
|
if !c.ok() {
|
|
|
- return syscall.EINVAL
|
|
|
+ return errInvalidConn
|
|
|
}
|
|
|
so, ok := sockOpts[ssoBlockSourceGroup]
|
|
|
if !ok {
|
|
|
@@ -207,7 +206,7 @@ func (c *dgramOpt) ExcludeSourceSpecificGroup(ifi *net.Interface, group, source
|
|
|
// group by ExcludeSourceSpecificGroup again on the interface ifi.
|
|
|
func (c *dgramOpt) IncludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error {
|
|
|
if !c.ok() {
|
|
|
- return syscall.EINVAL
|
|
|
+ return errInvalidConn
|
|
|
}
|
|
|
so, ok := sockOpts[ssoUnblockSourceGroup]
|
|
|
if !ok {
|
|
|
@@ -230,7 +229,7 @@ func (c *dgramOpt) IncludeSourceSpecificGroup(ifi *net.Interface, group, source
|
|
|
// field is located.
|
|
|
func (c *dgramOpt) Checksum() (on bool, offset int, err error) {
|
|
|
if !c.ok() {
|
|
|
- return false, 0, syscall.EINVAL
|
|
|
+ return false, 0, errInvalidConn
|
|
|
}
|
|
|
so, ok := sockOpts[ssoChecksum]
|
|
|
if !ok {
|
|
|
@@ -251,7 +250,7 @@ func (c *dgramOpt) Checksum() (on bool, offset int, err error) {
|
|
|
// checksum field is located.
|
|
|
func (c *dgramOpt) SetChecksum(on bool, offset int) error {
|
|
|
if !c.ok() {
|
|
|
- return syscall.EINVAL
|
|
|
+ return errInvalidConn
|
|
|
}
|
|
|
so, ok := sockOpts[ssoChecksum]
|
|
|
if !ok {
|
|
|
@@ -266,7 +265,7 @@ func (c *dgramOpt) SetChecksum(on bool, offset int) error {
|
|
|
// ICMPFilter returns an ICMP filter.
|
|
|
func (c *dgramOpt) ICMPFilter() (*ICMPFilter, error) {
|
|
|
if !c.ok() {
|
|
|
- return nil, syscall.EINVAL
|
|
|
+ return nil, errInvalidConn
|
|
|
}
|
|
|
so, ok := sockOpts[ssoICMPFilter]
|
|
|
if !ok {
|
|
|
@@ -278,7 +277,7 @@ func (c *dgramOpt) ICMPFilter() (*ICMPFilter, error) {
|
|
|
// SetICMPFilter deploys the ICMP filter.
|
|
|
func (c *dgramOpt) SetICMPFilter(f *ICMPFilter) error {
|
|
|
if !c.ok() {
|
|
|
- return syscall.EINVAL
|
|
|
+ return errInvalidConn
|
|
|
}
|
|
|
so, ok := sockOpts[ssoICMPFilter]
|
|
|
if !ok {
|
|
|
@@ -292,7 +291,7 @@ func (c *dgramOpt) SetICMPFilter(f *ICMPFilter) error {
|
|
|
// Only supported on Linux.
|
|
|
func (c *dgramOpt) SetBPF(filter []bpf.RawInstruction) error {
|
|
|
if !c.ok() {
|
|
|
- return syscall.EINVAL
|
|
|
+ return errInvalidConn
|
|
|
}
|
|
|
so, ok := sockOpts[ssoAttachFilter]
|
|
|
if !ok {
|