Source File
route_darwin.go
Belonging Package
syscall
package syscall
import
func ( *anyMessage) ( []byte) RoutingMessage {
switch .Type {
case RTM_ADD, RTM_DELETE, RTM_CHANGE, RTM_GET, RTM_LOSING, RTM_REDIRECT, RTM_MISS, RTM_LOCK, RTM_RESOLVE:
:= (*RouteMessage)(unsafe.Pointer())
return &RouteMessage{Header: .Header, Data: [SizeofRtMsghdr:.Msglen]}
case RTM_IFINFO:
:= (*InterfaceMessage)(unsafe.Pointer())
return &InterfaceMessage{Header: .Header, Data: [SizeofIfMsghdr:.Msglen]}
case RTM_NEWADDR, RTM_DELADDR:
:= (*InterfaceAddrMessage)(unsafe.Pointer())
return &InterfaceAddrMessage{Header: .Header, Data: [SizeofIfaMsghdr:.Msglen]}
case RTM_NEWMADDR2, RTM_DELMADDR:
:= (*InterfaceMulticastAddrMessage)(unsafe.Pointer())
return &InterfaceMulticastAddrMessage{Header: .Header, Data: [SizeofIfmaMsghdr2:.Msglen]}
}
return nil
}
type InterfaceMulticastAddrMessage struct {
Header IfmaMsghdr2
Data []byte
}
func ( *InterfaceMulticastAddrMessage) () ([]Sockaddr, error) {
var [RTAX_MAX]Sockaddr
:= .Data[:]
for := uint(0); < RTAX_MAX && len() >= minRoutingSockaddrLen; ++ {
if .Header.Addrs&(1<<) == 0 {
continue
}
:= (*RawSockaddr)(unsafe.Pointer(&[0]))
switch .Family {
case AF_LINK:
, := parseSockaddrLink()
if != nil {
return nil,
}
[] =
= [rsaAlignOf(int(.Len)):]
case AF_INET, AF_INET6:
, := parseSockaddrInet(, .Family)
if != nil {
return nil,
}
[] =
= [rsaAlignOf(int(.Len)):]
default:
, , := parseLinkLayerAddr()
if != nil {
return nil,
}
[] =
= [:]
}
}
return [:], nil
![]() |
The pages are generated with Golds v0.3.2-preview. (GOOS=darwin 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 @Go100and1 (reachable from the left QR code) to get the latest news of Golds. |