From 989e5e7363ed44c12f118c4ba1ab937d021312b3 Mon Sep 17 00:00:00 2001 From: Trekkie Coder Date: Tue, 16 Jan 2024 23:53:41 +0900 Subject: [PATCH 1/4] gh-495 : Updated to latest submodule --- loxilb-ebpf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/loxilb-ebpf b/loxilb-ebpf index 8f42f04a..6e5c7658 160000 --- a/loxilb-ebpf +++ b/loxilb-ebpf @@ -1 +1 @@ -Subproject commit 8f42f04ab9e038dd64443f7e22f1b23c2a4154a8 +Subproject commit 6e5c76583ec61a29a43e48e461f8a31ce7492de9 From 9c652eb5f40129165b13e0785d7d6b4f178dfa36 Mon Sep 17 00:00:00 2001 From: Trekkie Coder Date: Wed, 17 Jan 2024 00:16:18 +0900 Subject: [PATCH 2/4] gh-495 Changes to accomodate flannel.x interface behavior --- cicd/common.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cicd/common.sh b/cicd/common.sh index 97868c3d..9978c11f 100644 --- a/cicd/common.sh +++ b/cicd/common.sh @@ -481,10 +481,10 @@ create_docker_host_vxlan() { #echo "$h1:$link1->$h2:$link2" if [[ "$uifType" == "phy" ]]; then - sudo ip -n $h1 link add vxlan$vxid type vxlan id $vxid local $lip dev $link1 dstport 4789 + sudo ip -n $h1 link add vxlan$vxid type vxlan id $vxid local $lip dev $link1 dstport 0 sudo ip -n $h1 link set vxlan$vxid up elif [[ "$uifType" == "vlan" ]]; then - sudo ip -n $h1 link add vxlan$vxid type vxlan id $vxid local $lip dev vlan$vid dstport 4789 + sudo ip -n $h1 link add vxlan$vxid type vxlan id $vxid local $lip dev vlan$vid dstport 0 sudo ip -n $h1 link set vxlan$vxid up fi From b7839dca0513825ab8138a0ee39577ff9d8fdc5e Mon Sep 17 00:00:00 2001 From: Trekkie Coder Date: Thu, 18 Jan 2024 01:02:05 +0900 Subject: [PATCH 3/4] gh-494 Fixes for ipvs-compat mode --- loxinet/rules.go | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/loxinet/rules.go b/loxinet/rules.go index ac8e02f1..53882887 100644 --- a/loxinet/rules.go +++ b/loxinet/rules.go @@ -1431,10 +1431,12 @@ func (R *RuleH) AddNatLbRule(serv cmn.LbServiceArg, servSecIPs []cmn.LbSecIPArg, if r.ruleNum < RtMaximumLbs { R.tables[RtLB].rArr[r.ruleNum] = r } - R.vipMap[sNetAddr.IP.String()]++ + if !strings.Contains(r.name, "ipvs") { + R.vipMap[sNetAddr.IP.String()]++ - if R.vipMap[sNetAddr.IP.String()] == 1 && !strings.Contains(r.name, "ipvs") { - R.AdvRuleVIPIfL2(sNetAddr.IP) + if R.vipMap[sNetAddr.IP.String()] == 1 { + R.AdvRuleVIPIfL2(sNetAddr.IP) + } } r.DP(DpCreate) @@ -1496,13 +1498,15 @@ func (R *RuleH) DeleteNatLbRule(serv cmn.LbServiceArg) (int, error) { R.tables[RtLB].rArr[rule.ruleNum] = nil } - R.vipMap[sNetAddr.IP.String()]-- + if !strings.Contains(rule.name, "ipvs") { + R.vipMap[sNetAddr.IP.String()]-- - if R.vipMap[sNetAddr.IP.String()] == 0 { - if IsIPHostAddr(sNetAddr.IP.String()) && !strings.Contains(rule.name, "ipvs") { - loxinlp.DelAddrNoHook(sNetAddr.IP.String()+"/32", "lo") + if R.vipMap[sNetAddr.IP.String()] == 0 { + if IsIPHostAddr(sNetAddr.IP.String()) { + loxinlp.DelAddrNoHook(sNetAddr.IP.String()+"/32", "lo") + } + delete(R.vipMap, sNetAddr.IP.String()) } - delete(R.vipMap, sNetAddr.IP.String()) } tk.LogIt(tk.LogDebug, "nat lb-rule deleted %s-%s\n", rule.tuples.String(), rule.act.String()) From 1d24905b28f6a1fde463722b9d4e10e56980c4d7 Mon Sep 17 00:00:00 2001 From: Trekkie Coder Date: Thu, 18 Jan 2024 01:03:44 +0900 Subject: [PATCH 4/4] gh-495 Fixes for better interworking with flannel without blacklisting anything --- api/loxinlp/nlp.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/api/loxinlp/nlp.go b/api/loxinlp/nlp.go index fef0f07c..40294741 100644 --- a/api/loxinlp/nlp.go +++ b/api/loxinlp/nlp.go @@ -1363,7 +1363,8 @@ func RUWorker(ch chan nlp.RouteUpdate, f chan struct{}) { } } -func NLWorker(nNl *NlH, bgpPeerMode bool) { +func NLWorker(nNl *NlH, bgpPeerMode bool, ch chan bool) { + ch <- true if bgpPeerMode { for { /* Single thread for reading route NL msgs in below order */ RUWorker(nNl.FromRUCh, nNl.FromRUDone) @@ -1549,6 +1550,7 @@ func NlpInit(bgpPeerMode bool, blackList string, ipvsCompat bool) *NlH { nNl.BlackList = blackList nNl.BLRgx = regexp.MustCompile(blackList) + checkInit := make(chan bool) if bgpPeerMode { nNl.FromRUCh = make(chan nlp.RouteUpdate, cmn.RuWorkQLen) @@ -1559,7 +1561,8 @@ func NlpInit(bgpPeerMode bool, blackList string, ipvsCompat bool) *NlH { tk.LogIt(tk.LogInfo, "[NLP] Route msgs subscribed\n") } - go NLWorker(nNl, bgpPeerMode) + go NLWorker(nNl, bgpPeerMode, checkInit) + <-checkInit return nNl } @@ -1573,7 +1576,8 @@ func NlpInit(bgpPeerMode bool, blackList string, ipvsCompat bool) *NlH { nNl.FromRUCh = make(chan nlp.RouteUpdate, cmn.RuWorkQLen) nNl.IMap = make(map[string]Intf) - checkInit := make(chan bool) + go NLWorker(nNl, bgpPeerMode, checkInit) + <-checkInit err := nlp.LinkSubscribe(nNl.FromLUCh, nNl.FromLUDone) if err != nil { @@ -1600,7 +1604,6 @@ func NlpInit(bgpPeerMode bool, blackList string, ipvsCompat bool) *NlH { tk.LogIt(tk.LogInfo, "[NLP] Route msgs subscribed\n") } - go NLWorker(nNl, bgpPeerMode) tk.LogIt(tk.LogInfo, "[NLP] NLP Subscription done\n") go NlpGet(checkInit)