Atomically increment sequence in pkg/netlink

Docker-DCO-1.1-Signed-off-by: Alexandr Morozov <lk4d4math@gmail.com> (github: LK4D4)
This commit is contained in:
Alexandr Morozov 2014-05-30 13:12:02 +04:00
parent af17b01ad7
commit adb639117b
1 changed files with 3 additions and 7 deletions

View File

@ -7,6 +7,7 @@ import (
"fmt"
"math/rand"
"net"
"sync/atomic"
"syscall"
"unsafe"
)
@ -22,7 +23,7 @@ const (
SIOC_BRADDIF = 0x89a2
)
var nextSeqNr int
var nextSeqNr uint32
type ifreqHwaddr struct {
IfrnName [16]byte
@ -42,11 +43,6 @@ func nativeEndian() binary.ByteOrder {
return binary.LittleEndian
}
func getSeq() int {
nextSeqNr = nextSeqNr + 1
return nextSeqNr
}
func getIpFamily(ip net.IP) int {
if len(ip) <= net.IPv4len {
return syscall.AF_INET
@ -266,7 +262,7 @@ func newNetlinkRequest(proto, flags int) *NetlinkRequest {
Len: uint32(syscall.NLMSG_HDRLEN),
Type: uint16(proto),
Flags: syscall.NLM_F_REQUEST | uint16(flags),
Seq: uint32(getSeq()),
Seq: atomic.AddUint32(&nextSeqNr, 1),
},
}
}