|
5 | 5 | "fmt" |
6 | 6 | "net" |
7 | 7 | "slices" |
| 8 | + "strings" |
8 | 9 | "sync/atomic" |
9 | 10 | "time" |
10 | 11 |
|
@@ -522,8 +523,10 @@ func (udng *UserDefinedNetworkGateway) addUDNManagementPort() (netlink.Link, err |
522 | 523 | // STEP3 |
523 | 524 | // IPv6 forwarding is enabled globally |
524 | 525 | if ipv4, _ := udng.IPMode(); ipv4 { |
525 | | - stdout, stderr, err := util.RunSysctl("-w", fmt.Sprintf("net.ipv4.conf.%s.forwarding=1", interfaceName)) |
526 | | - if err != nil || stdout != fmt.Sprintf("net.ipv4.conf.%s.forwarding = 1", interfaceName) { |
| 526 | + // we use forward slash as path separator to allow dotted interfaceName e.g. foo.200 |
| 527 | + stdout, stderr, err := util.RunSysctl("-w", fmt.Sprintf("net/ipv4/conf/%s/forwarding=1", interfaceName)) |
| 528 | + // systctl output enforces dot as path separator |
| 529 | + if err != nil || stdout != fmt.Sprintf("net.ipv4.conf.%s.forwarding = 1", strings.ReplaceAll(interfaceName, ".", "/")) { |
527 | 530 | return nil, fmt.Errorf("could not set the correct forwarding value for interface %s: stdout: %v, stderr: %v, err: %v", |
528 | 531 | interfaceName, stdout, stderr, err) |
529 | 532 | } |
@@ -891,8 +894,10 @@ func addRPFilterLooseModeForManagementPort(mgmtPortName string) error { |
891 | 894 | rpFilterLooseMode := "2" |
892 | 895 | // TODO: Convert testing framework to mock golang module utilities. Example: |
893 | 896 | // result, err := sysctl.Sysctl(fmt.Sprintf("net/ipv4/conf/%s/rp_filter", types.K8sMgmtIntfName), rpFilterLooseMode) |
894 | | - stdout, stderr, err := util.RunSysctl("-w", fmt.Sprintf("net.ipv4.conf.%s.rp_filter=%s", mgmtPortName, rpFilterLooseMode)) |
895 | | - if err != nil || stdout != fmt.Sprintf("net.ipv4.conf.%s.rp_filter = %s", mgmtPortName, rpFilterLooseMode) { |
| 897 | + // we use forward slash as path separator to allow dotted mgmtPortName e.g. foo.200 |
| 898 | + stdout, stderr, err := util.RunSysctl("-w", fmt.Sprintf("net/ipv4/conf/%s/rp_filter=%s", mgmtPortName, rpFilterLooseMode)) |
| 899 | + // systctl output enforces dot as path separator |
| 900 | + if err != nil || stdout != fmt.Sprintf("net.ipv4.conf.%s.rp_filter = %s", strings.ReplaceAll(mgmtPortName, ".", "/"), rpFilterLooseMode) { |
896 | 901 | return fmt.Errorf("could not set the correct rp_filter value for interface %s: stdout: %v, stderr: %v, err: %v", |
897 | 902 | mgmtPortName, stdout, stderr, err) |
898 | 903 | } |
|
0 commit comments