package ipv4
import (
"net"
"golang.org/x/net/bpf"
)
func (c *dgramOpt ) MulticastTTL () (int , error ) {
if !c .ok () {
return 0 , errInvalidConn
}
so , ok := sockOpts [ssoMulticastTTL ]
if !ok {
return 0 , errNotImplemented
}
return so .GetInt (c .Conn )
}
func (c *dgramOpt ) SetMulticastTTL (ttl int ) error {
if !c .ok () {
return errInvalidConn
}
so , ok := sockOpts [ssoMulticastTTL ]
if !ok {
return errNotImplemented
}
return so .SetInt (c .Conn , ttl )
}
func (c *dgramOpt ) MulticastInterface () (*net .Interface , error ) {
if !c .ok () {
return nil , errInvalidConn
}
so , ok := sockOpts [ssoMulticastInterface ]
if !ok {
return nil , errNotImplemented
}
return so .getMulticastInterface (c .Conn )
}
func (c *dgramOpt ) SetMulticastInterface (ifi *net .Interface ) error {
if !c .ok () {
return errInvalidConn
}
so , ok := sockOpts [ssoMulticastInterface ]
if !ok {
return errNotImplemented
}
return so .setMulticastInterface (c .Conn , ifi )
}
func (c *dgramOpt ) MulticastLoopback () (bool , error ) {
if !c .ok () {
return false , errInvalidConn
}
so , ok := sockOpts [ssoMulticastLoopback ]
if !ok {
return false , errNotImplemented
}
on , err := so .GetInt (c .Conn )
if err != nil {
return false , err
}
return on == 1 , nil
}
func (c *dgramOpt ) SetMulticastLoopback (on bool ) error {
if !c .ok () {
return errInvalidConn
}
so , ok := sockOpts [ssoMulticastLoopback ]
if !ok {
return errNotImplemented
}
return so .SetInt (c .Conn , boolint (on ))
}
func (c *dgramOpt ) JoinGroup (ifi *net .Interface , group net .Addr ) error {
if !c .ok () {
return errInvalidConn
}
so , ok := sockOpts [ssoJoinGroup ]
if !ok {
return errNotImplemented
}
grp := netAddrToIP4 (group )
if grp == nil {
return errMissingAddress
}
return so .setGroup (c .Conn , ifi , grp )
}
func (c *dgramOpt ) LeaveGroup (ifi *net .Interface , group net .Addr ) error {
if !c .ok () {
return errInvalidConn
}
so , ok := sockOpts [ssoLeaveGroup ]
if !ok {
return errNotImplemented
}
grp := netAddrToIP4 (group )
if grp == nil {
return errMissingAddress
}
return so .setGroup (c .Conn , ifi , grp )
}
func (c *dgramOpt ) JoinSourceSpecificGroup (ifi *net .Interface , group , source net .Addr ) error {
if !c .ok () {
return errInvalidConn
}
so , ok := sockOpts [ssoJoinSourceGroup ]
if !ok {
return errNotImplemented
}
grp := netAddrToIP4 (group )
if grp == nil {
return errMissingAddress
}
src := netAddrToIP4 (source )
if src == nil {
return errMissingAddress
}
return so .setSourceGroup (c .Conn , ifi , grp , src )
}
func (c *dgramOpt ) LeaveSourceSpecificGroup (ifi *net .Interface , group , source net .Addr ) error {
if !c .ok () {
return errInvalidConn
}
so , ok := sockOpts [ssoLeaveSourceGroup ]
if !ok {
return errNotImplemented
}
grp := netAddrToIP4 (group )
if grp == nil {
return errMissingAddress
}
src := netAddrToIP4 (source )
if src == nil {
return errMissingAddress
}
return so .setSourceGroup (c .Conn , ifi , grp , src )
}
func (c *dgramOpt ) ExcludeSourceSpecificGroup (ifi *net .Interface , group , source net .Addr ) error {
if !c .ok () {
return errInvalidConn
}
so , ok := sockOpts [ssoBlockSourceGroup ]
if !ok {
return errNotImplemented
}
grp := netAddrToIP4 (group )
if grp == nil {
return errMissingAddress
}
src := netAddrToIP4 (source )
if src == nil {
return errMissingAddress
}
return so .setSourceGroup (c .Conn , ifi , grp , src )
}
func (c *dgramOpt ) IncludeSourceSpecificGroup (ifi *net .Interface , group , source net .Addr ) error {
if !c .ok () {
return errInvalidConn
}
so , ok := sockOpts [ssoUnblockSourceGroup ]
if !ok {
return errNotImplemented
}
grp := netAddrToIP4 (group )
if grp == nil {
return errMissingAddress
}
src := netAddrToIP4 (source )
if src == nil {
return errMissingAddress
}
return so .setSourceGroup (c .Conn , ifi , grp , src )
}
func (c *dgramOpt ) ICMPFilter () (*ICMPFilter , error ) {
if !c .ok () {
return nil , errInvalidConn
}
so , ok := sockOpts [ssoICMPFilter ]
if !ok {
return nil , errNotImplemented
}
return so .getICMPFilter (c .Conn )
}
func (c *dgramOpt ) SetICMPFilter (f *ICMPFilter ) error {
if !c .ok () {
return errInvalidConn
}
so , ok := sockOpts [ssoICMPFilter ]
if !ok {
return errNotImplemented
}
return so .setICMPFilter (c .Conn , f )
}
func (c *dgramOpt ) SetBPF (filter []bpf .RawInstruction ) error {
if !c .ok () {
return errInvalidConn
}
so , ok := sockOpts [ssoAttachFilter ]
if !ok {
return errNotImplemented
}
return so .setBPF (c .Conn , filter )
}
The pages are generated with Golds v0.8.2 . (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds .