mirror of https://github.com/k3s-io/k3s
Remove deprecated flag --conntrack-max from kube-proxy
parent
ac458e9d89
commit
82c42bb6ee
|
@ -168,9 +168,6 @@ func (o *Options) AddFlags(fs *pflag.FlagSet) {
|
||||||
fs.Int32Var(&o.metricsPort, "metrics-port", o.metricsPort, "The port to bind the metrics server. Use 0 to disable.")
|
fs.Int32Var(&o.metricsPort, "metrics-port", o.metricsPort, "The port to bind the metrics server. Use 0 to disable.")
|
||||||
fs.Int32Var(o.config.OOMScoreAdj, "oom-score-adj", utilpointer.Int32PtrDerefOr(o.config.OOMScoreAdj, int32(qos.KubeProxyOOMScoreAdj)), "The oom-score-adj value for kube-proxy process. Values must be within the range [-1000, 1000]")
|
fs.Int32Var(o.config.OOMScoreAdj, "oom-score-adj", utilpointer.Int32PtrDerefOr(o.config.OOMScoreAdj, int32(qos.KubeProxyOOMScoreAdj)), "The oom-score-adj value for kube-proxy process. Values must be within the range [-1000, 1000]")
|
||||||
fs.Int32Var(o.config.IPTables.MasqueradeBit, "iptables-masquerade-bit", utilpointer.Int32PtrDerefOr(o.config.IPTables.MasqueradeBit, 14), "If using the pure iptables proxy, the bit of the fwmark space to mark packets requiring SNAT with. Must be within the range [0, 31].")
|
fs.Int32Var(o.config.IPTables.MasqueradeBit, "iptables-masquerade-bit", utilpointer.Int32PtrDerefOr(o.config.IPTables.MasqueradeBit, 14), "If using the pure iptables proxy, the bit of the fwmark space to mark packets requiring SNAT with. Must be within the range [0, 31].")
|
||||||
if o.config.Conntrack.Max == nil {
|
|
||||||
o.config.Conntrack.Max = utilpointer.Int32Ptr(0)
|
|
||||||
}
|
|
||||||
fs.Int32Var(o.config.Conntrack.MaxPerCore, "conntrack-max-per-core", *o.config.Conntrack.MaxPerCore,
|
fs.Int32Var(o.config.Conntrack.MaxPerCore, "conntrack-max-per-core", *o.config.Conntrack.MaxPerCore,
|
||||||
"Maximum number of NAT connections to track per CPU core (0 to leave the limit as-is and ignore conntrack-min).")
|
"Maximum number of NAT connections to track per CPU core (0 to leave the limit as-is and ignore conntrack-min).")
|
||||||
fs.Int32Var(o.config.Conntrack.Min, "conntrack-min", *o.config.Conntrack.Min,
|
fs.Int32Var(o.config.Conntrack.Min, "conntrack-min", *o.config.Conntrack.Min,
|
||||||
|
@ -196,10 +193,6 @@ func (o *Options) AddFlags(fs *pflag.FlagSet) {
|
||||||
fs.Float32Var(&o.config.ClientConnection.QPS, "kube-api-qps", o.config.ClientConnection.QPS, "QPS to use while talking with kubernetes apiserver")
|
fs.Float32Var(&o.config.ClientConnection.QPS, "kube-api-qps", o.config.ClientConnection.QPS, "QPS to use while talking with kubernetes apiserver")
|
||||||
|
|
||||||
// All flags below here are deprecated and will eventually be removed.
|
// All flags below here are deprecated and will eventually be removed.
|
||||||
fs.Int32Var(o.config.Conntrack.Max, "conntrack-max", *o.config.Conntrack.Max,
|
|
||||||
"Maximum number of NAT connections to track (0 to leave as-is). This overrides conntrack-max-per-core and conntrack-min.")
|
|
||||||
fs.MarkDeprecated("conntrack-max", "This feature will be removed in a later release.")
|
|
||||||
|
|
||||||
fs.StringVar(&o.config.ResourceContainer, "resource-container", o.config.ResourceContainer, "Absolute name of the resource-only container to create and run the Kube-proxy in (Default: /kube-proxy).")
|
fs.StringVar(&o.config.ResourceContainer, "resource-container", o.config.ResourceContainer, "Absolute name of the resource-only container to create and run the Kube-proxy in (Default: /kube-proxy).")
|
||||||
fs.MarkDeprecated("resource-container", "This feature will be removed in a later release.")
|
fs.MarkDeprecated("resource-container", "This feature will be removed in a later release.")
|
||||||
}
|
}
|
||||||
|
@ -662,13 +655,6 @@ func (s *ProxyServer) birthCry() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func getConntrackMax(config kubeproxyconfig.KubeProxyConntrackConfiguration) (int, error) {
|
func getConntrackMax(config kubeproxyconfig.KubeProxyConntrackConfiguration) (int, error) {
|
||||||
if config.Max != nil && *config.Max > 0 {
|
|
||||||
if config.MaxPerCore != nil && *config.MaxPerCore > 0 {
|
|
||||||
return -1, fmt.Errorf("invalid config: Conntrack Max and Conntrack MaxPerCore are mutually exclusive")
|
|
||||||
}
|
|
||||||
klog.V(3).Infof("getConntrackMax: using absolute conntrack-max (deprecated)")
|
|
||||||
return int(*config.Max), nil
|
|
||||||
}
|
|
||||||
if config.MaxPerCore != nil && *config.MaxPerCore > 0 {
|
if config.MaxPerCore != nil && *config.MaxPerCore > 0 {
|
||||||
floor := 0
|
floor := 0
|
||||||
if config.Min != nil {
|
if config.Min != nil {
|
||||||
|
|
|
@ -110,7 +110,6 @@ func TestGetConntrackMax(t *testing.T) {
|
||||||
ncores := runtime.NumCPU()
|
ncores := runtime.NumCPU()
|
||||||
testCases := []struct {
|
testCases := []struct {
|
||||||
min int32
|
min int32
|
||||||
max int32
|
|
||||||
maxPerCore int32
|
maxPerCore int32
|
||||||
expected int
|
expected int
|
||||||
err string
|
err string
|
||||||
|
@ -118,16 +117,6 @@ func TestGetConntrackMax(t *testing.T) {
|
||||||
{
|
{
|
||||||
expected: 0,
|
expected: 0,
|
||||||
},
|
},
|
||||||
{
|
|
||||||
max: 12345,
|
|
||||||
expected: 12345,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
max: 12345,
|
|
||||||
maxPerCore: 67890,
|
|
||||||
expected: -1,
|
|
||||||
err: "mutually exclusive",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
maxPerCore: 67890, // use this if Max is 0
|
maxPerCore: 67890, // use this if Max is 0
|
||||||
min: 1, // avoid 0 default
|
min: 1, // avoid 0 default
|
||||||
|
@ -148,7 +137,6 @@ func TestGetConntrackMax(t *testing.T) {
|
||||||
for i, tc := range testCases {
|
for i, tc := range testCases {
|
||||||
cfg := kubeproxyconfig.KubeProxyConntrackConfiguration{
|
cfg := kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Min: utilpointer.Int32Ptr(tc.min),
|
Min: utilpointer.Int32Ptr(tc.min),
|
||||||
Max: utilpointer.Int32Ptr(tc.max),
|
|
||||||
MaxPerCore: utilpointer.Int32Ptr(tc.maxPerCore),
|
MaxPerCore: utilpointer.Int32Ptr(tc.maxPerCore),
|
||||||
}
|
}
|
||||||
x, e := getConntrackMax(cfg)
|
x, e := getConntrackMax(cfg)
|
||||||
|
@ -178,7 +166,6 @@ clientConnection:
|
||||||
clusterCIDR: "%s"
|
clusterCIDR: "%s"
|
||||||
configSyncPeriod: 15s
|
configSyncPeriod: 15s
|
||||||
conntrack:
|
conntrack:
|
||||||
max: 4
|
|
||||||
maxPerCore: 2
|
maxPerCore: 2
|
||||||
min: 1
|
min: 1
|
||||||
tcpCloseWaitTimeout: 10s
|
tcpCloseWaitTimeout: 10s
|
||||||
|
@ -293,7 +280,6 @@ nodePortAddresses:
|
||||||
ClusterCIDR: tc.clusterCIDR,
|
ClusterCIDR: tc.clusterCIDR,
|
||||||
ConfigSyncPeriod: metav1.Duration{Duration: 15 * time.Second},
|
ConfigSyncPeriod: metav1.Duration{Duration: 15 * time.Second},
|
||||||
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: utilpointer.Int32Ptr(4),
|
|
||||||
MaxPerCore: utilpointer.Int32Ptr(2),
|
MaxPerCore: utilpointer.Int32Ptr(2),
|
||||||
Min: utilpointer.Int32Ptr(1),
|
Min: utilpointer.Int32Ptr(1),
|
||||||
TCPCloseWaitTimeout: &metav1.Duration{Duration: 10 * time.Second},
|
TCPCloseWaitTimeout: &metav1.Duration{Duration: 10 * time.Second},
|
||||||
|
@ -428,7 +414,6 @@ clientConnection:
|
||||||
clusterCIDR: 10.244.0.0/16
|
clusterCIDR: 10.244.0.0/16
|
||||||
configSyncPeriod: 15m0s
|
configSyncPeriod: 15m0s
|
||||||
conntrack:
|
conntrack:
|
||||||
max: null
|
|
||||||
maxPerCore: 32768
|
maxPerCore: 32768
|
||||||
min: 131072
|
min: 131072
|
||||||
tcpCloseWaitTimeout: 1h0m0s
|
tcpCloseWaitTimeout: 1h0m0s
|
||||||
|
|
|
@ -452,7 +452,6 @@ func TestValidateInitConfiguration(t *testing.T) {
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
},
|
},
|
||||||
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: utilpointer.Int32Ptr(2),
|
|
||||||
MaxPerCore: utilpointer.Int32Ptr(1),
|
MaxPerCore: utilpointer.Int32Ptr(1),
|
||||||
Min: utilpointer.Int32Ptr(1),
|
Min: utilpointer.Int32Ptr(1),
|
||||||
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
@ -499,7 +498,6 @@ func TestValidateInitConfiguration(t *testing.T) {
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
},
|
},
|
||||||
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: utilpointer.Int32Ptr(2),
|
|
||||||
MaxPerCore: utilpointer.Int32Ptr(1),
|
MaxPerCore: utilpointer.Int32Ptr(1),
|
||||||
Min: utilpointer.Int32Ptr(1),
|
Min: utilpointer.Int32Ptr(1),
|
||||||
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
|
|
@ -57,7 +57,6 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
},
|
},
|
||||||
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: utilpointer.Int32Ptr(2),
|
|
||||||
MaxPerCore: utilpointer.Int32Ptr(1),
|
MaxPerCore: utilpointer.Int32Ptr(1),
|
||||||
Min: utilpointer.Int32Ptr(1),
|
Min: utilpointer.Int32Ptr(1),
|
||||||
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
@ -90,7 +89,6 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
},
|
},
|
||||||
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: utilpointer.Int32Ptr(2),
|
|
||||||
MaxPerCore: utilpointer.Int32Ptr(1),
|
MaxPerCore: utilpointer.Int32Ptr(1),
|
||||||
Min: utilpointer.Int32Ptr(1),
|
Min: utilpointer.Int32Ptr(1),
|
||||||
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
@ -124,7 +122,6 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
},
|
},
|
||||||
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: utilpointer.Int32Ptr(2),
|
|
||||||
MaxPerCore: utilpointer.Int32Ptr(1),
|
MaxPerCore: utilpointer.Int32Ptr(1),
|
||||||
Min: utilpointer.Int32Ptr(1),
|
Min: utilpointer.Int32Ptr(1),
|
||||||
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
@ -158,7 +155,6 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
},
|
},
|
||||||
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: utilpointer.Int32Ptr(2),
|
|
||||||
MaxPerCore: utilpointer.Int32Ptr(1),
|
MaxPerCore: utilpointer.Int32Ptr(1),
|
||||||
Min: utilpointer.Int32Ptr(1),
|
Min: utilpointer.Int32Ptr(1),
|
||||||
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
@ -192,7 +188,6 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
},
|
},
|
||||||
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: utilpointer.Int32Ptr(2),
|
|
||||||
MaxPerCore: utilpointer.Int32Ptr(1),
|
MaxPerCore: utilpointer.Int32Ptr(1),
|
||||||
Min: utilpointer.Int32Ptr(1),
|
Min: utilpointer.Int32Ptr(1),
|
||||||
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
@ -226,7 +221,6 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
},
|
},
|
||||||
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: utilpointer.Int32Ptr(2),
|
|
||||||
MaxPerCore: utilpointer.Int32Ptr(1),
|
MaxPerCore: utilpointer.Int32Ptr(1),
|
||||||
Min: utilpointer.Int32Ptr(1),
|
Min: utilpointer.Int32Ptr(1),
|
||||||
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
@ -260,7 +254,6 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
},
|
},
|
||||||
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: utilpointer.Int32Ptr(2),
|
|
||||||
MaxPerCore: utilpointer.Int32Ptr(1),
|
MaxPerCore: utilpointer.Int32Ptr(1),
|
||||||
Min: utilpointer.Int32Ptr(1),
|
Min: utilpointer.Int32Ptr(1),
|
||||||
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
|
|
@ -211,7 +211,6 @@ func TestEnsureProxyAddon(t *testing.T) {
|
||||||
HealthzBindAddress: "0.0.0.0:10256",
|
HealthzBindAddress: "0.0.0.0:10256",
|
||||||
MetricsBindAddress: "127.0.0.1:10249",
|
MetricsBindAddress: "127.0.0.1:10249",
|
||||||
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: pointer.Int32Ptr(2),
|
|
||||||
MaxPerCore: pointer.Int32Ptr(1),
|
MaxPerCore: pointer.Int32Ptr(1),
|
||||||
Min: pointer.Int32Ptr(1),
|
Min: pointer.Int32Ptr(1),
|
||||||
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
|
|
@ -39,7 +39,6 @@ ComponentConfigs:
|
||||||
ClusterCIDR: ""
|
ClusterCIDR: ""
|
||||||
ConfigSyncPeriod: 15m0s
|
ConfigSyncPeriod: 15m0s
|
||||||
Conntrack:
|
Conntrack:
|
||||||
Max: null
|
|
||||||
MaxPerCore: 32768
|
MaxPerCore: 32768
|
||||||
Min: 131072
|
Min: 131072
|
||||||
TCPCloseWaitTimeout: 1h0m0s
|
TCPCloseWaitTimeout: 1h0m0s
|
||||||
|
|
|
@ -39,7 +39,6 @@ ComponentConfigs:
|
||||||
ClusterCIDR: ""
|
ClusterCIDR: ""
|
||||||
ConfigSyncPeriod: 15m0s
|
ConfigSyncPeriod: 15m0s
|
||||||
Conntrack:
|
Conntrack:
|
||||||
Max: null
|
|
||||||
MaxPerCore: 32768
|
MaxPerCore: 32768
|
||||||
Min: 131072
|
Min: 131072
|
||||||
TCPCloseWaitTimeout: 1h0m0s
|
TCPCloseWaitTimeout: 1h0m0s
|
||||||
|
|
|
@ -61,7 +61,6 @@ clientConnection:
|
||||||
clusterCIDR: ""
|
clusterCIDR: ""
|
||||||
configSyncPeriod: 15m0s
|
configSyncPeriod: 15m0s
|
||||||
conntrack:
|
conntrack:
|
||||||
max: null
|
|
||||||
maxPerCore: 32768
|
maxPerCore: 32768
|
||||||
min: 131072
|
min: 131072
|
||||||
tcpCloseWaitTimeout: 1h0m0s
|
tcpCloseWaitTimeout: 1h0m0s
|
||||||
|
|
|
@ -61,7 +61,6 @@ clientConnection:
|
||||||
clusterCIDR: ""
|
clusterCIDR: ""
|
||||||
configSyncPeriod: 15m0s
|
configSyncPeriod: 15m0s
|
||||||
conntrack:
|
conntrack:
|
||||||
max: null
|
|
||||||
maxPerCore: 32768
|
maxPerCore: 32768
|
||||||
min: 131072
|
min: 131072
|
||||||
tcpCloseWaitTimeout: 1h0m0s
|
tcpCloseWaitTimeout: 1h0m0s
|
||||||
|
|
|
@ -50,7 +50,6 @@ clientConnection:
|
||||||
clusterCIDR: 10.148.0.0/16
|
clusterCIDR: 10.148.0.0/16
|
||||||
configSyncPeriod: 15m0s
|
configSyncPeriod: 15m0s
|
||||||
conntrack:
|
conntrack:
|
||||||
max: null
|
|
||||||
maxPerCore: 32768
|
maxPerCore: 32768
|
||||||
min: 131072
|
min: 131072
|
||||||
tcpCloseWaitTimeout: 1h0m0s
|
tcpCloseWaitTimeout: 1h0m0s
|
||||||
|
|
|
@ -50,7 +50,6 @@ clientConnection:
|
||||||
clusterCIDR: 10.148.0.0/16
|
clusterCIDR: 10.148.0.0/16
|
||||||
configSyncPeriod: 15m0s
|
configSyncPeriod: 15m0s
|
||||||
conntrack:
|
conntrack:
|
||||||
max: null
|
|
||||||
maxPerCore: 32768
|
maxPerCore: 32768
|
||||||
min: 131072
|
min: 131072
|
||||||
tcpCloseWaitTimeout: 1h0m0s
|
tcpCloseWaitTimeout: 1h0m0s
|
||||||
|
|
|
@ -63,9 +63,6 @@ type KubeProxyIPVSConfiguration struct {
|
||||||
// KubeProxyConntrackConfiguration contains conntrack settings for
|
// KubeProxyConntrackConfiguration contains conntrack settings for
|
||||||
// the Kubernetes proxy server.
|
// the Kubernetes proxy server.
|
||||||
type KubeProxyConntrackConfiguration struct {
|
type KubeProxyConntrackConfiguration struct {
|
||||||
// max is the maximum number of NAT connections to track (0 to
|
|
||||||
// leave as-is). This takes precedence over maxPerCore and min.
|
|
||||||
Max *int32
|
|
||||||
// maxPerCore is the maximum number of NAT connections to track
|
// maxPerCore is the maximum number of NAT connections to track
|
||||||
// per CPU core (0 to leave the limit as-is and ignore min).
|
// per CPU core (0 to leave the limit as-is and ignore min).
|
||||||
MaxPerCore *int32
|
MaxPerCore *int32
|
||||||
|
|
|
@ -71,16 +71,14 @@ func SetDefaults_KubeProxyConfiguration(obj *kubeproxyconfigv1alpha1.KubeProxyCo
|
||||||
if obj.UDPIdleTimeout == zero {
|
if obj.UDPIdleTimeout == zero {
|
||||||
obj.UDPIdleTimeout = metav1.Duration{Duration: 250 * time.Millisecond}
|
obj.UDPIdleTimeout = metav1.Duration{Duration: 250 * time.Millisecond}
|
||||||
}
|
}
|
||||||
// If ConntrackMax is set, respect it.
|
|
||||||
if obj.Conntrack.Max == nil {
|
if obj.Conntrack.MaxPerCore == nil {
|
||||||
// If ConntrackMax is *not* set, use per-core scaling.
|
obj.Conntrack.MaxPerCore = pointer.Int32Ptr(32 * 1024)
|
||||||
if obj.Conntrack.MaxPerCore == nil {
|
|
||||||
obj.Conntrack.MaxPerCore = pointer.Int32Ptr(32 * 1024)
|
|
||||||
}
|
|
||||||
if obj.Conntrack.Min == nil {
|
|
||||||
obj.Conntrack.Min = pointer.Int32Ptr(128 * 1024)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
if obj.Conntrack.Min == nil {
|
||||||
|
obj.Conntrack.Min = pointer.Int32Ptr(128 * 1024)
|
||||||
|
}
|
||||||
|
|
||||||
if obj.IPTables.MasqueradeBit == nil {
|
if obj.IPTables.MasqueradeBit == nil {
|
||||||
temp := int32(14)
|
temp := int32(14)
|
||||||
obj.IPTables.MasqueradeBit = &temp
|
obj.IPTables.MasqueradeBit = &temp
|
||||||
|
|
|
@ -168,7 +168,6 @@ func Convert_config_KubeProxyConfiguration_To_v1alpha1_KubeProxyConfiguration(in
|
||||||
}
|
}
|
||||||
|
|
||||||
func autoConvert_v1alpha1_KubeProxyConntrackConfiguration_To_config_KubeProxyConntrackConfiguration(in *v1alpha1.KubeProxyConntrackConfiguration, out *config.KubeProxyConntrackConfiguration, s conversion.Scope) error {
|
func autoConvert_v1alpha1_KubeProxyConntrackConfiguration_To_config_KubeProxyConntrackConfiguration(in *v1alpha1.KubeProxyConntrackConfiguration, out *config.KubeProxyConntrackConfiguration, s conversion.Scope) error {
|
||||||
out.Max = (*int32)(unsafe.Pointer(in.Max))
|
|
||||||
out.MaxPerCore = (*int32)(unsafe.Pointer(in.MaxPerCore))
|
out.MaxPerCore = (*int32)(unsafe.Pointer(in.MaxPerCore))
|
||||||
out.Min = (*int32)(unsafe.Pointer(in.Min))
|
out.Min = (*int32)(unsafe.Pointer(in.Min))
|
||||||
out.TCPEstablishedTimeout = (*v1.Duration)(unsafe.Pointer(in.TCPEstablishedTimeout))
|
out.TCPEstablishedTimeout = (*v1.Duration)(unsafe.Pointer(in.TCPEstablishedTimeout))
|
||||||
|
@ -182,7 +181,6 @@ func Convert_v1alpha1_KubeProxyConntrackConfiguration_To_config_KubeProxyConntra
|
||||||
}
|
}
|
||||||
|
|
||||||
func autoConvert_config_KubeProxyConntrackConfiguration_To_v1alpha1_KubeProxyConntrackConfiguration(in *config.KubeProxyConntrackConfiguration, out *v1alpha1.KubeProxyConntrackConfiguration, s conversion.Scope) error {
|
func autoConvert_config_KubeProxyConntrackConfiguration_To_v1alpha1_KubeProxyConntrackConfiguration(in *config.KubeProxyConntrackConfiguration, out *v1alpha1.KubeProxyConntrackConfiguration, s conversion.Scope) error {
|
||||||
out.Max = (*int32)(unsafe.Pointer(in.Max))
|
|
||||||
out.MaxPerCore = (*int32)(unsafe.Pointer(in.MaxPerCore))
|
out.MaxPerCore = (*int32)(unsafe.Pointer(in.MaxPerCore))
|
||||||
out.Min = (*int32)(unsafe.Pointer(in.Min))
|
out.Min = (*int32)(unsafe.Pointer(in.Min))
|
||||||
out.TCPEstablishedTimeout = (*v1.Duration)(unsafe.Pointer(in.TCPEstablishedTimeout))
|
out.TCPEstablishedTimeout = (*v1.Duration)(unsafe.Pointer(in.TCPEstablishedTimeout))
|
||||||
|
|
|
@ -127,10 +127,6 @@ func validateKubeProxyIPVSConfiguration(config kubeproxyconfig.KubeProxyIPVSConf
|
||||||
func validateKubeProxyConntrackConfiguration(config kubeproxyconfig.KubeProxyConntrackConfiguration, fldPath *field.Path) field.ErrorList {
|
func validateKubeProxyConntrackConfiguration(config kubeproxyconfig.KubeProxyConntrackConfiguration, fldPath *field.Path) field.ErrorList {
|
||||||
allErrs := field.ErrorList{}
|
allErrs := field.ErrorList{}
|
||||||
|
|
||||||
if config.Max != nil && *config.Max < 0 {
|
|
||||||
allErrs = append(allErrs, field.Invalid(fldPath.Child("Max"), config.Max, "must be greater than or equal to 0"))
|
|
||||||
}
|
|
||||||
|
|
||||||
if config.MaxPerCore != nil && *config.MaxPerCore < 0 {
|
if config.MaxPerCore != nil && *config.MaxPerCore < 0 {
|
||||||
allErrs = append(allErrs, field.Invalid(fldPath.Child("MaxPerCore"), config.MaxPerCore, "must be greater than or equal to 0"))
|
allErrs = append(allErrs, field.Invalid(fldPath.Child("MaxPerCore"), config.MaxPerCore, "must be greater than or equal to 0"))
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,7 +56,6 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
|
||||||
},
|
},
|
||||||
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: pointer.Int32Ptr(2),
|
|
||||||
MaxPerCore: pointer.Int32Ptr(1),
|
MaxPerCore: pointer.Int32Ptr(1),
|
||||||
Min: pointer.Int32Ptr(1),
|
Min: pointer.Int32Ptr(1),
|
||||||
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
@ -76,7 +75,6 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
||||||
},
|
},
|
||||||
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: pointer.Int32Ptr(2),
|
|
||||||
MaxPerCore: pointer.Int32Ptr(1),
|
MaxPerCore: pointer.Int32Ptr(1),
|
||||||
Min: pointer.Int32Ptr(1),
|
Min: pointer.Int32Ptr(1),
|
||||||
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
@ -96,7 +94,6 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
||||||
},
|
},
|
||||||
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: pointer.Int32Ptr(2),
|
|
||||||
MaxPerCore: pointer.Int32Ptr(1),
|
MaxPerCore: pointer.Int32Ptr(1),
|
||||||
Min: pointer.Int32Ptr(1),
|
Min: pointer.Int32Ptr(1),
|
||||||
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
@ -130,7 +127,6 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
||||||
},
|
},
|
||||||
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: pointer.Int32Ptr(2),
|
|
||||||
MaxPerCore: pointer.Int32Ptr(1),
|
MaxPerCore: pointer.Int32Ptr(1),
|
||||||
Min: pointer.Int32Ptr(1),
|
Min: pointer.Int32Ptr(1),
|
||||||
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
@ -154,7 +150,6 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
||||||
},
|
},
|
||||||
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: pointer.Int32Ptr(2),
|
|
||||||
MaxPerCore: pointer.Int32Ptr(1),
|
MaxPerCore: pointer.Int32Ptr(1),
|
||||||
Min: pointer.Int32Ptr(1),
|
Min: pointer.Int32Ptr(1),
|
||||||
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
@ -178,7 +173,6 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
||||||
},
|
},
|
||||||
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: pointer.Int32Ptr(2),
|
|
||||||
MaxPerCore: pointer.Int32Ptr(1),
|
MaxPerCore: pointer.Int32Ptr(1),
|
||||||
Min: pointer.Int32Ptr(1),
|
Min: pointer.Int32Ptr(1),
|
||||||
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
@ -202,7 +196,6 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
||||||
},
|
},
|
||||||
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: pointer.Int32Ptr(2),
|
|
||||||
MaxPerCore: pointer.Int32Ptr(1),
|
MaxPerCore: pointer.Int32Ptr(1),
|
||||||
Min: pointer.Int32Ptr(1),
|
Min: pointer.Int32Ptr(1),
|
||||||
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
@ -226,7 +219,6 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
||||||
},
|
},
|
||||||
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: pointer.Int32Ptr(2),
|
|
||||||
MaxPerCore: pointer.Int32Ptr(1),
|
MaxPerCore: pointer.Int32Ptr(1),
|
||||||
Min: pointer.Int32Ptr(1),
|
Min: pointer.Int32Ptr(1),
|
||||||
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
@ -250,7 +242,6 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
||||||
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
|
||||||
},
|
},
|
||||||
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: pointer.Int32Ptr(2),
|
|
||||||
MaxPerCore: pointer.Int32Ptr(1),
|
MaxPerCore: pointer.Int32Ptr(1),
|
||||||
Min: pointer.Int32Ptr(1),
|
Min: pointer.Int32Ptr(1),
|
||||||
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
@ -275,7 +266,6 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
|
||||||
// not specifying valid period in IPVS mode.
|
// not specifying valid period in IPVS mode.
|
||||||
Mode: kubeproxyconfig.ProxyModeIPVS,
|
Mode: kubeproxyconfig.ProxyModeIPVS,
|
||||||
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: pointer.Int32Ptr(2),
|
|
||||||
MaxPerCore: pointer.Int32Ptr(1),
|
MaxPerCore: pointer.Int32Ptr(1),
|
||||||
Min: pointer.Int32Ptr(1),
|
Min: pointer.Int32Ptr(1),
|
||||||
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
@ -448,14 +438,12 @@ func TestValidateKubeProxyIPVSConfiguration(t *testing.T) {
|
||||||
func TestValidateKubeProxyConntrackConfiguration(t *testing.T) {
|
func TestValidateKubeProxyConntrackConfiguration(t *testing.T) {
|
||||||
successCases := []kubeproxyconfig.KubeProxyConntrackConfiguration{
|
successCases := []kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
{
|
{
|
||||||
Max: pointer.Int32Ptr(2),
|
|
||||||
MaxPerCore: pointer.Int32Ptr(1),
|
MaxPerCore: pointer.Int32Ptr(1),
|
||||||
Min: pointer.Int32Ptr(1),
|
Min: pointer.Int32Ptr(1),
|
||||||
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
TCPCloseWaitTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
TCPCloseWaitTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Max: pointer.Int32Ptr(0),
|
|
||||||
MaxPerCore: pointer.Int32Ptr(0),
|
MaxPerCore: pointer.Int32Ptr(0),
|
||||||
Min: pointer.Int32Ptr(0),
|
Min: pointer.Int32Ptr(0),
|
||||||
TCPEstablishedTimeout: &metav1.Duration{Duration: 0 * time.Second},
|
TCPEstablishedTimeout: &metav1.Duration{Duration: 0 * time.Second},
|
||||||
|
@ -475,17 +463,6 @@ func TestValidateKubeProxyConntrackConfiguration(t *testing.T) {
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
config: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
config: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: pointer.Int32Ptr(-1),
|
|
||||||
MaxPerCore: pointer.Int32Ptr(1),
|
|
||||||
Min: pointer.Int32Ptr(1),
|
|
||||||
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
|
||||||
TCPCloseWaitTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
|
||||||
},
|
|
||||||
msg: "must be greater than or equal to 0",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
config: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
|
||||||
Max: pointer.Int32Ptr(2),
|
|
||||||
MaxPerCore: pointer.Int32Ptr(-1),
|
MaxPerCore: pointer.Int32Ptr(-1),
|
||||||
Min: pointer.Int32Ptr(1),
|
Min: pointer.Int32Ptr(1),
|
||||||
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
@ -495,7 +472,6 @@ func TestValidateKubeProxyConntrackConfiguration(t *testing.T) {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
config: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
config: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: pointer.Int32Ptr(2),
|
|
||||||
MaxPerCore: pointer.Int32Ptr(1),
|
MaxPerCore: pointer.Int32Ptr(1),
|
||||||
Min: pointer.Int32Ptr(-1),
|
Min: pointer.Int32Ptr(-1),
|
||||||
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
@ -505,7 +481,6 @@ func TestValidateKubeProxyConntrackConfiguration(t *testing.T) {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
config: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
config: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: pointer.Int32Ptr(4),
|
|
||||||
MaxPerCore: pointer.Int32Ptr(1),
|
MaxPerCore: pointer.Int32Ptr(1),
|
||||||
Min: pointer.Int32Ptr(3),
|
Min: pointer.Int32Ptr(3),
|
||||||
TCPEstablishedTimeout: &metav1.Duration{Duration: -5 * time.Second},
|
TCPEstablishedTimeout: &metav1.Duration{Duration: -5 * time.Second},
|
||||||
|
@ -515,7 +490,6 @@ func TestValidateKubeProxyConntrackConfiguration(t *testing.T) {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
config: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
config: kubeproxyconfig.KubeProxyConntrackConfiguration{
|
||||||
Max: pointer.Int32Ptr(4),
|
|
||||||
MaxPerCore: pointer.Int32Ptr(1),
|
MaxPerCore: pointer.Int32Ptr(1),
|
||||||
Min: pointer.Int32Ptr(3),
|
Min: pointer.Int32Ptr(3),
|
||||||
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
|
||||||
|
|
|
@ -99,11 +99,6 @@ func (in *KubeProxyConfiguration) DeepCopyObject() runtime.Object {
|
||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *KubeProxyConntrackConfiguration) DeepCopyInto(out *KubeProxyConntrackConfiguration) {
|
func (in *KubeProxyConntrackConfiguration) DeepCopyInto(out *KubeProxyConntrackConfiguration) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.Max != nil {
|
|
||||||
in, out := &in.Max, &out.Max
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
if in.MaxPerCore != nil {
|
if in.MaxPerCore != nil {
|
||||||
in, out := &in.MaxPerCore, &out.MaxPerCore
|
in, out := &in.MaxPerCore, &out.MaxPerCore
|
||||||
*out = new(int32)
|
*out = new(int32)
|
||||||
|
|
|
@ -59,9 +59,6 @@ type KubeProxyIPVSConfiguration struct {
|
||||||
// KubeProxyConntrackConfiguration contains conntrack settings for
|
// KubeProxyConntrackConfiguration contains conntrack settings for
|
||||||
// the Kubernetes proxy server.
|
// the Kubernetes proxy server.
|
||||||
type KubeProxyConntrackConfiguration struct {
|
type KubeProxyConntrackConfiguration struct {
|
||||||
// max is the maximum number of NAT connections to track (0 to
|
|
||||||
// leave as-is). This takes precedence over maxPerCore and min.
|
|
||||||
Max *int32 `json:"max"`
|
|
||||||
// maxPerCore is the maximum number of NAT connections to track
|
// maxPerCore is the maximum number of NAT connections to track
|
||||||
// per CPU core (0 to leave the limit as-is and ignore min).
|
// per CPU core (0 to leave the limit as-is and ignore min).
|
||||||
MaxPerCore *int32 `json:"maxPerCore"`
|
MaxPerCore *int32 `json:"maxPerCore"`
|
||||||
|
|
|
@ -77,11 +77,6 @@ func (in *KubeProxyConfiguration) DeepCopyObject() runtime.Object {
|
||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *KubeProxyConntrackConfiguration) DeepCopyInto(out *KubeProxyConntrackConfiguration) {
|
func (in *KubeProxyConntrackConfiguration) DeepCopyInto(out *KubeProxyConntrackConfiguration) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.Max != nil {
|
|
||||||
in, out := &in.Max, &out.Max
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
if in.MaxPerCore != nil {
|
if in.MaxPerCore != nil {
|
||||||
in, out := &in.MaxPerCore, &out.MaxPerCore
|
in, out := &in.MaxPerCore, &out.MaxPerCore
|
||||||
*out = new(int32)
|
*out = new(int32)
|
||||||
|
|
Loading…
Reference in New Issue