mirror of
https://github.com/opentofu/opentofu.git
synced 2025-02-15 01:53:51 -06:00
The original contents of `vendor` were inadvertently captured with an older version of `godep`. Here, we recapture dependencies by running the following: ``` godep restore -v cat Godeps/Godeps.json | jq -r '.Deps[].ImportPath' | xargs godep update -v ``` The newer godep makes the following changes as it captures dependencies: * Skips test files * Copies `LICENSE` / `PATENTS` files There is also an additional diff in `golang.org/x/sys/unix` that looks very similar to the diff between `master..c65f27f` in that repo, so I'm guessing that dependency was accidentally captured from master instead of the commit saved to `Godeps.json`. All in all, these changes should all be "more correct" and result in smaller diffs for any future updates made to dependencies.
79 lines
2.3 KiB
Go
79 lines
2.3 KiB
Go
// Copyright 2011 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.
|
|
|
|
// Routing sockets and messages for FreeBSD
|
|
|
|
package unix
|
|
|
|
import "unsafe"
|
|
|
|
// See http://www.freebsd.org/doc/en/books/porters-handbook/freebsd-versions.html.
|
|
var freebsdVersion uint32
|
|
|
|
func init() {
|
|
freebsdVersion, _ = SysctlUint32("kern.osreldate")
|
|
}
|
|
|
|
func (any *anyMessage) toRoutingMessage(b []byte) RoutingMessage {
|
|
switch any.Type {
|
|
case RTM_ADD, RTM_DELETE, RTM_CHANGE, RTM_GET, RTM_LOSING, RTM_REDIRECT, RTM_MISS, RTM_LOCK, RTM_RESOLVE:
|
|
p := (*RouteMessage)(unsafe.Pointer(any))
|
|
return &RouteMessage{Header: p.Header, Data: b[SizeofRtMsghdr:any.Msglen]}
|
|
case RTM_IFINFO:
|
|
return any.parseInterfaceMessage(b)
|
|
case RTM_IFANNOUNCE:
|
|
p := (*InterfaceAnnounceMessage)(unsafe.Pointer(any))
|
|
return &InterfaceAnnounceMessage{Header: p.Header}
|
|
case RTM_NEWADDR, RTM_DELADDR:
|
|
p := (*InterfaceAddrMessage)(unsafe.Pointer(any))
|
|
return &InterfaceAddrMessage{Header: p.Header, Data: b[SizeofIfaMsghdr:any.Msglen]}
|
|
case RTM_NEWMADDR, RTM_DELMADDR:
|
|
p := (*InterfaceMulticastAddrMessage)(unsafe.Pointer(any))
|
|
return &InterfaceMulticastAddrMessage{Header: p.Header, Data: b[SizeofIfmaMsghdr:any.Msglen]}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// InterfaceAnnounceMessage represents a routing message containing
|
|
// network interface arrival and departure information.
|
|
type InterfaceAnnounceMessage struct {
|
|
Header IfAnnounceMsghdr
|
|
}
|
|
|
|
func (m *InterfaceAnnounceMessage) sockaddr() (sas []Sockaddr) { return nil }
|
|
|
|
// InterfaceMulticastAddrMessage represents a routing message
|
|
// containing network interface address entries.
|
|
type InterfaceMulticastAddrMessage struct {
|
|
Header IfmaMsghdr
|
|
Data []byte
|
|
}
|
|
|
|
const rtaIfmaMask = RTA_GATEWAY | RTA_IFP | RTA_IFA
|
|
|
|
func (m *InterfaceMulticastAddrMessage) sockaddr() (sas []Sockaddr) {
|
|
if m.Header.Addrs&rtaIfmaMask == 0 {
|
|
return nil
|
|
}
|
|
b := m.Data[:]
|
|
for i := uint(0); i < RTAX_MAX; i++ {
|
|
if m.Header.Addrs&rtaIfmaMask&(1<<i) == 0 {
|
|
continue
|
|
}
|
|
rsa := (*RawSockaddr)(unsafe.Pointer(&b[0]))
|
|
switch i {
|
|
case RTAX_IFA:
|
|
sa, e := anyToSockaddr((*RawSockaddrAny)(unsafe.Pointer(rsa)))
|
|
if e != nil {
|
|
return nil
|
|
}
|
|
sas = append(sas, sa)
|
|
case RTAX_GATEWAY, RTAX_IFP:
|
|
// nothing to do
|
|
}
|
|
b = b[rsaAlignOf(int(rsa.Len)):]
|
|
}
|
|
return sas
|
|
}
|