|
7 | 7 | "encoding/json" |
8 | 8 | "errors" |
9 | 9 | "fmt" |
10 | | - "net" |
11 | 10 | "strconv" |
12 | 11 | "strings" |
13 | 12 | "time" |
@@ -189,76 +188,6 @@ func (nm *networkManager) newNetworkImplHnsV1(nwInfo *NetworkInfo, extIf *extern |
189 | 188 | return nw, nil |
190 | 189 | } |
191 | 190 |
|
192 | | -// add ipv4 and ipv6 routes in dualstack overlay mode to windows Node |
193 | | -// in dualstack overlay mode, pods are created from different subnets on different nodes, gateway has to be node ip if pods want to communicate with each other |
194 | | -// add routes to make node understand pod IPs come from different subnets and VFP will take decisions based on these routes to forward traffic and avoid Natting |
195 | | -func (nm *networkManager) addNewNetRules(nwInfo *NetworkInfo) error { |
196 | | - var ( |
197 | | - err error |
198 | | - out string |
199 | | - ) |
200 | | - |
201 | | - // get interface name of the VM adapter |
202 | | - ifName := nwInfo.MasterIfName |
203 | | - if !strings.Contains(nwInfo.MasterIfName, ifNamePrefix) { |
204 | | - ifName = fmt.Sprintf("%s (%s)", ifNamePrefix, nwInfo.MasterIfName) |
205 | | - } |
206 | | - |
207 | | - // check if external interface name is empty |
208 | | - if ifName == "" { |
209 | | - return fmt.Errorf("[net] external interface name is empty") // nolint |
210 | | - } |
211 | | - |
212 | | - // check whether nwInfo subnets exist |
213 | | - if nwInfo.Subnets == nil { |
214 | | - return fmt.Errorf("[net] nwInfo subnets are not found") // nolint |
215 | | - } |
216 | | - |
217 | | - // iterate subnet and add ipv4 and ipv6 default route and gateway only if it is not existing |
218 | | - for _, subnet := range nwInfo.Subnets { |
219 | | - prefix := subnet.Prefix.String() |
220 | | - |
221 | | - ip, _, errParseCIDR := net.ParseCIDR(prefix) |
222 | | - if errParseCIDR != nil { |
223 | | - return fmt.Errorf("[net] failed to parse prefix %s due to %+v", prefix, errParseCIDR) // nolint |
224 | | - } |
225 | | - |
226 | | - if subnet.Gateway == nil { |
227 | | - return fmt.Errorf("[net] failed to get subnet gateway") // nolint |
228 | | - } |
229 | | - |
230 | | - log.Printf("[net] Adding ipv4 and ipv6 net rules to windows node") |
231 | | - |
232 | | - // delete existing net rules before adding new rules to windows node in case: |
233 | | - // if hnsNetwork is not existing and new pod is creating, existing rules will be applied twice that will cause the pod creation failure |
234 | | - if ip.To4() != nil { |
235 | | - deleteNetshV4DefaultRoute := fmt.Sprintf(netRouteCmd, "ipv4", "delete", prefix, ifName, ipv4DefaultHop) |
236 | | - if _, delErr := nm.plClient.ExecuteCommand(deleteNetshV4DefaultRoute); delErr != nil { |
237 | | - log.Printf("[net] Deleting ipv4 default route failed: %v", err) |
238 | | - } |
239 | | - |
240 | | - // netsh interface ipv4 add route $subnetV4 $hostInterfaceAlias "0.0.0.0" |
241 | | - addNetshV4DefaultRoute := fmt.Sprintf(netRouteCmd, "ipv4", "add", prefix, ifName, ipv4DefaultHop) |
242 | | - if out, err = nm.plClient.ExecuteCommand(addNetshV4DefaultRoute); err != nil { |
243 | | - log.Printf("[net] Adding ipv4 default route failed: %v:%v", out, err) |
244 | | - } |
245 | | - } else { |
246 | | - deleteNetshV6DefaultRoute := fmt.Sprintf(netRouteCmd, "ipv6", "delete", prefix, ifName, ipv6DefaultHop) |
247 | | - if _, delErr := nm.plClient.ExecuteCommand(deleteNetshV6DefaultRoute); delErr != nil { |
248 | | - log.Printf("[net] Deleting ipv6 default route failed: %v", delErr) |
249 | | - } |
250 | | - |
251 | | - // netsh interface ipv6 add route $subnetV6 $hostInterfaceAlias "::" |
252 | | - addNetshV6DefaultRoute := fmt.Sprintf(netRouteCmd, "ipv6", "add", prefix, ifName, ipv6DefaultHop) |
253 | | - if out, err = nm.plClient.ExecuteCommand(addNetshV6DefaultRoute); err != nil { |
254 | | - log.Printf("[net] Adding ipv6 default route failed: %v:%v", out, err) |
255 | | - } |
256 | | - } |
257 | | - } |
258 | | - |
259 | | - return err // nolint |
260 | | -} |
261 | | - |
262 | 191 | func (nm *networkManager) appIPV6RouteEntry(nwInfo *NetworkInfo) error { |
263 | 192 | var ( |
264 | 193 | err error |
@@ -403,16 +332,8 @@ func (nm *networkManager) newNetworkImplHnsV2(nwInfo *NetworkInfo, extIf *extern |
403 | 332 | if err != nil { |
404 | 333 | // if network not found, create the HNS network. |
405 | 334 | if errors.As(err, &hcn.NetworkNotFoundError{}) { |
406 | | - // add net routes to windows node if we have IPv6 enabled |
407 | | - if nwInfo.IsIPv6Enabled { |
408 | | - if err := nm.addNewNetRules(nwInfo); err != nil { // nolint |
409 | | - log.Printf("[net] Failed to add net rules due to %+v", err) |
410 | | - return nil, err |
411 | | - } |
412 | | - } |
413 | 335 | log.Printf("[net] Creating hcn network: %+v", hcnNetwork) |
414 | 336 | hnsResponse, err = Hnsv2.CreateNetwork(hcnNetwork) |
415 | | - |
416 | 337 | if err != nil { |
417 | 338 | return nil, fmt.Errorf("Failed to create hcn network: %s due to error: %v", hcnNetwork.Name, err) |
418 | 339 | } |
|
0 commit comments