Skip to content

Commit ab190db

Browse files
committed
MEDIUM: configuration: add HAProxy 3.4 global tune options
1 parent ad313b8 commit ab190db

22 files changed

Lines changed: 325 additions & 8 deletions

config-parser/section-parsers.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,9 @@ func (p *configParser) getGlobalParser() *Parsers { //nolint: maintidx
282282
addParser(parser, &sequence, &simple.Number{Name: "tune.buffers.limit"})
283283
addParser(parser, &sequence, &simple.Number{Name: "tune.buffers.reserve"})
284284
addParser(parser, &sequence, &simple.Size{Name: "tune.bufsize"})
285+
addParser(parser, &sequence, &simple.Size{Name: "tune.bufsize.large"})
285286
addParser(parser, &sequence, &simple.Size{Name: "tune.bufsize.small"})
287+
addParser(parser, &sequence, &simple.Size{Name: "tune.cli.max-payload-size"})
286288
addParser(parser, &sequence, &simple.Number{Name: "tune.comp.maxlevel"})
287289
addParser(parser, &sequence, &simple.Enabled{Name: "tune.defaults.purge"})
288290
addParser(parser, &sequence, &simple.Enabled{Name: "tune.disable-zero-copy-forwarding"})
@@ -299,14 +301,18 @@ func (p *configParser) getGlobalParser() *Parsers { //nolint: maintidx
299301
addParser(parser, &sequence, &simple.Number{Name: "tune.h2.be.glitches-threshold"})
300302
addParser(parser, &sequence, &simple.Number{Name: "tune.h2.be.initial-window-size"})
301303
addParser(parser, &sequence, &simple.Number{Name: "tune.h2.be.max-concurrent-streams"})
304+
addParser(parser, &sequence, &simple.Number{Name: "tune.h2.be.max-frames-at-once"})
302305
addParser(parser, &sequence, &simple.Size{Name: "tune.h2.be.rxbuf"})
303306
addParser(parser, &sequence, &simple.Number{Name: "tune.h2.fe.glitches-threshold"})
304307
addParser(parser, &sequence, &simple.Number{Name: "tune.h2.fe.initial-window-size"})
305308
addParser(parser, &sequence, &simple.Number{Name: "tune.h2.fe.max-concurrent-streams"})
309+
addParser(parser, &sequence, &simple.Number{Name: "tune.h2.fe.max-frames-at-once"})
310+
addParser(parser, &sequence, &simple.Number{Name: "tune.h2.fe.max-rst-at-once"})
306311
addParser(parser, &sequence, &simple.Number{Name: "tune.h2.fe.max-total-streams"})
307312
addParser(parser, &sequence, &simple.Size{Name: "tune.h2.fe.rxbuf"})
308313
addParser(parser, &sequence, &simple.Number{Name: "tune.h2.header-table-size"})
309314
addParser(parser, &sequence, &simple.Number{Name: "tune.h2.initial-window-size"})
315+
addParser(parser, &sequence, &simple.Word{Name: "tune.h2.log-errors"})
310316
addParser(parser, &sequence, &simple.Number{Name: "tune.h2.max-concurrent-streams"})
311317
addParser(parser, &sequence, &simple.Number{Name: "tune.h2.max-frame-size"})
312318
addParser(parser, &sequence, &simple.OnOff{Name: "tune.h2.zero-copy-fwd-send"})
@@ -320,6 +326,7 @@ func (p *configParser) getGlobalParser() *Parsers { //nolint: maintidx
320326
addParser(parser, &sequence, &simple.Word{Name: "tune.lua.bool-sample-conversion"})
321327
addParser(parser, &sequence, &simple.Number{Name: "tune.lua.forced-yield"})
322328
addParser(parser, &sequence, &simple.Number{Name: "tune.lua.maxmem"})
329+
addParser(parser, &sequence, &simple.Word{Name: "tune.lua.openlibs"})
323330
addParser(parser, &sequence, &simple.Time{Name: "tune.lua.session-timeout"})
324331
addParser(parser, &sequence, &simple.Time{Name: "tune.lua.burst-timeout"})
325332
addParser(parser, &sequence, &simple.Time{Name: "tune.lua.task-timeout"})
@@ -372,6 +379,7 @@ func (p *configParser) getGlobalParser() *Parsers { //nolint: maintidx
372379
addParser(parser, &sequence, &simple.Size{Name: "tune.vars.reqres-max-size"})
373380
addParser(parser, &sequence, &simple.Size{Name: "tune.vars.sess-max-size"})
374381
addParser(parser, &sequence, &simple.Size{Name: "tune.vars.txn-max-size"})
382+
addParser(parser, &sequence, &simple.Number{Name: "tune.quic.fe.stream.max-total"})
375383
addParser(parser, &sequence, &simple.Number{Name: "tune.quic.frontend.conn-tx-buffers.limit"})
376384
addParser(parser, &sequence, &simple.Time{Name: "tune.quic.frontend.max-idle-timeout"})
377385
addParser(parser, &sequence, &simple.Number{Name: "tune.quic.frontend.max-streams-bidi"})

configuration/global.go

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1276,6 +1276,15 @@ func parseTuneOptions(p parser.Parser) (*models.TuneOptions, error) { //nolint:g
12761276
options.AppletZeroCopyForwarding = strOption
12771277
}
12781278

1279+
intPOption, err = parseSizeOption(p, "tune.cli.max-payload-size")
1280+
if err != nil {
1281+
return nil, err
1282+
}
1283+
if intPOption != nil {
1284+
isEmpty = false
1285+
options.CliMaxPayloadSize = intPOption
1286+
}
1287+
12791288
intOption, err = parseInt64Option(p, "tune.comp.maxlevel")
12801289
if err != nil {
12811290
return nil, err
@@ -1656,6 +1665,15 @@ func parseTuneOptions(p parser.Parser) (*models.TuneOptions, error) { //nolint:g
16561665
options.H2BeMaxConcurrentStreams = intOption
16571666
}
16581667

1668+
intOption, err = parseInt64Option(p, "tune.h2.be.max-frames-at-once")
1669+
if err != nil {
1670+
return nil, err
1671+
}
1672+
if intOption != 0 {
1673+
isEmpty = false
1674+
options.H2BeMaxFramesAtOnce = intOption
1675+
}
1676+
16591677
intPOption, err = parseSizeOption(p, "tune.h2.be.rxbuf")
16601678
if err != nil {
16611679
return nil, err
@@ -1692,6 +1710,24 @@ func parseTuneOptions(p parser.Parser) (*models.TuneOptions, error) { //nolint:g
16921710
options.H2FeMaxConcurrentStreams = intOption
16931711
}
16941712

1713+
intOption, err = parseInt64Option(p, "tune.h2.fe.max-frames-at-once")
1714+
if err != nil {
1715+
return nil, err
1716+
}
1717+
if intOption != 0 {
1718+
isEmpty = false
1719+
options.H2FeMaxFramesAtOnce = intOption
1720+
}
1721+
1722+
intOption, err = parseInt64Option(p, "tune.h2.fe.max-rst-at-once")
1723+
if err != nil {
1724+
return nil, err
1725+
}
1726+
if intOption != 0 {
1727+
isEmpty = false
1728+
options.H2FeMaxRstAtOnce = intOption
1729+
}
1730+
16951731
intPOption, err = parseInt64POption(p, "tune.h2.fe.max-total-streams")
16961732
if err != nil {
16971733
return nil, err
@@ -1710,6 +1746,15 @@ func parseTuneOptions(p parser.Parser) (*models.TuneOptions, error) { //nolint:g
17101746
options.H2FeRxbuf = intPOption
17111747
}
17121748

1749+
strOption, err = parseStringOption(p, "tune.h2.log-errors")
1750+
if err != nil {
1751+
return nil, err
1752+
}
1753+
if strOption != "" {
1754+
isEmpty = false
1755+
options.H2LogErrors = strOption
1756+
}
1757+
17131758
strOption, err = parseOnOffOption(p, "tune.h2.zero-copy-fwd-send")
17141759
if err != nil {
17151760
return nil, err
@@ -1801,6 +1846,15 @@ func parseTuneBufferOptions(p parser.Parser) (*models.TuneBufferOptions, error)
18011846
options.Bufsize = *intPOption
18021847
}
18031848

1849+
intPOption, err = parseSizeOption(p, "tune.bufsize.large")
1850+
if err != nil {
1851+
return nil, err
1852+
}
1853+
if intPOption != nil {
1854+
isEmpty = false
1855+
options.BufsizeLarge = intPOption
1856+
}
1857+
18041858
intPOption, err = parseSizeOption(p, "tune.bufsize.small")
18051859
if err != nil {
18061860
return nil, err
@@ -1941,6 +1995,15 @@ func parseTuneLuaOptions(p parser.Parser) (*models.TuneLuaOptions, error) {
19411995
isEmpty = false
19421996
}
19431997

1998+
strOption, err = parseStringOption(p, "tune.lua.openlibs")
1999+
if err != nil {
2000+
return nil, err
2001+
}
2002+
if strOption != "" {
2003+
options.Openlibs = strOption
2004+
isEmpty = false
2005+
}
2006+
19442007
strOption, err = parseOnOffOption(p, "tune.lua.log.loggers")
19452008
if err != nil {
19462009
return nil, err
@@ -2023,6 +2086,15 @@ func parseTuneQuicOptions(p parser.Parser) (*models.TuneQuicOptions, error) {
20232086
options.FrontendMaxIdleTimeout = intPOption
20242087
}
20252088

2089+
intPOption, err = parseInt64POption(p, "tune.quic.fe.stream.max-total")
2090+
if err != nil {
2091+
return nil, err
2092+
}
2093+
if intPOption != nil {
2094+
isEmpty = false
2095+
options.FrontendStreamMaxTotal = intPOption
2096+
}
2097+
20262098
intPOption, err = parseInt64POption(p, "tune.quic.frontend.max-streams-bidi")
20272099
if err != nil {
20282100
return nil, err
@@ -3697,6 +3769,9 @@ func serializeTuneBufferOptions(p parser.Parser, options *models.TuneBufferOptio
36973769
if err := serializeSizeOption(p, "tune.bufsize", &options.Bufsize); err != nil {
36983770
return err
36993771
}
3772+
if err := serializeSizeOption(p, "tune.bufsize.large", options.BufsizeLarge); err != nil {
3773+
return err
3774+
}
37003775
if err := serializeSizeOption(p, "tune.bufsize.small", options.BufsizeSmall); err != nil {
37013776
return err
37023777
}
@@ -3752,6 +3827,9 @@ func serializeTuneLuaOptions(p parser.Parser, options *models.TuneLuaOptions, co
37523827
if err := serializeInt64POption(p, "tune.lua.maxmem", options.Maxmem); err != nil {
37533828
return err
37543829
}
3830+
if err := serializeStringOption(p, "tune.lua.openlibs", options.Openlibs); err != nil {
3831+
return err
3832+
}
37553833
if err := serializeTimeoutOption(p, "tune.lua.service-timeout", options.ServiceTimeout, configOptions); err != nil {
37563834
return err
37573835
}
@@ -3771,6 +3849,9 @@ func serializeTuneQuicOptions(p parser.Parser, options *models.TuneQuicOptions,
37713849
if err := serializeTimeoutOption(p, "tune.quic.frontend.max-idle-timeout", options.FrontendMaxIdleTimeout, configOptions); err != nil {
37723850
return err
37733851
}
3852+
if err := serializeInt64POption(p, "tune.quic.fe.stream.max-total", options.FrontendStreamMaxTotal); err != nil {
3853+
return err
3854+
}
37743855
if err := serializeInt64POption(p, "tune.quic.frontend.max-streams-bidi", options.FrontendMaxStreamsBidi); err != nil {
37753856
return err
37763857
}
@@ -3869,6 +3950,9 @@ func serializeTuneOptions(p parser.Parser, options *models.TuneOptions, configOp
38693950
if err := serializeOnOffOption(p, "tune.applet.zero-copy-forwarding", options.AppletZeroCopyForwarding); err != nil {
38703951
return err
38713952
}
3953+
if err := serializeSizeOption(p, "tune.cli.max-payload-size", options.CliMaxPayloadSize); err != nil {
3954+
return err
3955+
}
38723956
if err := serializeInt64Option(p, "tune.comp.maxlevel", options.CompMaxlevel); err != nil {
38733957
return err
38743958
}
@@ -3995,6 +4079,9 @@ func serializeTuneOptions(p parser.Parser, options *models.TuneOptions, configOp
39954079
if err := serializeInt64Option(p, "tune.h2.be.max-concurrent-streams", options.H2BeMaxConcurrentStreams); err != nil {
39964080
return err
39974081
}
4082+
if err := serializeInt64Option(p, "tune.h2.be.max-frames-at-once", options.H2BeMaxFramesAtOnce); err != nil {
4083+
return err
4084+
}
39984085
if err := serializeSizeOption(p, "tune.h2.be.rxbuf", options.H2BeRxbuf); err != nil {
39994086
return err
40004087
}
@@ -4007,12 +4094,21 @@ func serializeTuneOptions(p parser.Parser, options *models.TuneOptions, configOp
40074094
if err := serializeInt64Option(p, "tune.h2.fe.max-concurrent-streams", options.H2FeMaxConcurrentStreams); err != nil {
40084095
return err
40094096
}
4097+
if err := serializeInt64Option(p, "tune.h2.fe.max-frames-at-once", options.H2FeMaxFramesAtOnce); err != nil {
4098+
return err
4099+
}
4100+
if err := serializeInt64Option(p, "tune.h2.fe.max-rst-at-once", options.H2FeMaxRstAtOnce); err != nil {
4101+
return err
4102+
}
40104103
if err := serializeInt64POption(p, "tune.h2.fe.max-total-streams", options.H2FeMaxTotalStreams); err != nil {
40114104
return err
40124105
}
40134106
if err := serializeSizeOption(p, "tune.h2.fe.rxbuf", options.H2FeRxbuf); err != nil {
40144107
return err
40154108
}
4109+
if err := serializeStringOption(p, "tune.h2.log-errors", options.H2LogErrors); err != nil {
4110+
return err
4111+
}
40164112
if err := serializeOnOffOption(p, "tune.h2.zero-copy-fwd-send", options.H2ZeroCopyFwdSend); err != nil {
40174113
return err
40184114
}

models/tune_buffer_options.go

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

models/tune_buffer_options_compare_test.go

Lines changed: 4 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

models/tune_lua_options.go

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

models/tune_lua_options_compare_test.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)