diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..57d716a4 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,13 @@ +version: 2 +updates: + - package-ecosystem: "gomod" + directory: "/" # Location of package manifests + schedule: + interval: "weekly" + open-pull-requests-limit: 5 + - package-ecosystem: "github-actions" + # Workflow files stored in the default location of `.github/workflows` + directory: "/" + schedule: + interval: "weekly" + open-pull-requests-limit: 5 diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 08bc1f1a..9915a2a2 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -29,7 +29,7 @@ jobs: - name: Check-out code uses: actions/checkout@v3 - name: Set up Go using version from go.mod - uses: actions/setup-go@v3 + uses: actions/setup-go@v4 with: go-version-file: 'go.mod' - uses: actions/cache@v3 @@ -53,12 +53,12 @@ jobs: tidy: runs-on: [ubuntu-latest] steps: - - name: Set up Go 1.15 - uses: actions/setup-go@v1 - with: - go-version: 1.15 - name: Check-out code - uses: actions/checkout@v2 + uses: actions/checkout@v3 + - name: Set up Go using version from go.mod + uses: actions/setup-go@v4 + with: + go-version-file: 'go.mod' - name: Check tidiness run: | ./ci/check-tidy.sh diff --git a/Makefile b/Makefile index bab0379c..00db3d37 100755 --- a/Makefile +++ b/Makefile @@ -6,6 +6,10 @@ DOCKER_CACHE := $(CURDIR)/.cache OVS_VERSION := $(shell head -n 1 build/images/deps/ovs-version) GO_VERSION := $(shell head -n 1 build/images/deps/go-version) +GOLANGCI_LINT_VERSION := v1.52.2 +GOLANGCI_LINT_BINDIR := .golangci-bin +GOLANGCI_LINT_BIN := $(GOLANGCI_LINT_BINDIR)/$(GOLANGCI_LINT_VERSION)/golangci-lint + USERID := $(shell id -u) GRPID := $(shell id -g) @@ -18,19 +22,20 @@ all: test test: docker-test-integration # code linting -.golangci-bin: +$(GOLANGCI_LINT_BIN): @echo "===> Installing Golangci-lint <===" - @curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $@ v1.52.2 + @rm -rf $(GOLANGCI_LINT_BINDIR)/* # delete old versions + @curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(GOLANGCI_LINT_BINDIR)/$(GOLANGCI_LINT_VERSION) $(GOLANGCI_LINT_VERSION) .PHONY: golangci -golangci: .golangci-bin +golangci: $(GOLANGCI_LINT_BIN) @echo "===> Running golangci <===" - @GOOS=linux .golangci-bin/golangci-lint run -c .golangci.yml + @GOOS=linux $(GOLANGCI_LINT_BIN) run -c .golangci.yml .PHONY: golangci-fix -golangci-fix: .golangci-bin +golangci-fix: $(GOLANGCI_LINT_BIN) @echo "===> Running golangci-fix <===" - @GOOS=linux .golangci-bin/golangci-lint run -c .golangci.yml --fix + @GOOS=linux $(GOLANGCI_LINT_BIN) run -c .golangci.yml --fix .PHONY: test-integration test-integration: @@ -58,3 +63,6 @@ endif -v /lib/modules:/lib/modules \ ofnet/test test-integration $(USERID) $(GRPID) +.PHONY: clean +clean: + rm -rf $(GOLANGCI_LINT_BINDIR) diff --git a/VERSION b/VERSION index 3d105a6f..b19b5211 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -v0.7.3 +v0.8.0 diff --git a/go.mod b/go.mod index a317a498..19ccc81f 100644 --- a/go.mod +++ b/go.mod @@ -1,17 +1,27 @@ module antrea.io/ofnet -go 1.15 +go 1.19 + +require ( + antrea.io/libOpenflow v0.11.0 + github.com/Microsoft/go-winio v0.6.1 + github.com/contiv/libovsdb v0.0.0-20170227191248-d0061a53e358 + github.com/orcaman/concurrent-map/v2 v2.0.1 + github.com/sirupsen/logrus v1.9.3 + github.com/stretchr/testify v1.8.4 +) require ( - antrea.io/libOpenflow v0.10.3 - github.com/Microsoft/go-winio v0.4.14 github.com/cenkalti/hub v1.0.1-0.20140529221144-7be60e186e66 // indirect github.com/cenkalti/rpc2 v0.0.0-20140912135055-44d0d95e4f52 // indirect - github.com/contiv/libovsdb v0.0.0-20170227191248-d0061a53e358 + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/go-logr/logr v1.2.0 // indirect github.com/kr/pretty v0.2.0 // indirect - github.com/sirupsen/logrus v1.8.1 - github.com/streamrail/concurrent-map v0.0.0-20160803124810-238fe79560e1 - github.com/stretchr/testify v1.7.0 - golang.org/x/sys v0.0.0-20200113162924-86b910548bc1 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + golang.org/x/mod v0.8.0 // indirect + golang.org/x/sys v0.5.0 // indirect + golang.org/x/tools v0.6.0 // indirect gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + k8s.io/klog/v2 v2.100.1 // indirect ) diff --git a/go.sum b/go.sum index e5b8c7c5..1b5cf30f 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,7 @@ -antrea.io/libOpenflow v0.10.3 h1:ZLqpwss8wqzLzRPXFV3/A2hDMpcfIPRCQKWebZ6oWRI= -antrea.io/libOpenflow v0.10.3/go.mod h1:drWN5iISj7G2J6MnclrFmgy0jHU1Z684WW0DxcrjNP0= -github.com/Microsoft/go-winio v0.4.14 h1:+hMXMk01us9KgxGb7ftKQt2Xpf5hH/yky+TDA+qxleU= -github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= +antrea.io/libOpenflow v0.11.0 h1:CugX6u46zI7qlWf/9HXDSjPpkRgcK46eVko+mLGuxEc= +antrea.io/libOpenflow v0.11.0/go.mod h1:WNcqu1927fBdc4G9wocmi58+bfxaLmZOTaTGROEcM8I= +github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/cenkalti/hub v1.0.1-0.20140529221144-7be60e186e66 h1:mqwgWF7yBJ/zOFlWZk84IRFG/FhMG0f7aZWvcTx/JHA= github.com/cenkalti/hub v1.0.1-0.20140529221144-7be60e186e66/go.mod h1:tcYwtS3a2d9NO/0xDXVJWx3IedurUjYCqFCmpi0lpHs= github.com/cenkalti/rpc2 v0.0.0-20140912135055-44d0d95e4f52 h1:LnaEnQZECBs+zizOdhjYpYAfshAmeQa3556LlhONGUs= @@ -13,34 +13,34 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/go-logr/logr v1.2.0 h1:QK40JKJyMdUDz+h+xvCsru/bJhvG0UxvePV0ufL/AcE= github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/orcaman/concurrent-map/v2 v2.0.1 h1:jOJ5Pg2w1oeB6PeDurIYf6k9PQ+aTITr/6lP/L/zp6c= +github.com/orcaman/concurrent-map/v2 v2.0.1/go.mod h1:9Eq3TG2oBe5FirmYWQfYO5iH1q0Jv47PLaNK++uCdOM= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= -github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= -github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/streamrail/concurrent-map v0.0.0-20160803124810-238fe79560e1 h1:KVUFZKtQ7OlCM1WWxRxYg5uNPJWZ9LpQuLpbftYWo8E= -github.com/streamrail/concurrent-map v0.0.0-20160803124810-238fe79560e1/go.mod h1:yqDD2twFAqxvvH5gtpwwgLsj5L1kbNwtoPoDOwBzXcs= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1 h1:gZpLHxUX5BdYLA08Lj4YCJNN/jk7KtquiArPoeX0WvA= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/klog/v2 v2.60.1 h1:VW25q3bZx9uE3vvdL6M8ezOX79vA2Aq1nEWLqNQclHc= -k8s.io/klog/v2 v2.60.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg= +k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= diff --git a/ofctrl/ofSwitch.go b/ofctrl/ofSwitch.go index 172d1c85..63dbdcb6 100755 --- a/ofctrl/ofSwitch.go +++ b/ofctrl/ofSwitch.go @@ -27,8 +27,8 @@ import ( "antrea.io/libOpenflow/openflow15" "antrea.io/libOpenflow/protocol" "antrea.io/libOpenflow/util" + cmap "github.com/orcaman/concurrent-map/v2" log "github.com/sirupsen/logrus" - cmap "github.com/streamrail/concurrent-map" ) const ( @@ -72,13 +72,10 @@ type OFSwitch struct { tlvMgr *tlvMapMgr } -var switchDb cmap.ConcurrentMap -var monitoredFlows cmap.ConcurrentMap - -func init() { - switchDb = cmap.New() - monitoredFlows = cmap.New() -} +var ( + switchDb = cmap.New[*OFSwitch]() + monitoredFlows = cmap.New[chan *openflow15.MultipartReply]() +) // Builds and populates a Switch struct then starts listening // for OpenFlow messages on conn. @@ -118,11 +115,11 @@ func NewSwitch(stream *util.MessageStream, dpid net.HardwareAddr, app AppInterfa // Returns a pointer to the Switch mapped to dpid. func getSwitch(dpid net.HardwareAddr) *OFSwitch { - sw, _ := switchDb.Get(dpid.String()) - if sw == nil { + sw, ok := switchDb.Get(dpid.String()) + if !ok { return nil } - return sw.(*OFSwitch) + return sw } // Returns the dpid of Switch s. @@ -345,9 +342,8 @@ func (self *OFSwitch) handleMessages(dpid net.HardwareAddr, msg util.Message) { rep := (*openflow15.MultipartReply)(t) if self.monitorEnabled { key := fmt.Sprintf("%d", rep.Xid) - ch, found := monitoredFlows.Get(key) + replyChan, found := monitoredFlows.Get(key) if found { - replyChan := ch.(chan *openflow15.MultipartReply) replyChan <- rep } }