kata-containers/runtime/patches/0094-kata-runtime-fix-update-iface-clean-NIC-cause-route-.patch

116 lines
3.3 KiB
Diff
Raw Normal View History

kata:sync bugfix patches, runtime 0079-0096 agent 0021-0024 runtime: 0079-kata-runtime-fix-qemu-SCSIBus-info-not-saved-into-pe.patch 0080-kata-runtime-fix-the-block-device-not-removed-in-dev.patch 0081-kata-runtime-cut-too-long-message-in-grpc-log.patch 0082-kata-runtime-change-sandbox-state-to-unhealthy-when-.patch 0083-kata-runtime-add-removeMountBlockDevices-for-contain.patch 0084-kata-runtime-fix-validInterface-func-cause-crash-pro.patch 0085-kata-runtime-fix-kata-netmon-does-not-exit-when-cont.patch 0086-kata-runtime-add-checkCPUSet-before-create-container.patch 0087-kata-runtime-force-delete-the-sandbox-and-container.patch 0088-kata-runtime-check-sandbox-healthy-state-before-call.patch 0089-kata-add-support-for-update-iface.patch 0090-kata-set-sandbox-or-container-status-to-unhealthy.patch 0091-kata-runtime-add-sandbox-file-lock-while-call-GetSan.patch 0092-qemu-add-arm64-to-support-list-of-dimm.patch 0093-kata-runtime-add-timeout-for-grpcWaitProcessRequest.patch 0094-kata-runtime-fix-update-iface-clean-NIC-cause-route-.patch 0095-kata-runtime-fix-qemu-process-resource-resi.patch 0096-kata-containers-Move-from-query-cpus-to-query-cpus-f.patch agent: 0021-kata-agent-fix-sync-clock-not-work-problem.patch 0022-kata-agent-delete-container-id-from-sandbox-struct.patch 0023-kata-agent-modify-log-level.patch 0024-kata-agent-fix-agent.debug_console-not-work-when-bui.patch Signed-off-by: Vanient <xiadanni1@huawei.com> (cherry picked from commit f2d936028666741658157472b8de9d02187c6d55)
2022-09-09 17:04:39 +08:00
From 940ddf068c95fd9662f8be79a38316f585e35edf Mon Sep 17 00:00:00 2001
From: jiangpengfei <jiangpengfei9@huawei.com>
Date: Thu, 27 May 2021 21:43:11 -0400
Subject: [PATCH] kata-runtime: fix update-iface clean NIC cause route left
problem
reason: when kata-network update-iface is called to clean NIC ip info,
the guest os will clean the related routes with NIC, however the routes
info in the persisit.json file is still left. So the followed add-route
command add the same route will cause the problem.
Conflict: NA
Reference:https://gitee.com/src-openeuler/kata-containers
Change-Id: I723bee277e8ec537f6de1127de3ec812d5686fe4
Signed-off-by: jiangpengfei <jiangpengfei9@huawei.com>
---
virtcontainers/network.go | 70 +++++------------------------------------------
1 file changed, 7 insertions(+), 63 deletions(-)
diff --git a/virtcontainers/network.go b/virtcontainers/network.go
index 7bbf85b..18cc04c 100644
--- a/virtcontainers/network.go
+++ b/virtcontainers/network.go
@@ -1698,45 +1698,16 @@ func isSameRoute(existing, r *netlink.Route, fuzzy bool) bool {
}
func addOneRoute(ns *NetworkNamespace, route *vcTypes.Route) (added *vcTypes.Route, err error) {
- add, err := generateAddRoute(route)
+ _, err = generateAddRoute(route)
if err != nil {
return nil, err
}
- // add the route for "lo" loopback device
- if route.Device == localHostDeviceName {
- added = &vcTypes.Route{
- Dest: route.Dest,
- Gateway: route.Gateway,
- Device: route.Device,
- }
- return added, nil
- }
-
- // add the route for exist network enpoints
- for _, ep := range ns.Endpoints {
- if ep.Name() != route.Device {
- continue
- }
-
- netInfo := ep.Properties()
- for _, exist := range ep.Properties().Routes {
- if isSameRoute(&exist, add, false) {
- return nil, fmt.Errorf("route rule %v already exits", add)
- }
- }
- // flush the netInfo.Routes with new added route
- netInfo.Routes = append(netInfo.Routes, *add)
- ep.SetProperties(netInfo)
- added = &vcTypes.Route{
- Dest: route.Dest,
- Gateway: route.Gateway,
- Device: route.Device,
- }
- break
- }
-
- return added, nil
+ return &vcTypes.Route{
+ Dest: route.Dest,
+ Gateway: route.Gateway,
+ Device: route.Device,
+ }, nil
}
func generateRmRoute(route *vcTypes.Route) (r *netlink.Route, err error) {
@@ -1812,34 +1783,7 @@ func removeRoutes(ns *NetworkNamespace, route *vcTypes.Route) (removed []*vcType
return nil, err
}
- // remove the lo device related routes
- if route.Device == localHostDeviceName {
- removed = append(removed, parseToGrpcRoute(localHostDeviceName, del, false))
-
- return removed, nil
- }
-
- for _, ep := range ns.Endpoints {
- // if device is empty, means search every device
- if route.Device != "" && ep.Name() != route.Device {
- continue
- }
-
- netInfo := ep.Properties()
- for i, exist := range ep.Properties().Routes {
- if isSameRoute(&exist, del, true) {
- // need remove
- netInfo.Routes = append(netInfo.Routes[:i], netInfo.Routes[i+1:]...)
- ep.SetProperties(netInfo)
- dev := route.Device
- if route.Device == "" {
- dev = netInfo.Iface.Name
- }
- removed = append(removed, parseToGrpcRoute(dev, del, false))
- }
- }
- }
-
+ removed = append(removed, parseToGrpcRoute(route.Device, del, false))
return removed, nil
}
--
1.8.3.1