Skip to content

Commit 706f4c0

Browse files
committed
feat: eip supports multiple NAT types
1 parent 2a015e5 commit 706f4c0

File tree

1 file changed

+4
-20
lines changed

1 file changed

+4
-20
lines changed

pkg/controller/vpc_nat_gw_nat.go

+4-20
Original file line numberDiff line numberDiff line change
@@ -696,11 +696,7 @@ func (c *Controller) handleAddIptablesDnatRule(key string) error {
696696
klog.Errorf("failed to get eip, %v", err)
697697
return err
698698
}
699-
if eip.Status.Nat != "" && eip.Status.Nat != util.DnatUsingEip {
700-
// eip is in use by other nat
701-
err = fmt.Errorf("failed to create dnat %s, eip '%s' is used by nat %s", key, eipName, eip.Status.Nat)
702-
return err
703-
}
699+
704700
if dup, err := c.isDnatDuplicated(eip.Spec.NatGwDp, eipName, dnat.Name, dnat.Spec.ExternalPort); dup || err != nil {
705701
return err
706702
}
@@ -775,11 +771,7 @@ func (c *Controller) handleUpdateIptablesDnatRule(key string) error {
775771
klog.Errorf("failed to get eip, %v", err)
776772
return err
777773
}
778-
if eip.Status.Nat != "" && eip.Status.Nat != "dnat" {
779-
// eip is in use by other nat
780-
err = fmt.Errorf("failed to update dnat %s, eip '%s' is used by nat %s", key, eipName, eip.Status.Nat)
781-
return err
782-
}
774+
783775
if dup, err := c.isDnatDuplicated(cachedDnat.Status.NatGwDp, eipName, cachedDnat.Name, cachedDnat.Spec.ExternalPort); dup || err != nil {
784776
klog.Errorf("failed to update dnat, %v", err)
785777
return err
@@ -880,11 +872,7 @@ func (c *Controller) handleAddIptablesSnatRule(key string) error {
880872
klog.Errorf("failed to get eip, %v", err)
881873
return err
882874
}
883-
if eip.Status.Nat != "" && eip.Status.Nat != "snat" {
884-
// eip is in use by other nat
885-
err = fmt.Errorf("failed to create snat %s, eip '%s' is used by nat '%s'", key, eipName, eip.Status.Nat)
886-
return err
887-
}
875+
888876
// create snat
889877
v4Cidr, _ := util.SplitStringIP(snat.Spec.InternalCIDR)
890878
if v4Cidr == "" {
@@ -968,11 +956,7 @@ func (c *Controller) handleUpdateIptablesSnatRule(key string) error {
968956
klog.Errorf("failed to get eip, %v", err)
969957
return err
970958
}
971-
if eip.Status.Nat != "" && eip.Status.Nat != "snat" {
972-
// eip is in use by other nat
973-
err = fmt.Errorf("failed to update snat %s, eip '%s' is used by %s", key, eipName, eip.Status.Nat)
974-
return err
975-
}
959+
976960
// add or update should make sure vpc nat enabled
977961
if vpcNatEnabled != "true" {
978962
return fmt.Errorf("iptables nat gw not enable")

0 commit comments

Comments
 (0)