mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Vendor vishvananda/netlink b824519
Signed-off-by: Alessandro Boch <aboch@docker.com>
This commit is contained in:
parent
2f04fcd261
commit
b93c2c69ac
5 changed files with 73 additions and 7 deletions
4
libnetwork/Godeps/Godeps.json
generated
4
libnetwork/Godeps/Godeps.json
generated
|
@ -398,11 +398,11 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/vishvananda/netlink",
|
"ImportPath": "github.com/vishvananda/netlink",
|
||||||
"Rev": "f9bc7a684edbe780a09b87689db6cb1706bf327f"
|
"Rev": "b824519a9a33e5a757ba599209d66a34be8361b1"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/vishvananda/netlink/nl",
|
"ImportPath": "github.com/vishvananda/netlink/nl",
|
||||||
"Rev": "f9bc7a684edbe780a09b87689db6cb1706bf327f"
|
"Rev": "b824519a9a33e5a757ba599209d66a34be8361b1"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/vishvananda/netns",
|
"ImportPath": "github.com/vishvananda/netns",
|
||||||
|
|
2
libnetwork/Godeps/_workspace/src/github.com/vishvananda/netlink/Makefile
generated
vendored
2
libnetwork/Godeps/_workspace/src/github.com/vishvananda/netlink/Makefile
generated
vendored
|
@ -18,7 +18,7 @@ $(call goroot,$(DEPS)):
|
||||||
|
|
||||||
.PHONY: $(call testdirs,$(DIRS))
|
.PHONY: $(call testdirs,$(DIRS))
|
||||||
$(call testdirs,$(DIRS)):
|
$(call testdirs,$(DIRS)):
|
||||||
sudo -E go test -v github.com/vishvananda/netlink/$@
|
sudo -E go test -test.parallel 4 -timeout 60s -v github.com/vishvananda/netlink/$@
|
||||||
|
|
||||||
$(call fmt,$(call testdirs,$(DIRS))):
|
$(call fmt,$(call testdirs,$(DIRS))):
|
||||||
! gofmt -l $(subst fmt-,,$@)/*.go | grep ''
|
! gofmt -l $(subst fmt-,,$@)/*.go | grep ''
|
||||||
|
|
5
libnetwork/Godeps/_workspace/src/github.com/vishvananda/netlink/nl/nl_linux.go
generated
vendored
5
libnetwork/Godeps/_workspace/src/github.com/vishvananda/netlink/nl/nl_linux.go
generated
vendored
|
@ -7,6 +7,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
"sync"
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
"syscall"
|
"syscall"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
|
@ -233,6 +234,9 @@ func (req *NetlinkRequest) Execute(sockType int, resType uint16) ([][]byte, erro
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
defer s.Close()
|
defer s.Close()
|
||||||
|
} else {
|
||||||
|
s.Lock()
|
||||||
|
defer s.Unlock()
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := s.Send(req); err != nil {
|
if err := s.Send(req); err != nil {
|
||||||
|
@ -302,6 +306,7 @@ func NewNetlinkRequest(proto, flags int) *NetlinkRequest {
|
||||||
type NetlinkSocket struct {
|
type NetlinkSocket struct {
|
||||||
fd int
|
fd int
|
||||||
lsa syscall.SockaddrNetlink
|
lsa syscall.SockaddrNetlink
|
||||||
|
sync.Mutex
|
||||||
}
|
}
|
||||||
|
|
||||||
func getNetlinkSocket(protocol int) (*NetlinkSocket, error) {
|
func getNetlinkSocket(protocol int) (*NetlinkSocket, error) {
|
||||||
|
|
31
libnetwork/Godeps/_workspace/src/github.com/vishvananda/netlink/xfrm_state.go
generated
vendored
31
libnetwork/Godeps/_workspace/src/github.com/vishvananda/netlink/xfrm_state.go
generated
vendored
|
@ -3,6 +3,8 @@ package netlink
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
|
|
||||||
|
"github.com/vishvananda/netlink/nl"
|
||||||
)
|
)
|
||||||
|
|
||||||
// XfrmStateAlgo represents the algorithm to use for the ipsec encryption.
|
// XfrmStateAlgo represents the algorithm to use for the ipsec encryption.
|
||||||
|
@ -47,6 +49,18 @@ func (e XfrmStateEncap) String() string {
|
||||||
e.Type, e.SrcPort, e.DstPort, e.OriginalAddress)
|
e.Type, e.SrcPort, e.DstPort, e.OriginalAddress)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// XfrmStateLimits represents the configured limits for the state.
|
||||||
|
type XfrmStateLimits struct {
|
||||||
|
ByteSoft uint64
|
||||||
|
ByteHard uint64
|
||||||
|
PacketSoft uint64
|
||||||
|
PacketHard uint64
|
||||||
|
TimeSoft uint64
|
||||||
|
TimeHard uint64
|
||||||
|
TimeUseSoft uint64
|
||||||
|
TimeUseHard uint64
|
||||||
|
}
|
||||||
|
|
||||||
// XfrmState represents the state of an ipsec policy. It optionally
|
// XfrmState represents the state of an ipsec policy. It optionally
|
||||||
// contains an XfrmStateAlgo for encryption and one for authentication.
|
// contains an XfrmStateAlgo for encryption and one for authentication.
|
||||||
type XfrmState struct {
|
type XfrmState struct {
|
||||||
|
@ -57,6 +71,7 @@ type XfrmState struct {
|
||||||
Spi int
|
Spi int
|
||||||
Reqid int
|
Reqid int
|
||||||
ReplayWindow int
|
ReplayWindow int
|
||||||
|
Limits XfrmStateLimits
|
||||||
Mark *XfrmMark
|
Mark *XfrmMark
|
||||||
Auth *XfrmStateAlgo
|
Auth *XfrmStateAlgo
|
||||||
Crypt *XfrmStateAlgo
|
Crypt *XfrmStateAlgo
|
||||||
|
@ -67,3 +82,19 @@ func (sa XfrmState) String() string {
|
||||||
return fmt.Sprintf("Dst: %v, Src: %v, Proto: %s, Mode: %s, SPI: 0x%x, ReqID: 0x%x, ReplayWindow: %d, Mark: %v, Auth: %v, Crypt: %v, Encap: %v",
|
return fmt.Sprintf("Dst: %v, Src: %v, Proto: %s, Mode: %s, SPI: 0x%x, ReqID: 0x%x, ReplayWindow: %d, Mark: %v, Auth: %v, Crypt: %v, Encap: %v",
|
||||||
sa.Dst, sa.Src, sa.Proto, sa.Mode, sa.Spi, sa.Reqid, sa.ReplayWindow, sa.Mark, sa.Auth, sa.Crypt, sa.Encap)
|
sa.Dst, sa.Src, sa.Proto, sa.Mode, sa.Spi, sa.Reqid, sa.ReplayWindow, sa.Mark, sa.Auth, sa.Crypt, sa.Encap)
|
||||||
}
|
}
|
||||||
|
func (sa XfrmState) Print(stats bool) string {
|
||||||
|
if !stats {
|
||||||
|
return sa.String()
|
||||||
|
}
|
||||||
|
|
||||||
|
return fmt.Sprintf("%s, ByteSoft: %s, ByteHard: %s, PacketSoft: %s, PacketHard: %s, TimeSoft: %d, TimeHard: %d, TimeUseSoft: %d, TimeUseHard: %d",
|
||||||
|
sa.String(), printLimit(sa.Limits.ByteSoft), printLimit(sa.Limits.ByteHard), printLimit(sa.Limits.PacketSoft), printLimit(sa.Limits.PacketHard),
|
||||||
|
sa.Limits.TimeSoft, sa.Limits.TimeHard, sa.Limits.TimeUseSoft, sa.Limits.TimeUseHard)
|
||||||
|
}
|
||||||
|
|
||||||
|
func printLimit(lmt uint64) string {
|
||||||
|
if lmt == nl.XFRM_INF {
|
||||||
|
return "(INF)"
|
||||||
|
}
|
||||||
|
return fmt.Sprintf("%d", lmt)
|
||||||
|
}
|
||||||
|
|
38
libnetwork/Godeps/_workspace/src/github.com/vishvananda/netlink/xfrm_state_linux.go
generated
vendored
38
libnetwork/Godeps/_workspace/src/github.com/vishvananda/netlink/xfrm_state_linux.go
generated
vendored
|
@ -3,6 +3,7 @@ package netlink
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"syscall"
|
"syscall"
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
"github.com/vishvananda/netlink/nl"
|
"github.com/vishvananda/netlink/nl"
|
||||||
)
|
)
|
||||||
|
@ -85,10 +86,7 @@ func (h *Handle) xfrmStateAddOrUpdate(state *XfrmState, nlProto int) error {
|
||||||
msg.Id.Spi = nl.Swap32(uint32(state.Spi))
|
msg.Id.Spi = nl.Swap32(uint32(state.Spi))
|
||||||
msg.Reqid = uint32(state.Reqid)
|
msg.Reqid = uint32(state.Reqid)
|
||||||
msg.ReplayWindow = uint8(state.ReplayWindow)
|
msg.ReplayWindow = uint8(state.ReplayWindow)
|
||||||
msg.Lft.SoftByteLimit = nl.XFRM_INF
|
limitsToLft(state.Limits, &msg.Lft)
|
||||||
msg.Lft.HardByteLimit = nl.XFRM_INF
|
|
||||||
msg.Lft.SoftPacketLimit = nl.XFRM_INF
|
|
||||||
msg.Lft.HardPacketLimit = nl.XFRM_INF
|
|
||||||
req.AddData(msg)
|
req.AddData(msg)
|
||||||
|
|
||||||
if state.Auth != nil {
|
if state.Auth != nil {
|
||||||
|
@ -242,6 +240,7 @@ func parseXfrmState(m []byte, family int) (*XfrmState, error) {
|
||||||
state.Spi = int(nl.Swap32(msg.Id.Spi))
|
state.Spi = int(nl.Swap32(msg.Id.Spi))
|
||||||
state.Reqid = int(msg.Reqid)
|
state.Reqid = int(msg.Reqid)
|
||||||
state.ReplayWindow = int(msg.ReplayWindow)
|
state.ReplayWindow = int(msg.ReplayWindow)
|
||||||
|
lftToLimits(&msg.Lft, &state.Limits)
|
||||||
|
|
||||||
attrs, err := nl.ParseRouteAttr(m[nl.SizeofXfrmUsersaInfo:])
|
attrs, err := nl.ParseRouteAttr(m[nl.SizeofXfrmUsersaInfo:])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -312,3 +311,34 @@ func (h *Handle) XfrmStateFlush(proto Proto) error {
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func limitsToLft(lmts XfrmStateLimits, lft *nl.XfrmLifetimeCfg) {
|
||||||
|
if lmts.ByteSoft != 0 {
|
||||||
|
lft.SoftByteLimit = lmts.ByteSoft
|
||||||
|
} else {
|
||||||
|
lft.SoftByteLimit = nl.XFRM_INF
|
||||||
|
}
|
||||||
|
if lmts.ByteHard != 0 {
|
||||||
|
lft.HardByteLimit = lmts.ByteHard
|
||||||
|
} else {
|
||||||
|
lft.HardByteLimit = nl.XFRM_INF
|
||||||
|
}
|
||||||
|
if lmts.PacketSoft != 0 {
|
||||||
|
lft.SoftPacketLimit = lmts.PacketSoft
|
||||||
|
} else {
|
||||||
|
lft.SoftPacketLimit = nl.XFRM_INF
|
||||||
|
}
|
||||||
|
if lmts.PacketHard != 0 {
|
||||||
|
lft.HardPacketLimit = lmts.PacketHard
|
||||||
|
} else {
|
||||||
|
lft.HardPacketLimit = nl.XFRM_INF
|
||||||
|
}
|
||||||
|
lft.SoftAddExpiresSeconds = lmts.TimeSoft
|
||||||
|
lft.HardAddExpiresSeconds = lmts.TimeHard
|
||||||
|
lft.SoftUseExpiresSeconds = lmts.TimeUseSoft
|
||||||
|
lft.HardUseExpiresSeconds = lmts.TimeUseHard
|
||||||
|
}
|
||||||
|
|
||||||
|
func lftToLimits(lft *nl.XfrmLifetimeCfg, lmts *XfrmStateLimits) {
|
||||||
|
*lmts = *(*XfrmStateLimits)(unsafe.Pointer(lft))
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue